- src/volatility.py: optional release-timing features (next release within
24h/6h, hours to next, hours since last), from the published calendar the
live price-range forecaster already uses. Off by default; serving computes
them so a model trained with --calendar can be deployed, while the live
model keeps selecting its own 33 columns.
- train_vae_transformer_artifacts.py: --calendar and --tag, so the experiment
never overwrites the live artifact, plus the persistence baseline on the
held-out rows in the metadata.
- Hybrid ablation of the price range (Transformer, VAE, self- vs
cross-attention news fusion) walk-forward against the live model.
- Jobs report and PCE added to the macro event study; the jobs report tested
as a calendar candidate for the price range (no gain, kept out).
- Trump Truth Social posts timed to the minute against 5-minute BTC bars.
- Side-by-side method diagram of the two live forecasts.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add two event studies: which global news moves Bitcoin
Topic study (fig8): 26,013 Bitcoin headlines tagged into twelve topics,
one burst of coverage counted as one event, hourly BTC traced 24h either
side against matched same-hour-of-week controls. No topic's excess after
its headline clears zero except exchange failures (+0.17 normal hours),
and that topic's excess BEFORE its headline is larger (+0.30): the news
reported the move. War +0.05, tariffs +0.05, both indistinguishable from
zero. A headline is written after its event, so this design cannot time
macro news; it is kept to show that.
Scheduled releases (fig9) remove the timing problem: the minute a Fed
decision or CPI report lands is fixed weeks ahead. Over 61 FOMC decisions
and 80 CPI reports the release hour runs at 2.0x and 2.2x the same hour in
other weeks (excess +1.31 [0.81, 1.84] and +1.54 [0.78, 2.41] normal
hours), with nothing beforehand (-0.16, -0.08). Direction is a coin flip:
57% and 54% of releases are followed by a rise.
CPI dates come from the archived release fil…