`snapshot` writes each tracked model's forecast quantiles at the seven backtest horizons from the latest price to data/forecasts/<origin>.csv. It refuses stale data (older than two days) and duplicate dates, so snapshots can't be reconstructed after the fact; committing them dates them. `forward` scores every recorded forecast whose target date has passed, reusing the backtest's scoring (now factored out as evaluate.score). Tracked: random_walk, drift_rw, cycle, powerlaw, plus powerlaw_ou, powerlaw_ou_param and cycle_on_powerlaw, which development data couldn't settle. `just weekly` runs update, snapshot and forward. First snapshot: 2026-09-23 (BTC $84.4K). The first outcomes are due 2026-10-23.
50 lines
1.1 KiB
Makefile
50 lines
1.1 KiB
Makefile
# List recipes
|
|
default:
|
|
@just --list
|
|
|
|
# Fetch new daily prices from Coinbase
|
|
update:
|
|
python -m btcmodel update
|
|
|
|
# Score models on development data (outcomes up to the dev cutoff)
|
|
backtest *args:
|
|
python -m btcmodel {{ args }} backtest
|
|
|
|
# Score models on held-out outcomes; run sparingly, never while tuning
|
|
holdout *args:
|
|
python -m btcmodel {{ args }} backtest --holdout
|
|
|
|
# Forecast from the latest price
|
|
forecast *args:
|
|
python -m btcmodel {{ args }} forecast
|
|
|
|
test:
|
|
pytest -q
|
|
|
|
fmt:
|
|
ruff format .
|
|
ruff check --fix --select I .
|
|
nix fmt flake.nix
|
|
|
|
lint:
|
|
ruff check .
|
|
ruff format --check .
|
|
|
|
clean:
|
|
rm -rf output
|
|
|
|
# Run A/B experiments on development data (default: all)
|
|
ab *names:
|
|
python -m btcmodel ab {{ names }}
|
|
|
|
# Record tracked models' forecasts for the forward test (commit the new file)
|
|
snapshot:
|
|
python -m btcmodel snapshot
|
|
|
|
# Score recorded forecasts whose target dates have passed
|
|
forward:
|
|
python -m btcmodel forward
|
|
|
|
# The weekly routine: new prices, a new snapshot, and scores so far
|
|
weekly: update snapshot forward
|