第1章 量化投资入门建议与行业概况
1.1 学习路线图与重要知识节点
2016年我被一个问题困扰了很久,一位读者朋友请我提供量化投资学习的“路线图”,或者说进入这个行业的学习路径。我从来没有思考过这个问题,自己和身边从事量化工作的同事都没有想过知识图谱是如何构建的,又是以哪里作为突破口构建的。后来我意识到问题的严重性,如果路线图制定得当,学习效率将会得以提高;如果制定不妥甚至错误,则可能会使学习者几年时间毫无进展。
在调研了多位量化交易者之后,我总结出量化投资学习方面的路线图,如图1-1所示。
图1-1 量化投资学习路线图
(1)体会各类资产的择时建模,激发学习兴趣。
各类资产的择时问题较难且有深度,但是也相对简单,因为门槛低,“低买高卖”思路非常清晰。在单一时间序列模型上,动量容易被均线类、突破类模型捕捉,典型应用是股票指数择时。相信很多读者最初也是被一条能够跑赢大盘指数的资金曲线所吸引的。
在个股上择时较为困难,除了少数大盘股有较为持续的动量之外,大部分中小盘股票不容易做择时,很容易追高买入,并在不利点位卖出。择时的工具简单多样,比如移动平均线、布林通道,各类技术指标如MACD、RSI之类基本上就是因为能择时才拥有广泛的“群众基础”。
将这些指标加工处理后,配上止损、止盈条件,即可直接应用于商品期货市场,该市场的中低频交易策略大部分以动量类技术指标为主,原理并不难理解,也有部分技术指标可以反向使用,作为“超买超卖”类指标来表示过度乖离。择时在外汇类资产上也能大量使用,基本上也是将商品期货的模型搬运过去,然后做适当修改。在进行大类资产配置时,由于择时工具面对更低的数据噪声,往往效果更好,使用一个逻辑简单的模型去应对债市或者房地产市场相关数据,能带来令人惊讶的效果。
这个阶段的研究进度因人而异,有一定基础的研究者可能几周即可找到能赚钱的择时模型,而大部分交易者可能需要数月甚至数年时间来培养对动量的把握能力,或者因为基本的编程语言关口无法通过而停留在这一阶段。
(2)编程语言障碍要在模型开发中逐一克服,否则会陷入对程序的恐慌和无助。
编程语言对大部分交易者来说是量化学习的拦路虎(对于少部分程序员而言,金融市场知识和分析经验可能更复杂),建议积累必要的语法知识后,直接从模型搭建开始学习。比如我们能够调用系统自定义函数,获取按规则选取的股票池,就走出了策略撰写的第一步,然后尝试构建最基本的交易策略、买卖条件,这时就需要嵌套、循环、逻辑判断等知识。再向复杂的领域推进,可能要涉及对个股表格做筛选、计算等“增删改查”的处理,需要接触Python语言的list、dict、dataframe等数据格式。
如果一个缺乏编程知识的人为了学习量化投资而学习MATLAB或Python,可能需要至少一个月甚至数月的时间。而且在面对实际的股票问题时会再度陷入僵局,因为需要从脑中将抽象的代码规则转化成实际问题,以看懂某个语句;或者需要一定时间将股票、期货数据格式,抽象成一行代码,这一过程来回消耗精力,很多人在这一过程中会忘记学习量化的初衷。
我们在面对海量的新知识时都会产生敬畏和莫名的恐慌情绪,不过在代码学习过程中不用担心,毕竟它是辅助我们更好地进行投资决策的工具,它要简化模型构建过程,而非让问题复杂化。学习复杂的程序开发有一个好办法——写注释,阅读大量投资模型,为它们逐行添加注释,有必要时再对照敲击一遍代码,你的代码能力会得到快速提升。如图1-2所示。
图1-2 量化投资是金融知识用编程表达后的结果,两种能力都要具备
(3)探索股票和期货波动特征,尝试较为复杂的股票和期货模型。
具体到可以被量化交易的各类交易资产方面,建议大家在股票和期货上重点研究,而不要轻易涉及外汇资产和数字货币,因为股票和期货这两类市场都有足够的容量可以交易,且杠杆率可控,资金安全有保障。
首先股票是没有杠杆的,而且市场上有很多只股票可以选择,每只股票又带有大量财务因子信息、量价和资金因子信息、舆情信息,这促使股票类资产可以调换标的操作,并且调仓是以日期为横截面的。我们不必抓住几只股票反复操作,因为在固定标的上,只有择时收益,可以反复调仓换股,获得多只股票的收益。
事实上你会发现:如果你不换股,在单独股票上使用择时模型,则难以跑赢静态持有个股,而到了期货市场上,积极主动的择时交易、突破类交易,都可以获得良好收效。用几个看似简单的逻辑构建模型,在期货市场波动率充足的情况下,可以始终保持盈利,所以大部分交易者入行量化领域,真正实盘程序化交易模型并不是从股票开始的,而是从期货开始的,特别是资金需求量较低的商品期货。如图1-3所示。
图1-3 遗传算法(Genetic Algorithm)作用于股指期货,分为训练集(左侧)和测试集(右侧)
在这个阶段,你会遇到很多听起来黑科技感十足的模型,比如低通滤波器、隐马尔可夫链、模式识别等,要学习的知识会多到“爆炸”,但是如果本着技不压身的初衷将它们都学完并做成模型,或许你依然难以盈利,这是很令人烦恼的问题,因为择时问题的深度会限制你的眼界和看市场的广度,所以先给自己打造出能用的工具,然后再去追求“高精尖”的知识也不迟。
建议大家给自己半年到一年时间,为了加速进度、督促自律,可以列一个任务清单和时间表,定期学习、总结经验。
(4)做足单因子分析功课,然后切换到多因子学习。
在过渡到本阶段之前,你需要补充一些数学知识,比如线性回归、数据清洗等,因为在股票市场上,要面对的不仅是期货时间序列,还有每只股票时间序列背后的多维度信息。初学者可以想象,在大智慧或同花顺软件上看到上市公司F10资料里有多少信息,在因子分析阶段就要涉及多少信息(甚至远比这更多),可谓任务繁重。如图1-4所示。
图1-4 样本内与样本外因子选择的比较
资料来源:德银量化部门QWAFAFEW Presentation January 2015
建议读者按照科学的评估方法,观察因子值对于个股收益率的描述能力,重点分析IC和因子收益率单调性,以便发现高质量的Alpha收益(超额收益)因子。做好数据清洗和数据表格的基本操作,才能到达多因子建模阶段。
在多因子阶段需要注意一点:做好数据处理工作,让你的模型更加简单有效和安全、易解释,对算法知识可以浅尝辄止,因为可供调用的算法包很多,这部分知识的深度也难以理解,消耗的学习成本过大。而且这样能让你更加集中精力做出能够实战的多因子模型,而不是沉浸在算法的知识中无法看清股票市场现状。