量化百科

时间序列分析vs机器学习——金融中哪个有用?

由polll创建,最终由polll 被浏览 14 用户

这几年是机器学习蓬勃发展的时代,支持向量机、决策树、隐式马尔科夫、神经网络、深度学习等名词很多人都可以随口说出几个来,它们在各个领域也确实有很成功的应用。而金融作为人们潜意识中的所谓“食物链上的顶端”,这些领域的研究者也很想把自己的模型往金融上靠。而很多学生,或许自己并没有怎么学习过这些模型,也很喜欢问“某某模型在交易股票上到底有没有用”这类问题。

时间序列分析是统计学里面的一大块,一般本科和研究生低年级会学习经典的时间序列分析,比如ARMA, GARCH, State-space Model, Vector ARMA等,这些跟机器学习的模型当然是很不一样的。

金融市场股票和期货的数据本质上也是时间序列,无论是按秒、分钟、小时、日来看都是时间序列。那么很自然的想法是传统的这些时间序列模型能不能用来指导交易呢

其实时间序列模型中也会涉及到预测,比如预测下一个时间单位的变量值,或者后面几个时间单位的变量值等。人们很少直接用时间序列模型来预测价格变化,因为人们一般认为价格变化本身是独立的,比如要预测r(t+1),用ARMA效果一般,因为它与r(t),r(t-1),r(t-2)...是独立的,因此如果直接用ARMA模型,效果或许不会好。

如果用机器学习模型来预测,,它会先生成一些因子,然后通过因子来预测。比如同样是线性模型,是这样的:

r(t+1)=b1*x1(t)+b2*x2(t)+b3*x3(t)...

这显然是一个预测模型,因为只用到了当前的信息,来预测未来下一个时间的价格变化,**这里****x1(t),x2(t)...**都是已知的,需要估计的是它们的系数b1,b2,b3....应该说无论是Lasso, Ridge, gradient boosting等等,都是这么个套路。

回到时间序列模型。如果硬要用机器学习那套,其实也可以,但很多时间序列传统的ARMA, VARMA就无法使用了。因此,可以换个思路,把模型写成:

r(t+1)=b1*x1(t+1)+b2*x2(t+1)+b3*x3(t+1)...

这样系数b1,b2就可以用历史数据拟合出来的结果。

**有些人说不对!x1(t+1)****根本就不知道!**其实这个可以看成是一个估计量,比如:

x1(t+1)=f(x1(t),x2(t),x1(t-1),x2(t-1)...)

可以用VARMA****模型把各个因子的数值先预测一下,然后作为新的因子值代入回归模型。而回归模型的系数可以用历史数据完全确定,因为它不存在跨越时间的问题。这样就可以把经典的时间序列模型使用进来了。

很多数据其实都有比较强的自相关性,比如GDP、通货膨胀率、P/E、P/B等,它们是可以比较好的用时间序列模型来预测的。但股票价格变化则一般不会用这么强的自相关性,因此难以用时间序列模型直接预测。但股票价格变化一般会与其它这些指标存在一定的相关性,(如果不承认这个假设,那么无论时间序列还是机器学习都会失效),因此可以用时间序列模型预测这些指标的数值,再代入相应的模型来预测,这样效果会好一些。

很多人担心学校里学这么多似乎工作中没什么用,其实随着研究的进展,过去学的知识很多还是能用得着的,学校里没学好工作中还得继续学。或者可以听听我的知乎live讲座:

量化交易职业发展

标签

时间序列分析机器学习决策树神经网络深度学习