Files
bitcoin-model/justfile
T
sam 67d016fe25 Forward test: record forecasts before their outcomes exist.
`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.
2026-09-24 03:08:30 -07:00

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