Repository Public
1# vol_breakout_perp / 123**Hypothesis.** A move that is large relative to the volatility that preceded it is information being absorbed, not4noise: after a 24-hour move of more than two "normal" 24-hour standard deviations, the price continues in the same5direction for the next two days more often than it reverses.67**Mechanism.** At bar t, `move = log(close[t] / close[t − 24])` and `sigma` = standard deviation of the 168 hourly8log-returns that end where the move starts, times √24. A breakout is `|move| > 2 · sigma`. The position is the9side of the most recent breakout among the last 48 bars (long after an upward breakout, short after a downward10one), `gross / N` = 25 % of equity per asset, and flat when no breakout occurred in the last 48 bars. A new11breakout in the opposite direction flips the position. The volatility window deliberately excludes the move12itself, otherwise a large move would raise its own threshold.1314**What would refute it.** A test Sharpe ratio indistinguishable from zero, or from `ts_momentum_perp/1` (then the15volatility filter adds nothing to plain momentum). The opposite hypothesis is `zscore_reversion_perp/1`: both16cannot be right at the same horizon, and if neither is distinguishable from zero the honest conclusion is that17large hourly-scale moves carry no usable information after costs. Entering after the move means buying high and18selling low when the move was a liquidation cascade that reverts.1920Parameters were written before any backtest on the Hyperliquid data and are not tuned on the test split.21