From 71211552910ee2ebaed853696e9ad8d89641c3de Mon Sep 17 00:00:00 2001 From: zhaoli Date: Sun, 16 Aug 2026 14:55:33 +0000 Subject: [PATCH] exp 17: add short 3-month lake workflow yaml --- workflows/exp17-short-lake/workflow.yaml | 96 ++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 workflows/exp17-short-lake/workflow.yaml diff --git a/workflows/exp17-short-lake/workflow.yaml b/workflows/exp17-short-lake/workflow.yaml new file mode 100644 index 0000000..b8ceaaa --- /dev/null +++ b/workflows/exp17-short-lake/workflow.yaml @@ -0,0 +1,96 @@ +# ----------------------------------------------------------------------------- +# exp17 — short 3-month lake workflow (trace id 17) +# train 2026-05-01..06-30 / valid 07-01..07-15 / test 07-16..08-14 +# 20-ETF universe, 5d forward label, LGBModel mse, TopkDropout topk=3/n_drop=1 +# ----------------------------------------------------------------------------- +{%- set LAKE = TAC_LAKE_DIR %} + +qlib_init: + provider_uri: "{{ LAKE }}" + region: us + expression_cache: null + dataset_cache: null + + calendar_provider: + class: tac_qlib.data.providers.LakeCalendarProvider + kwargs: { lake_root: "{{ LAKE }}", market: US } + instrument_provider: + class: tac_qlib.data.providers.LakeInstrumentProvider + kwargs: { lake_root: "{{ LAKE }}", market: US, markets: {} } + feature_provider: + class: tac_qlib.data.providers.LakeFeatureProvider + kwargs: { lake_root: "{{ LAKE }}", market: US } + + exp_manager: + class: MLflowExpManager + module_path: qlib.workflow.expm + kwargs: { uri: "sqlite:///mlruns.db", default_exp_name: "tac-rd-short-lake" } + +task: + model: + class: LGBModel + module_path: qlib.contrib.model.gbdt + kwargs: + loss: mse + learning_rate: 0.05 + num_leaves: 15 + n_estimators: 200 + colsample_bytree: 0.8 + subsample: 0.8 + subsample_freq: 1 + reg_alpha: 0.01 + reg_lambda: 0.01 + + dataset: + class: DatasetH + module_path: qlib.data.dataset + kwargs: + handler: + class: TACHandler + module_path: tac_qlib.contrib.data.handler + kwargs: + instruments: SPY,QQQ,IWM,EEM,TLT,GLD,USO,SMH,XLF,XLE,XLY,XLK,XLV,XBI,IBB,KWEB,FXI,EWJ,VNQ,GDX + start_time: 2026-05-01 + end_time: 2026-08-14 + fit_start_time: 2026-05-01 + fit_end_time: 2026-06-30 + freq: day + lake_root: "{{ LAKE }}" + market: US + label: "Ref($close,-6)/Ref($close,-1)-1" + segments: + train: [2026-05-01, 2026-06-30] + valid: [2026-07-01, 2026-07-15] + test: [2026-07-16, 2026-08-14] + + record: + - { class: SignalRecord, module_path: qlib.workflow.record_temp, kwargs: {} } + - class: SigAnaRecord + module_path: qlib.workflow.record_temp + kwargs: { ana_long_short: true, ann_scaler: 252 } + - class: PortAnaRecord + module_path: qlib.workflow.record_temp + kwargs: + config: + strategy: + class: TopkDropoutStrategy + module_path: qlib.contrib.strategy + kwargs: + signal: "" + topk: 3 + n_drop: 1 + only_tradable: true + risk_degree: 0.95 + backtest: + start_time: 2026-07-16 + end_time: 2026-08-14 + account: 1000000 + benchmark: SPY + exchange_kwargs: + codes: SPY,QQQ,IWM,EEM,TLT,GLD,USO,SMH,XLF,XLE,XLY,XLK,XLV,XBI,IBB,KWEB,FXI,EWJ,VNQ,GDX + deal_price: $close + freq: day + open_cost: 0.0005 + close_cost: 0.0015 + min_cost: 5.0 + risk_analysis_freq: 1d