mirror of
https://github.com/microsoft/qlib.git
synced 2026-07-12 15:26:54 +08:00
add multi-freq example
This commit is contained in:
9
examples/benchmarks/LightGBM/features_sample.py
Normal file
9
examples/benchmarks/LightGBM/features_sample.py
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
import datetime
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
|
||||||
|
def resample_feature(df: pd.DataFrame) -> pd.DataFrame:
|
||||||
|
df = df.droplevel(level="instrument")
|
||||||
|
df = df.loc[df.index.time == datetime.time(13, 1)]
|
||||||
|
df.index = df.index.normalize()
|
||||||
|
return df
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
qlib_init:
|
||||||
|
provider_uri: "~/.qlib/qlib_data/cn_data"
|
||||||
|
backend_freq_config:
|
||||||
|
day: "~/.qlib/qlib_data/cn_data"
|
||||||
|
1min: "~/.qlib/qlib_data/cn_data_1min"
|
||||||
|
region: cn
|
||||||
|
market: &market csi300
|
||||||
|
benchmark: &benchmark SH000300
|
||||||
|
data_handler_config: &data_handler_config
|
||||||
|
start_time: 2008-01-01
|
||||||
|
# 1min closing time is 15:00:00
|
||||||
|
end_time: "2020-08-01 15:00:00"
|
||||||
|
fit_start_time: 2008-01-01
|
||||||
|
fit_end_time: 2014-12-31
|
||||||
|
instruments: *market
|
||||||
|
freq:
|
||||||
|
label: day
|
||||||
|
feature: 1min
|
||||||
|
# with label as reference
|
||||||
|
sample_benchmark: label
|
||||||
|
sample_config:
|
||||||
|
# using pandas.DataFrame.resample
|
||||||
|
feature: resample("1d", level="datetime").last()
|
||||||
|
# or
|
||||||
|
# using custom function, df.groupby(level="instrument").apply(<user func>)
|
||||||
|
# feature:
|
||||||
|
# module_path: features_sample.py
|
||||||
|
# func: resample_feature
|
||||||
|
port_analysis_config: &port_analysis_config
|
||||||
|
strategy:
|
||||||
|
class: TopkDropoutStrategy
|
||||||
|
module_path: qlib.contrib.strategy.strategy
|
||||||
|
kwargs:
|
||||||
|
topk: 50
|
||||||
|
n_drop: 5
|
||||||
|
backtest:
|
||||||
|
verbose: False
|
||||||
|
limit_threshold: 0.095
|
||||||
|
account: 100000000
|
||||||
|
benchmark: *benchmark
|
||||||
|
deal_price: close
|
||||||
|
open_cost: 0.0005
|
||||||
|
close_cost: 0.0015
|
||||||
|
min_cost: 5
|
||||||
|
task:
|
||||||
|
model:
|
||||||
|
class: LGBModel
|
||||||
|
module_path: qlib.contrib.model.gbdt
|
||||||
|
kwargs:
|
||||||
|
loss: mse
|
||||||
|
colsample_bytree: 0.8879
|
||||||
|
learning_rate: 0.2
|
||||||
|
subsample: 0.8789
|
||||||
|
lambda_l1: 205.6999
|
||||||
|
lambda_l2: 580.9768
|
||||||
|
max_depth: 8
|
||||||
|
num_leaves: 210
|
||||||
|
num_threads: 20
|
||||||
|
dataset:
|
||||||
|
class: DatasetH
|
||||||
|
module_path: qlib.data.dataset
|
||||||
|
kwargs:
|
||||||
|
handler:
|
||||||
|
class: Alpha158
|
||||||
|
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: {}
|
||||||
|
- 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
|
||||||
Reference in New Issue
Block a user