feat: proper Grid MM, Composite MM, Hurst/VPIN, Iceberg, A-S strategies
New strategies (strategies/nt/):
- GridMMNT: symmetric limit order grid around mid-price, captures spread from
oscillation. Simulates fills from candle high/low. Rebuilds grid every 20 bars.
- CompositeMMNT: weighted ensemble of OBI (30%) + A-S inventory skew (40%) +
Hurst/VPIN (30%). Votes: +1 long, -1 short, 0 neutral. Entry |score| > 0.5.
- IcebergNT: volume spike detection for whale accumulation. Dual-mode:
candle proxy (volume > avg*2.5, >= 3 consecutive same-direction) and
L2 wall detection (single level > avg*3). Exit on stop-loss/time/spike-fade.
Fixed strategies:
- Hurst/VPIN VBT: added proper VPIN proxy from candle volume (buy_vol when close
> open, sell_vol when close < open). 50-bar rolling VPIN window. Signal:
H>0.55 AND VPIN>0.25 AND |direction|>0.05. Exit: H<0.45 or direction flips.
- Hurst/VPIN paper trader: added HurstVPINLive integration (was missing entirely)
- A-S VBT: replaced placeholder spread filter with proper A-S simulation using
reservation price formula (mid - q*gamma*sigma^2*tau), inventory tracking
- A-S NT formula: fixed to standard: mid - q*gamma*sigma^2*tau (was scaled by
notional and gamma_scale improperly)
- Iceberg VBT: new volume spike detection replacing the old trend proxy
Registry: all 7 strategies now ✅ (pairs, hurst_vpin, as_mm, obi, grid_mm,
composite_mm, iceberg)
VBT backtest results (500 BTC 1h bars):
pairs: -2.81% 13 trades 38% win
hurst_vpin: -0.77% 1 trade (VPIN now active, very selective)
as_mm: -16.38% 73 trades 29% win
obi: -7.19% 15 trades 7% win
grid_mm: -4.79% 22 trades 33% win
iceberg: 0 trades (threshold strict for 1h BTC data)
This commit is contained in:
@@ -7,5 +7,9 @@ from strategies.nt.pairs_trading_nt import PairsTradingNT
|
||||
from strategies.nt.hurst_vpin_nt import HurstVPINNT
|
||||
from strategies.nt.as_mm_nt import ASMarketMakingNT
|
||||
from strategies.nt.obi_nt import OBINT
|
||||
from strategies.nt.grid_mm_nt import GridMMNT
|
||||
from strategies.nt.composite_mm_nt import CompositeMMNT
|
||||
from strategies.nt.iceberg_nt import IcebergNT
|
||||
|
||||
__all__ = ["PairsTradingNT", "HurstVPINNT", "ASMarketMakingNT", "OBINT"]
|
||||
__all__ = ["PairsTradingNT", "HurstVPINNT", "ASMarketMakingNT", "OBINT",
|
||||
"GridMMNT", "CompositeMMNT", "IcebergNT"]
|
||||
|
||||
Reference in New Issue
Block a user