Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b5eb4c2212 | ||
|
|
f9d1fe66f6 |
+12
-7
@@ -1,22 +1,27 @@
|
||||
# TradeAC custom-qlib-code snapshot (auto-generated)
|
||||
# parent repo HEAD : HEAD
|
||||
unknown
|
||||
# parent repo date : unknown
|
||||
# copied paths:
|
||||
# parent repo HEAD : f9d1fe66f6e4f8ace0d3d774e23f1c79def9bae0
|
||||
# tac-qlib/tac_qlib/contrib
|
||||
# tac-qlib/tac_qlib/data
|
||||
# per-file hashes (git hash-object):
|
||||
1b6298c4a5652f2e863cbdc385a1014a570fcd59 tac-qlib/tac_qlib/contrib/__init__.py
|
||||
b8112569f9b2537c45b6535e1a505a207878d322 tac-qlib/tac_qlib/contrib/__pycache__/__init__.cpython-312.pyc
|
||||
c76a9f17f680e74eea766eff27f7624359749ed6 tac-qlib/tac_qlib/contrib/data/__init__.py
|
||||
8d5333ebd2b44165c50cba639ca2d4ac3fc7cfec tac-qlib/tac_qlib/contrib/data/__pycache__/__init__.cpython-312.pyc
|
||||
18cb37c0354184c49fa2e598396d7df0634cce0f tac-qlib/tac_qlib/contrib/data/__pycache__/handler.cpython-312.pyc
|
||||
871ff1e163c29261f140c3f53d42a41e6504c779 tac-qlib/tac_qlib/contrib/data/handler.py
|
||||
b151d139a0dcde87d74b21e7c4b729176ba5c39b tac-qlib/tac_qlib/contrib/model/__init__.py
|
||||
ab958203f33a99d12c7d923b6efb435189231666 tac-qlib/tac_qlib/contrib/model/__pycache__/__init__.cpython-312.pyc
|
||||
9dc36de7e343073b7d511349ee5aede086c38f94 tac-qlib/tac_qlib/contrib/model/__pycache__/rank_ensemble.cpython-312.pyc
|
||||
9f9014ddd9bce37490061312d51e8e6fe540fec4 tac-qlib/tac_qlib/contrib/model/__pycache__/rank_gbdt.cpython-312.pyc
|
||||
d3f051f3a8650c42fedc7b367b966f7c74fb5789 tac-qlib/tac_qlib/contrib/model/rank_ensemble.py
|
||||
ccfe7d554989aa7f3e5a2128ae663e51b2207149 tac-qlib/tac_qlib/contrib/model/rank_gbdt.py
|
||||
4afcf9058231111c412925f4c4b84e81d656db87 tac-qlib/tac_qlib/contrib/strategy/__init__.py
|
||||
74e5ecbbbb20bb71fd5cd083383de4ce88476712 tac-qlib/tac_qlib/contrib/strategy/__pycache__/__init__.cpython-312.pyc
|
||||
afaf562aeaa12cebc8529cd916153252e7e3c38a tac-qlib/tac_qlib/contrib/strategy/__pycache__/optimal_stop.cpython-312.pyc
|
||||
79aaad9e39fcc740a773f4f63c512ce1086cfde0 tac-qlib/tac_qlib/contrib/strategy/optimal_stop.py
|
||||
92e6e90eb0cd0a25142034560f27adb6b705b1a8 tac-qlib/tac_qlib/data/__init__.py
|
||||
6d5b9cca6970261fed1f633f6b588ec3e2b399bb tac-qlib/tac_qlib/data/__pycache__/__init__.cpython-312.pyc
|
||||
ba4f5d1741728ad1e364e537c7b50488e9112b9f tac-qlib/tac_qlib/data/__pycache__/config.cpython-312.pyc
|
||||
608c88f0f45378b170bddb5b301cb32fad9abb35 tac-qlib/tac_qlib/data/__pycache__/providers.cpython-312.pyc
|
||||
0ed1ead6c1314a3f25784d453e54a15a8a04baaa tac-qlib/tac_qlib/data/__pycache__/__init__.cpython-312.pyc
|
||||
9609782800944c45b78bb58eaa7b51ba1b7f8f43 tac-qlib/tac_qlib/data/__pycache__/config.cpython-312.pyc
|
||||
a85628d71d12cfe5b18b1c884c5d829c89594579 tac-qlib/tac_qlib/data/__pycache__/providers.cpython-312.pyc
|
||||
686d36f6d101c547491ca866aa143aa542e17518 tac-qlib/tac_qlib/data/config.py
|
||||
d9f839be30026f337754a3f015425a8efdbe8e2a tac-qlib/tac_qlib/data/providers.py
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,20 @@
|
||||
# exp/10 sp5d-moment-features
|
||||
|
||||
Variant C: generic-only 19 + 16 new moment/volatility families (skew, kurt,
|
||||
DSV+ratios, max_up/down, rv_ac1, rv_cv_22, sig lag-5). 35 sp_* fields, ou/hmm excluded.
|
||||
|
||||
Run a3f7d1d40c3d4b839314fcf5b40f9b08 (tac-rd-moments / exp 12) — FINISHED.
|
||||
|
||||
## Result: NEGATIVE (regression vs generic-only baseline)
|
||||
|
||||
| Metric | generic-only 19 (run 7b1e797) | +moments 35 (run a3f7d1d) |
|
||||
|---|---|---|
|
||||
| Rank IC | 0.0635 | 0.0466 |
|
||||
| Rank ICIR | 0.276 | 0.183 |
|
||||
| L-S Sharpe | 2.55 | 1.44 |
|
||||
| net excess (cost) | +3.1% IR 0.28 | -16.2% IR -1.57 |
|
||||
| MDD | -7.3% | -11.1% |
|
||||
|
||||
Same failure mode as ou/hmm in exp 9: adding cross-sectional moment features
|
||||
to the 50-name panel degrades the rank signal. Generic-only 19 remains the
|
||||
best configuration. No further moment-family variants planned.
|
||||
@@ -1,24 +1,22 @@
|
||||
# -----------------------------------------------------------------------------
|
||||
# ISOLATION: multi-seed RankIC ensemble, ablate-B generic-only feature set.
|
||||
#
|
||||
# Isolates the ensemble effect on the SP-5d rank signal. Same panel, segments,
|
||||
# history (full backfilled 2016+) and feature set as the exp-9 ablate-B winner
|
||||
# (generic-only sp_* families: jump,har,trend,hurst,signature), but replaces the
|
||||
# single RankICLGBModel with a 5-seed RankICEnsembleLGBModel (42,7,2026,99,123)
|
||||
# that averages per-day predictions.
|
||||
#
|
||||
# Differs from exp-15 (tac-rd-rank-ensemble, mlflow exp 15) ONLY by dropping the
|
||||
# TA subset (rsi_14,roc_10,macd_hist,willr_14,atr_14) and the inter-asset xr_*
|
||||
# features, so any change vs exp-15 is attributable to the feature set alone,
|
||||
# and any change vs exp-9 is attributable to the ensemble + full history alone.
|
||||
# VARIANT C (generic + moments): keeps the winning generic-only 19-field set
|
||||
# (jump,har,trend,hurst,signature) and adds the NEW generic moment families the
|
||||
# engine now exposes:
|
||||
# - realized skewness / kurtosis (sp_rskew_5, sp_rskew_22, sp_rkurt_5, sp_rkurt_22)
|
||||
# - downside semi-variance + ratios (sp_dsv_1/5/22, sp_dsv_ratio_1/5/22)
|
||||
# - signed max moves (sp_max_up, sp_max_down)
|
||||
# - RV autocorr / vol-of-vol (sp_rv_ac1, sp_rv_cv_22)
|
||||
# - longer-lag signature terms (sp_sig_level2_*_5)
|
||||
# Drops the model-specific ou/hmm families (they scored high in importance but
|
||||
# hurt the rank dimension in the all-24 run). Same panel/model as baseline.
|
||||
#
|
||||
# Run:
|
||||
# rd_run_workflow config_path=experiments/workflows/exp12_isolation_ensemble.yaml \
|
||||
# experiment_name=tac-rd-rank-ensemble-isolated
|
||||
# rd_run_workflow config_path=experiments/workflows/ablate_generic_moments.yaml \
|
||||
# experiment_name=tac-rd-moments
|
||||
# -----------------------------------------------------------------------------
|
||||
{%- set LAKE = TAC_LAKE_DIR %}
|
||||
{%- set UNIVERSE = "SPY,QQQ,DIA,IWM,MDY,VTI,VOO,VEA,VWO,VT,EFA,EEM,TLT,IEF,SHY,AGG,BND,LQD,HYG,JNK,EMB,GLD,SLV,USO,UNG,DBA,DBC,XLK,XLF,XLE,XLV,XLI,XLY,XLP,XLU,XLB,XLRE,ARKK,SMH,SOXX,IBB,XBI,ITA,XAR,ICLN,TAN,FDN,IGV,ESPO,REM" %}
|
||||
{%- set SP_FIELDS = "sp_ret,sp_jump_ratio,sp_jump_flag,sp_jump_tail,sp_max_move,sp_rv1,sp_rv5,sp_rv22,sp_vol_ratio_5_22,sp_vol_ratio_1_22,sp_trend_slope_5,sp_trend_slope_20,sp_trend_slope_60,sp_logp,sp_hurst_exponent,sp_sig_level1_lead,sp_sig_level1_lag,sp_sig_level2_lead_lag,sp_sig_level2_lag_lead" %}
|
||||
{%- set SP_FIELDS = "sp_ret,sp_jump_ratio,sp_jump_flag,sp_jump_tail,sp_max_move,sp_max_up,sp_max_down,sp_rv1,sp_rv5,sp_rv22,sp_vol_ratio_5_22,sp_vol_ratio_1_22,sp_rv_ac1,sp_rv_cv_22,sp_trend_slope_5,sp_trend_slope_20,sp_trend_slope_60,sp_logp,sp_hurst_exponent,sp_sig_level1_lead,sp_sig_level1_lag,sp_sig_level2_lead_lag,sp_sig_level2_lag_lead,sp_sig_level2_lead_lag_5,sp_sig_level2_lag_lead_5,sp_rskew_5,sp_rskew_22,sp_rkurt_5,sp_rkurt_22,sp_dsv_1,sp_dsv_5,sp_dsv_22,sp_dsv_ratio_1,sp_dsv_ratio_5,sp_dsv_ratio_22" %}
|
||||
|
||||
qlib_init:
|
||||
provider_uri: "{{ LAKE }}"
|
||||
@@ -47,13 +45,13 @@ qlib_init:
|
||||
class: MLflowExpManager
|
||||
module_path: qlib.workflow.expm
|
||||
kwargs:
|
||||
uri: "sqlite:///mlruns.db"
|
||||
default_exp_name: "tac-rd-rank-ensemble-isolated"
|
||||
uri: "sqlite:///{{ LAKE }}/mlruns.db"
|
||||
default_exp_name: "tac-rd-moments"
|
||||
|
||||
task:
|
||||
model:
|
||||
class: RankICEnsembleLGBModel
|
||||
module_path: tac_qlib.contrib.model.rank_ensemble
|
||||
class: RankICLGBModel
|
||||
module_path: tac_qlib.contrib.model.rank_gbdt
|
||||
kwargs:
|
||||
loss: mse
|
||||
learning_rate: 0.02
|
||||
@@ -68,7 +66,7 @@ task:
|
||||
subsample_freq: 1
|
||||
reg_alpha: 0.1
|
||||
reg_lambda: 1.0
|
||||
seeds: "42,7,2026,99,123"
|
||||
seed: 42
|
||||
|
||||
dataset:
|
||||
class: DatasetH
|
||||
@@ -80,8 +78,8 @@ task:
|
||||
kwargs:
|
||||
instruments: "{{ UNIVERSE }}"
|
||||
start_time: 2015-01-03
|
||||
end_time: 2026-08-14
|
||||
fit_start_time: 2016-01-04
|
||||
end_time: 2026-08-10
|
||||
fit_start_time: 2015-01-03
|
||||
fit_end_time: 2025-09-01
|
||||
freq: day
|
||||
lake_root: "{{ LAKE }}"
|
||||
@@ -100,7 +98,7 @@ task:
|
||||
- class: Fillna
|
||||
kwargs: {}
|
||||
segments:
|
||||
train: [2016-01-04, 2025-09-01]
|
||||
train: [2015-01-03, 2025-09-01]
|
||||
valid: [2025-09-03, 2026-01-03]
|
||||
test: [2026-01-04, 2026-08-10]
|
||||
|
||||
Reference in New Issue
Block a user