Sam Fredrickson
1c6d5e9917
All checks were successful
Build & Test / Main (push) Successful in 1m28s
Instead of pre-allocating the grid and using tricky indexing to fill in the cells, just fully regenerate it. But do it columnwise first, and then transpose it. |
||
---|---|---|
.gitea/workflows | ||
.vscode | ||
bitcoinity | ||
coindesk | ||
config | ||
moon | ||
tui | ||
.gitignore | ||
.goreleaser.yaml | ||
example.json | ||
go.mod | ||
go.sum | ||
LICENSE | ||
moonmath.go | ||
README.md | ||
screenshot.png |
moonmath
Bullshit BTC Price Projections, Now in Your CLI!
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.
Configuration
By default, the program will use Bitcoin along with various goals and bases
of comparison. With the --config-file
flag, however, one can specify a TOML
file that overrides these defaults.
See this one for Ethereum for an example.
"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
- Add more default configurations for various assets.
- 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.