| { | |
| "bar_feature_names": [ | |
| "open_rel", | |
| "high_rel", | |
| "low_rel", | |
| "close_rel", | |
| "volume_z_30m", | |
| "amount_z_30m" | |
| ], | |
| "feature_names": [ | |
| "ret_5m", | |
| "ret_15m", | |
| "ret_30m", | |
| "rsi_5m", | |
| "rsi_15m", | |
| "rsi_30m", | |
| "vol_std_5m", | |
| "vol_std_15m", | |
| "vol_std_30m", | |
| "ma_dev_5m", | |
| "ma_dev_15m", | |
| "ma_dev_30m", | |
| "boll_z_5m", | |
| "boll_z_15m", | |
| "boll_z_30m", | |
| "macd_5m_15m", | |
| "macd_15m_30m", | |
| "cross_section_ret_rank_5m", | |
| "cross_section_vol_rank_5m", | |
| "cross_section_ret_rank_15m", | |
| "cross_section_vol_rank_15m", | |
| "cross_section_ret_rank_30m", | |
| "cross_section_vol_rank_30m", | |
| "market_ret_5m", | |
| "market_vol_5m", | |
| "market_ret_15m", | |
| "market_vol_15m", | |
| "market_ret_30m", | |
| "market_vol_30m", | |
| "hour_sin", | |
| "hour_cos", | |
| "dayofweek_sin", | |
| "dayofweek_cos" | |
| ], | |
| "feature_windows_minutes": [ | |
| 5, | |
| 15, | |
| 30 | |
| ], | |
| "bar_size": "1m", | |
| "normalization": { | |
| "stats_file": "normalization_stats.npz", | |
| "bar": { | |
| "mean_key": "bar_mean", | |
| "std_key": "bar_std" | |
| }, | |
| "features": { | |
| "mean_key": "feature_mean", | |
| "std_key": "feature_std" | |
| }, | |
| "fit_scope": "train split only" | |
| }, | |
| "leakage_constraints": [ | |
| "Use only bars with timestamp <= decision timestamp t.", | |
| "All rolling, EMA and cross-section rank features must be computed causally.", | |
| "Do not refit normalization stats online or on validation/test/live data.", | |
| "Do not use future volume, future slippage, centered rolling windows or future universe membership." | |
| ] | |
| } | |