Go to file
2024-03-19 21:44:11 -07:00
.gitea/workflows Add starting price to table; add Gitea workflows. 2024-03-17 19:01:59 -07:00
.vscode Initial configuration support. 2024-03-19 21:44:11 -07:00
bitcoinity Fix module name. 2024-03-19 14:29:37 -07:00
coindesk Initial configuration support. 2024-03-19 21:44:11 -07:00
config Initial configuration support. 2024-03-19 21:44:11 -07:00
moon Initial configuration support. 2024-03-19 21:44:11 -07:00
tui Initial configuration support. 2024-03-19 21:44:11 -07:00
.gitignore Don't forget about the Windows peeps. 2024-03-17 19:12:39 -07:00
.goreleaser.yaml Don't forget about the Windows peeps. 2024-03-17 19:12:39 -07:00
example.json Initial public commit. 2024-03-17 02:10:05 -07:00
go.mod Initial configuration support. 2024-03-19 21:44:11 -07:00
go.sum Initial configuration support. 2024-03-19 21:44:11 -07:00
LICENSE Initial public commit. 2024-03-17 02:10:05 -07:00
moonmath.go Initial configuration support. 2024-03-19 21:44:11 -07:00
README.md Initial public commit. 2024-03-17 02:10:05 -07:00
screenshot.png Initial public commit. 2024-03-17 02:10:05 -07:00

moonmath

Bullshit BTC Price Projections, Now in Your CLI!

screenshot

This is a re-implementation of Moon Math that runs locally as a CLI program. It's written in Go using the Bubble Tea library, and uses Coindesk to source price data.

"Theory"

Given a pair of quotes taken at the start and end of some period,

 (t_s, p_s), (t_e, p_e) 

we can derive the total gain for that period, and its length in days.

 g = p_e / p_s 
 d = t_e - t_s 

Combining these, we can calculate the compounding daily periodic rate (CDPR).

 r = g^{1/d} 

We can use this rate to project the price p_f at some x days in the future.

 p_f = p_e r^x 

If we instead make p_f a target price, we can solve this equation for x, telling us how many days it will take to reach that target.

 x = {{log(p_f) - log(p_e)} \over log(r)} 

Future Improvements

  • Support other assets available from Coindesk.
  • Configurable projection milestones.
  • Allow projection by date, e.g. use the CDPR to calculate what the price would be on a particular date.
  • Log errors to a file.