从学习投研流程的角度学习Qlib

许多同学只是把Qlib当做一个简单的工具来学习。其实Qlib隐含了一套正规的投研流程,从投研流程的视角去学习Qlib,则不仅能加深对Qlib的理解,而且能够掌握正确的投研流程,哪怕以后不使用Qlib而是使用其他系统了,这套流程还是适用的。以下,我们简单勾勒一下Qlib中的投研流程。

1. 基本特征存储

如ohlcv以及其他外部特征如pe等,存为qlib内置格式。

2. 因子与标签计算与过滤加载

3. 因子与标签预处理

生成df数据帧_infer,用于提供测试集数据,生成_learn,用于提供训练和验证集数据。

4. 训练

5. 预测

6. 回测

以上是主要流程。另外两个子流程因子评估,组合权重优化也可以在Qlib完成。

初学者可能更加关注步骤4,5,6。实际上最费时、最重要的工作是步骤2,3,即如何设计因子与标签,应该对它们做怎样的预处理,这种工作做好了,后面的训练预测只是一个模型调用而已。

01:30

### Qlib 深度学习模型使用教程和案例 #### 1. 数据准备与预处理 为了有效利用Qlib进行深度学习模型的开发,首先需要准备好适当的数据格式。Qlib支持多种数据源输入方式,但对于高效能运算特别推荐使用其专有的`bin`文件格式[^4]。 ```python import qlib from qlib.constant import REG_CN provider_uri = "~/.qlib/qlib_data/cn_data" qlib.init(provider_uri=provider_uri, region=REG_CN) # 下载并转换CSV至BIN格式 from qlib.tests.data import GetData aa = GetData() aa.csv_data_cn(target_dir=provider_uri) ``` #### 2. 构建深度学习模型 Qlib不仅限于传统量化分析工具的功能,在深度学习领域同样表现出色。通过集成先进的神经网络架构,能够更精准捕捉市场动态变化特征。对于希望尝试构建自定义深度学习策略的究者来说,可以从官方文档获取详细的API指南以及丰富的实例代码[^1]。 例如,创建一个简单的LSTM模型来进行股票价格预测: ```python from torch.nn import LSTM, Linear from torch.optim import Adam from qlib.contrib.model.pytorch_base import PyTorchBaseModel class SimpleLSTM(PyTorchBaseModel): def __init__(self, input_size=10, hidden_layer_size=100, output_size=1): super().__init__() self.lstm = LSTM(input_size=input_size, hidden_size=hidden_layer_size) self.linear = Linear(hidden_layer_size, output_size) def forward(self, x): lstm_out, _ = self.lstm(x.view(len(x), 1, -1)) predictions = self.linear(lstm_out.view(len(x), -1)) return predictions[-1] model = SimpleLSTM() optimizer = Adam(model.parameters(), lr=0.01) ``` #### 3. 训练与评估 一旦完成了模型的设计工作之后,则可以通过调用相应的方法完成训练流程,并借助内置函数轻松实现性能评测。值得注意的是,Qlib还引入了元控制器的概念,其中包含了用于增强基础预测效果的各种机制,比如MetaGuideModel类就是一个很好的例子[^3]。 ```python from qlib.workflow.record_temp import SignalRecord from qlib.backtest import Backtest as BkTest from datetime import timedelta train_start_date = "2018-01-01" train_end_date = "2020-01-01" bk_tester = BkTest( model=model, start_time=train_start_date, end_time=train_end_date, freq="day", account=1e6, benchmark="SH000905", # 中证500指数作为基准比较对象 signal_record=SignalRecord(), adjust_factor=None, max_loss=-timedelta(days=7), min_profit=timedelta(days=7), ) results = bk_tester.run_backtest() print(results.summary()) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扫地僧量化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值