# 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
