量化投资主要基础知识
正如前文所说,量化投资是以金融学、数学、计算机科学为基础的科学,其知识结构可以用下图所示:
整个量化投资的过程,是一个包含策略生成与优化、策略回溯、选股与择时、自动交易执行、交易数据再分析、策略再优化等多个过程,不断循环、不断自我优化的过程。
量化投资产品的基本流程框架
经济&金融基础知识
货币的时间价值
货币时间价值是指货币经历一定时间的投资和再投资所增加的价值,也称资金的时间价值。
例如,今天的100元和一年后的100元是不等值的。今天将100元存入银行,在银行利息率10%的情况下,一年以后会得到110元,多出的10元利息就是100元经过一年时间的投资所增加了的价值,即货币的时间价值。
由于不同时间的资金价值不同,所以,在进行价值大小对比时,必须将不同时间的资金折算为同一时间后才能进行大小的比较。
这里还涉及到 回报率 、折现率、机会成本 等概念,这里就不再展开介绍,有兴趣的朋友可以自行百度。
复利的优势
单利和复利都是计息的方式,单利是前一期的利息不参与之后的计息,复利是前一期的利息参与之后的计息。在本节最后,我们会以复利的计算作为我们第一个程序,在这里我们会看到复利的神奇。
资产收益率和风险
在投资的过程中,资产收益和风险都是可度量的。
资产收益率 = 投资收益 ÷ 投资成本,具体的还分为:期间收益率、期间净收益率、单期收益率、多期收益率、年化收益率等。
资产风险的来源包括:市场风险、利率风险、汇率风险、流动性风险、信用风险、通货膨胀风险、运营风险等。而资产风险的度量可通过方差分析进行计算,这就是方差风险度量,以次来描述风险的不确定性。
此外,还有下行偏差度量、风险价值度量、期望亏空、最大回撤 等度量指标,以后在实际程序功能实现时,我们都会逐一展开。
投资组合理论
投资都希望获取更多的收益,尽可能的避免风险,资产配置是解决这一问题的有效途径。这里也在次说明,量化投资是在概率上保证好的收益,而不是绝对的保证一直股票、一次投资收益。
后面我们会通过Python语言实现 均值-方差模型、Black-Litterman模型 的投资组合分析。
资本资产定价模型(CAPM)
资本资产定价模型(CAPM)是在资产组合理论和资本市场理论的基础上发展起来的,主要研究证券市场中资产的预期收益率与风险资产之间的关系,以及均衡价格是如何形成的,是现代金融市场价格理论的支柱。CAPM中有两个最主要的假设:第一,投资者是理性的;第二,资本市场是完全有效的市场,其模型公式如下:
E(ri)=rf+βim(E(rm)-rf)
其中:
- E(ri) :是资产i 的预期回报率
- rf :是无风险利率
- βim: 是[Beta系数],即资产i 的系统性风险
- E(rm) :是市场m的预期市场回报率
- E(rm)-rf :是市场风险溢价(marketrisk premium),即预期市场回报率与无风险回报率之差。
关于资本资产定价模型(CAPM)的具体程序计算与实际应用,我们会在以后的文章中有详细介绍。
三因子模型
在资产定价模型(CAPM)的实际中,发现CAPM模型并不足以充分解释资产的收益率,此后 Fama 和 French 仿照 CAPM 模型提出了三因子模型,三因子包括:市场资产组合(Rm− Rf)、市值因子(SMB)、账面市值比因子(HML),其公式为:
E(Rit) −Rft= βi[E(Rmt−Rft)] +siE(SMBt) +hiE(HMIt)
其中:
- Rft:时间 t 的无风险收益率
- Rmt: 时间 t 的市场收益率
- Rit:资产 i 在时间 t 的收益率
- SMBt: E(Rmt−Rft): 市场风险溢价
- HMIt:时间t的账面市值比因子的模拟组合收益率时间t的市值(Size)因子的模拟组合收益率
- β、si和hi分别是三个因子的系数。
回归模型表示如下:
Rit− Rft= ai+ βi(Rmt− Rft) + SiSMBt+ hiHMIt+ εit
主要的量化分析方法分类
对于量化投资策略数量庞大,个人认为可以分下几个大类
- 基本面量化(价值量化):价值量化主要是依靠基本面数据、价值模型等进行价值分析与选股的策略,如上所提到的 CAPM 就属于这里一类;
- 动量策略:动量策略主要是预先对股票收益和交易量等参数设定过滤条件,当参数达到过滤条件是,提示进行买入或卖出操作;
- 均值回归策略:均值回归主要指股票价格如论高低,都会以很高的概率像均值回归,均值回归策略就是根据价格与价值的差值作为判断依据的量化策略;
- 其它新兴策略:随着人工智能、机器学习、自然语言处理、大数据分析等技术的发展,涌现出的一些新的量化策略。
主要常见的量化工具包
- Zipline:是一个自动化交易回测框架
- TA-Lib:作为一套被业界广泛应用的开源技术分析库(包含技术指标计算和K线模式识别等),TA-Lib自1999年发布以来已经有了十多年的历史,其中包括200多项指标,如ADX,MACD,RSI,Stochastic,Bollinger Bands等.. ,烛线图模式识别,并提供了C/C++, Java, Perl, Python 和 .NET等各种语言接口;
- vnpy:提供了交易和数据的接口,基本覆盖了国内外常规交易品种(证券、期货、期权、外汇、CFD),在量化系统中,作为实盘自动化交易的框架。
- PyAlgoTrade:简称 PAT,是开源的Python 量化交易平台,支持策略回测和实盘交易
主要量化投资平台
- MindGo量化交易平台:同花顺下的MINDGO量化在线平台我感觉还不错,依靠同花顺强大的数据库支撑,平台经过一段时间的发展,数据方面优势非常明显。
- 米筐科技Ricequant :www.ricequant.com
- 聚宽:www.joinquant.com。基本上参考的 Quantopian;
- 果仁网 可以的,网站上的量化研究工具和回测体验都很不错
- BigQuant:采取了Quantopian比较成熟开放的zipline回测引擎。
- Uqer优矿 :www.uqer.io,是通联数据旗下的量化平台
第一个量化程序
前面讲了这么多,而投资中最基本也是最神奇的概念,应该就是复利的概念。这一概念告诉我们最重要的一点就是投资不可急功近利,在这里写下自己的投资三原则,以时刻提醒自己:
第一条:不要幻想自己比别人聪明幸运
第二条:先保证本金安全,再考虑投资,绝不可为了交易而交易
第三条:只争取自己合理收益,也就是说挣自己该挣得,不要管别人挣多少
复利的魅力
下面我们用python程序简单验证下复利的魅力,也算是 量化投资程序开发的正式开端。
在这里,我们对比在 40 年的时间里,每年投入 1 万元,年利率分别为:5%、10% 、15%、20% 的情况下,最终的收益率。Python程序如下:
import numpy as np
import scipy as sp
import pandas as pd
import matplotlib as mpl
import matplotlib.pylab as plt
def fuli(k, nyear, xd):
d2 = np.fv(k, nyear, -xd, -xd)
d2 = round(d2)
return d2
dx05 = [fuli(0.05, x, 1) for x in range(0,40)]
dx10 = [fuli(0.10, x, 1) for x in range(0,40)]
dx15 = [fuli(0.15, x, 1) for x in range(0,40)]
dx20 = [fuli(0.20, x, 1) for x in range(0,40)]
df = pd.DataFrame(columns=['5%','10%','15%','20%'])
df['5%'] = dx05
df['10%'] = dx10
df['15%'] = dx15
df['20%'] = dx20
print(df.tail())
df.plot()
plt.show()
最终结果如下图所示:
具体数据对比如下:
5% 10% 15% 20%
35 96.0 299.0 1014.0 3539.0
36 102.0 330.0 1167.0 4248.0
37 108.0 364.0 1344.0 5098.0
38 114.0 401.0 1546.0 6119.0
39 121.0 443.0 1779.0 7344.0
可以看到,每年投入仅仅 1 万元,坚持投资 40年,在年利率 5% 的情况下,最终受益 121万元,而在年利率 20% 的情况下,最终受益惊人的高达 7344 万元。
真的是投资不可急功近利,下面等待我们开始一步一步的实现我们自己的量化框架吧!