§ 因子投资与机器学习策略
这门课面向的对象是专业的量化研究员、或者打算向这个方向转岗求职、或者尽管是其它职业,但决心以专业、严谨的态度探索量化研究的学习者。
学完这门课程并完全掌握其内容,你将具有熟练的因子分析能力、掌握领先的机器学习策略构建方法,成为有创新研究能力和比较竞争优势的量化研究员。
课程内容涵盖了因子挖掘、因子检验到构建机器学习模型的过程。如果要独立从事交易,还需要补充学习《量化 24 课》。
这一章及下一章是因子检验的基础。我们将结合大量的示例代码,介绍因子检验的基本原理与技术实现细节,为后面理解Alphalens因子分析框架打下坚实基础。
本章介绍了回归法、IC法和分层回溯法的原理及实现代码。这一章完成后,你已经可以自己实现一个简单的因子分析框架了。这对理解Alphalens的实现非常有帮助。
Alphalens将因子检验过程进行了高度的抽象,把我们在前面两章讲到的步骤封装成两个函数,而大量的定制则是通过参数来实现。我们将介绍Alphalens要求的输入数据格式、它是如何通过参数来控制分层、缺失值处理、远期回报计算等行为的。
通过这一章的学习,你将掌握Alphalens最基本的用法。
Alphalens的报告并非不言自明。比如,它没有告诉你Alpha和beta各是什么单位,bps单位又是多少;它更不会告诉你,什么样的Alpha是好的,什么样的Alpha则是好到不能相信;有一些报表,它的计算方式与你想像的、或者曾听说的不太一样。
为了准确地理解这些报告,我们使用了三种方式:1. 阅读、调试源码的方式。通过这种方式,我们发现bps是万分之一,定义在plotting.py这个文件中;2. 使用合成数据,这样我们理解了最好的因子理论上应该产生什么样的图表报告;3. 通过Github issues, Quantopian社区Archive的文档,从其它用户的问题中找到答案。
这将是现阶段全网惟一一个真正讲透了Alphalens的教程。
这一章我们将介绍如何排除Alphalens在使用中可能遇到的错误,既有程序性的,也有逻辑性的。我们还介绍了如何进行日线以上级别的因子分析。很多网上教程甚至都没意识到这里会存在问题,因为他们从来没有做过这个级别的分析。
我们还深入探讨了Alphalens的分层机制,包括如何处理因子值是离散值的情况。
使用Alphalens进行因子检验,就像做一场面试一样,你得尽可能暴露因子的潜能,然后才能评估它的好坏。这一章我们将介绍如何想尽办法把因子的潜能挖掘出来,同时,又不要受过拟合的欺骗。除了样本外检测之外,我们还会教你通过绘制参数高原来评估因子的过拟合程度。
可视化很重要。尤其是你的工作,需要与他人合作时。
Alpha101因子库是World Quant发表于2015年的一个因子库。其中有80%的因子是在世坤正式使用(发布时间)的。我们将介绍如何读懂Alpha101因子的公式,实现它的算子。
整个因子库的实现已经有较好的开源库,我们也将介绍。这会成为你的兵器库中的宝贝之一。
Alpha101因子多数是量价因子,由于可以想到的原因,它没有重复早已存在多年的经典技术因子,但这些因子仍然有它的Alpha存在。这一节我们会简单介绍下talib库,讲解技术指标的冷启动期 -- 可能是一个比较冷的知识,冷启动期不止是NaN,比如,RSI的冷启动期就比较长,是win参数的3倍。
Talib的技术指标很多,我们会每类介绍几个,重点介绍在新的技术条件下,如何翻新这些因子。以RSI为例,我们会讲intelli-RSI,Connor's RSI。这样你不仅得到了一些新因子,还提升了自己创新研究的能力。
即使是一些有经验的人,也可能是初次听说我们讲要介绍的一些因子。比如像Hilber Sine Wave,这可是在Trading View等平台上比较好卖的付费技术指标之一。
有一些小概率因子很容易做出来。也许正因为是这样的原因,它们没有名字,也没有上论文的机会。但是它们的Alpha真实存在。比如指数单日最大跌幅、最大连续跌幅等等。其背后的原理是极端事件之后的概率回归。
总之,这是比较炫技和创新的一章。我们会介绍二阶导因子、频域因子、行为金融学因子。比如,频域因子是通过快速傅里叶变换或者小波变换,找出主力资金的操作周期来进行预测的因子。在其他人还停留在使用小波平滑噪声的阶段,我们已经开始使用它来探索主力资金的规律了!
这一部分我们讲思路会比较多。因为另类因子要么去买,要么去爬。但我们不想讲爬虫。
这也是谈天谈地比较务虚的一章,但依然干货满满。我们会谈一些找资源的方法,比如怎么找论文、数据等。到现在为止,我们已经介绍了好几百个因子(不算参数和周期),所以,我们也需要看看究竟有多少因子是独立的。所以,我们会介绍正交性检测方法。
机器学习快速入门。世界是连续的,还是量子?这是一个古老的哲学问题,也决定了机器学习的基本模型 -- 回归还是分类?
这门课程是一门应用课程,不想涉及太多理论,但如果一点原理都不懂,就只能照搬照抄示例,无法进行任何拓展。因此,我们决定选择跟应用层密切相关的基本概念进行讲解 -- 只有了解了这些概念,我们才懂得如何选择目标函数,如何评估策略,如何防止过拟合等等。
sklearn 是一个非常强大的机器学习库,以丰富的模型和简单易用的接口赢得大家的喜爱。在这一章,我们先向大家介绍 sklearn 的通用工具包 -- 用来处理无论我们采用什么样的算法模型,都要遇到的那些共同问题,比如数据预处理、模型评估、模型解释与可视化和内置数据集。
量化领域的机器学习有它自己的特殊性,比如在交叉验证方面,我们实际上要使用的是一种称为 Rolling Forecasting(也称为 Walk-Forward Optimization 的方法)。
在量化交易中,Pair Trading 是一类重要的套利策略,它的先决条件是找出能够配对的两个标的。这一章我们将介绍先进的 HDBSCAN 聚类方法,演示如何通过它来实现聚类,然后通过 statsmodels 中的相关方法来执行协整对检验,找到能够配对的标的。最后,我们还将演示如何将这一切组成一个完整的交易策略。
这将是你学会的第一个有效的机器学习策略。
受限于金融数据的高噪声,现阶段端到端的交易策略还不太可行;又受限于标注数据的大小,深度学习等人工智能模型也不适用于交易策略的构建。在机器学习模型当中,目前最优秀的模型就是梯度提升决策树模型。代表实现是XGBoost和LightGBM。
这一章将完整地介绍XGBoost模型,并且通过示例来演示如何使用、如何inspect和visualize生成的模型,如何执行交叉验证和参数调优。
资产定价是量化研究的核心问题之一,如果能够给出资产的合理定价,那么就能给出交易信号。
定价是个回归问题。尽管很难实现端到端的价格预测模型,我们还是以巧妙的构思,做出来一个可以预测未来价格的回归模型(理论上能自洽)。
我们不能保证这个模型总是有效的,有许多改进方案我们还没来得及探索,但是,以此为出发点,你在机器学习交易模型构建上,已经占据了领先优势。
在这一章,我们将构建一个基于XGBoost分类模型的交易模型。换句话说,它不负责预测价格,但能告诉你应该买入、还是卖出信号。学完这一章,你一定会认同,模型肯定就该这么构建,剩下的都是工作量而已:你需要构建系统、标注数据、构建特征,然后训练模型。
XGBoost很好,但LightGBM可能在内存占用、某些场景下的训练速度上会更优。这一章将介绍LightGBM如何使用。我们会给一个完整的例子,但不会涉及太多细节。这就是你常常在其它课程中会看到的那种内容。
前面讲过为什么深度学习还不太适合构建量化交易模型。这一章前面部分,我们会通过一个CNN识别k线模式的例子,来说明为什么。了解了这些局限之后,也许你能够发明一种新颖的模型,适合量化交易。这一部分没能教你可带走的工具和经验。但是如果你是研究型、创新型的人,你可能会觉得这一部分内容也非常有价值。
强化学习是我们比较看好的一个方向,特别是用在商品期货和加密货币交易中。我们会介绍一些入门知识和学习资源。
还有两个重要的智能算法,既不是机器学习,也不是深度学习或者强化学习,但在量化中确实也比较常用,就是kalman filter和genetic algo。我们会介绍一些入门知识和它们的应用场景,把更多的探索空间留给你。
1. 本大纲并非课程教材目录,比如,许多章节有《延伸阅读》或者《参考文献》小节,均未在此显示。
2. 课程内容还包括习题,未在此显示
3. 课程内容还包括补充材料,比如完整的 Alpha101因子实现代码(从数据获取、因子提取、因子检验到回测)及其它示例代码,未在此显示
4. 三级及三级以下目录有可能部分临时变更