IGMTF Alpha360 Configuration for CSI 300 Forecasting
Summary
This configuration defines a Qlib experiment that trains an IGMTF model on Alpha360 features for CSI 300 stocks. It uses historical data from 2008 through 2020, with training through 2014, validation in 2015–2016, and a held-out test period beginning in 2017. Features receive robust cross-sectional normalization and missing-value filling; labels are cross-sectionally rank normalized. The target is based on the ratio of two successive future closing prices.
For portfolio evaluation, the setup applies a top-50 strategy that replaces up to five holdings at a time, with a CSI 300 benchmark, closing-price execution assumptions, transaction costs, and a price-limit threshold. The model uses an LSTM base, mean squared error loss, and information coefficient as its evaluation metric. This is an experiment specification rather than a report: it provides no realized performance, robustness analysis, or evidence that the signal remains profitable after costs. Results also depend on the chosen data, model implementation, and execution assumptions.
Key ideas
- The experiment uses Alpha360 features for CSI 300 stocks and predicts a short-horizon closing-price return.
- Training, validation, and test periods are separated across the 2008–2020 dataset.
- Feature normalization and missing-value handling are configured before model training.
- Portfolio analysis uses a top-50 dropout strategy with transaction costs and a CSI 300 benchmark.
- The configuration specifies a research workflow but reports no performance results.
Tags
Full text
# workflow_config_igmtf_Alpha360.yaml
```yaml
qlib_init:
provider_uri: "~/.qlib/qlib_data/cn_data"
region: cn
market: &market csi300
benchmark: &benchmark SH000300
data_handler_config: &data_handler_config
start_time: 2008-01-01
end_time: 2020-08-01
fit_start_time: 2008-01-01
fit_end_time: 2014-12-31
instruments: *market
infer_processors:
- class: RobustZScoreNorm
kwargs:
fields_group: feature
clip_outlier: true
- class: Fillna
kwargs:
fields_group: feature
learn_processors:
- class: DropnaLabel
- class: CSRankNorm
kwargs:
fields_group: label
label: ["Ref($close, -2) / Ref($close, -1) - 1"]
port_analysis_config: &port_analysis_config
strategy:
class: TopkDropoutStrategy
module_path: qlib.contrib.strategy
kwargs:
signal: <PRED>
topk: 50
n_drop: 5
backtest:
start_time: 2017-01-01
end_time: 2020-08-01
account: 100000000
benchmark: *benchmark
exchange_kwargs:
limit_threshold: 0.095
deal_price: close
open_cost: 0.0005
close_cost: 0.0015
min_cost: 5
task:
model:
class: IGMTF
module_path: qlib.contrib.model.pytorch_igmtf
kwargs:
d_feat: 6
hidden_size: 64
num_layers: 2
dropout: 0
n_epochs: 200
lr: 1e-4
early_stop: 20
metric: ic
loss: mse
base_model: LSTM
model_path: "benchmarks/LSTM/model_lstm_csi300.pkl"
GPU: 0
dataset:
class: DatasetH
module_path: qlib.data.dataset
kwargs:
handler:
class: Alpha360
module_path: qlib.contrib.data.handler
kwargs: *data_handler_config
segments:
train: [2008-01-01, 2014-12-31]
valid: [2015-01-01, 2016-12-31]
test: [2017-01-01, 2020-08-01]
record:
- class: SignalRecord
module_path: qlib.workflow.record_temp
kwargs:
model: <MODEL>
dataset: <DATASET>
- class: SigAnaRecord
module_path: qlib.workflow.record_temp
kwargs:
ana_long_short: False
ann_scaler: 252
- class: PortAnaRecord
module_path: qlib.workflow.record_temp
kwargs:
config: *port_analysis_config
```Shown in full with attribution under the source's licence. Licence: MIT
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.