qlib量化投资平台的100天计划

小时候,辩论题目让我们讨论“知易行难”,还是“知难行易”。

既然是辩题,正反双方都容易能找到不同的角度。

事实上,“知”也不易,“行”更不易。

但“行”更难,今天的我可能觉得不必讨论。

认知提升当然不易,有些人一辈子都待在自己思维认知的圈层没有出来。

这里说的“相对容易”,是因为认知是“一瞬间”完成的事情。

一下子你被击中了,想明白了,你就明白了。

记得那个几年前的那个冬日,陪爱人在北师大考试,考试需要上午下午持续一整天。

闲来无事,反复听李笑来的《财富自由之路》,有一集关于投资什么最重要,讲到时限,本金,收益率以及风险。

印象最深的部分就是本金和时限是外因,你的投资能力体现的是收益率,就是说无论是你100块,还是1000块,你都可以开始投资,体验整个投资的完整过程,因为我们的计算的是你的收益率。如果你能够获得合适的收益率,证明你的投资水平在成长,那么你可以投入更多的资金。

我学习金融是2010年的事情,也算半个科班出身,但一直没有行动。

那一瞬间突然被击中了,你的投资与本金无关,只看你的收益率。你怕风险,就投1万块也行,只是看你的收益率就好了。所以并不用担心资本市场到底有多么凶险,后来进去之后,发现我可以掌握好。

除了投资之外,绝大多数事情,都是“认知-行动-修正认知-行动”这样螺旋式迭代着前进的。而且认知完成,行动是需要持续好长一段时间才能看到结果,就算投资,你能不能克服情绪波动,克服人性的恐惧与贪婪都不好说,更何况很多事情就那么不了了之,直接就忘了。

纳瓦尔说这个时代,代码和媒体是普通人最好的杠杆,但要用好这个杠杆,产品化非常重要。你的兴趣,爱好,技能需要产品化才能变成杠杆

给自己定一个10-100天的计划——“基于qlib把一个AI量化投资平台建设起来”。

其中(今天至10月底):

一、qlib平台本身的熟练,分析代码结构是基础; 

二、其次是AI模型的特征工程、参数优化,工程化方面的东西; 

三、再次是产品化。

它需要变成一个产品,目前规划是有一gui的产品,可以类似果仁平台一样,选择时间,参数即可以直接回测看效果,做实验

很多人懂得很多道理过不好这一生的症结在于,永远没有行动,或者说行动永远没有结果,半个成品远远胜过一个半成品。更可怕的事情是持续行动持续放弃,持续开始。然后问上天为何如此不公——因为如果你躺平,倒可以心安理得接受没有结果——可是你如此努力,问题出在何方?出在不能专注与坚持,出在要一个有结果的努力!

01 qlib的代码

qlib的代码模块化很好,可读性很强,而且是ai导向的架构,所以我强烈推荐大家以此平台为核心,这是未来——与backtrader之类的传统框架相比,如果你读过backtrader的代码,你会知道里边元编程有多难理解。

qlib使用了很多参数,通过ymal和dict来传参,它做了多层的封装,这一点对于初学者有点不太容易理解,最好的方法,你读读它的代码。

源代码:examples/work_by_code.py

官方给出了一个入门级的完整案例:

model = init_instance_by_config(CSI300_GBDT_TASK["model"])
dataset = init_instance_by_config(CSI300_GBDT_TASK["dataset"])

init_instance_by_config就是通过传入dict类似的参数,把model和dataset初始化。dataset里也用同样的方法初始化了datahandler, dataloader等。

这里就完成了模型的初始化和数据集初始化(特征,标注,数据集划分)。

如下这一段对于传统回测的同学是最不好理解的,这是机器学习的范畴,使用了mlflow的“实验”的概念。

# 开始实验

with R.start(experiment_name="workflow"):

    #模型训练

R.log_params(**flatten_dict(CSI300_GBDT_TASK))
model.fit(dataset)
R.save_ozzbjects(**{"params.pkl": model})

# 预测
recorder = R.get_recorder()
sr = SignalRecord(model, dataset, recorder)
sr.generate()

# 信号生成
sar = SigAnaRecord(recorder)
sar.generate()

# 回测. If users want to use backtest based on their own prediction,
# please refer to https://qlib.readthedocs.io/en/latest/component/recorder.html#record-template.
par = PortAnaRecord(recorder, port_analysis_config, "day")

par.generate()

若不考虑使用mlflow的实验平台,我们有了model和dataset之后,常规也

需要做同件事:

model.fit(),

model.valid(),

model.predict(),

backtest()

使用数据集训练模型,保存下来,使用验证数据集,检验模型效率。然后模型

对输入数据进行预测得到pred_score,把pred_score交由策略及回测组件使用,

生成回测结果用于分析。

02 工作流

qlib把整体量化回测看作“实验”,总体是一个“工作流workflow”。

它还提供了一个qrun命令来整体执行整个流程,这个到了高阶我们再说。

1、数据加载与预处理,划分数据集

2、模型训练与推理,保存与加载

3、pred_score生成与回测

除了3里的回测是AI量化投资里独有的,前面的过程基本就是一个完整的

机器学习项目的必要过程。

为更好的理解qlib的工作流管理,强烈建议大家先使用mlflow做传统机器

学习项目练练手,然后再回来看qlib的实验管理会很好理解。

mlflow给机器学习提供了一个很好的实验管理的平台,还自带一个好看的ui.

另外,初学者把这个notebook自己走一遍,对qlib会有更细节的理解。

https://github.com/microsoft/qlib/blob/main/examples/tutorial/detailed_workflow.ipynb

小结:

一个好的开始,定一个小目标,坚持100天,有一个小成果。

但行好事,莫问前程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AI量化投资实验室

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

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

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

打赏作者

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

抵扣说明:

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

余额充值