机器学习在量化交易上的运用(一)

来源:互联网 发布:物理层提供给mac 编辑:程序博客网 时间:2024/05/09 18:40

首先阐述下背景。

也需要一个自己去做总结提高的地方,所以在此开个博。

废话少说,开始干活(后面也请谅解想到哪写到哪的风格,因为这里很多东西是用分享的方式在自己总结)

今天的第一个任务是在TB上实现均线特征的线性回归交易。

之前这个东西我做过,但是却被某些机器学习方面的大牛批评:过多的业务框架限制了机器能学到的东西。现在对这个批评理解的都不够透彻。

其实,很多想入门做数分或机器学习的人会发现,数据源是个头疼事。我的建议是,不妨从股市或期货市场的交易数据入手,因为够好获取。

http://www.tb18.net   这个是TB的网站,这个是一个国内比较好的第三方程序化交易软件,它上面可以导出数据。除了可以导出常规的价格数据外,还可以用导出所有plot的自定义数据(可以自己定义一些标签,可以直接plot出来后导出哦)

当然,还有很多获取数据的方式,但这个比较直观,而且训练的模型可以直接在上面实盘操作(感觉自己在安利TB,不过现在很多人都根据CTP接口自己写程序交易软件喽)

在TB上实现一个线性模型。

Y = wX+b

这里的X可以自己定义,我们采用了均线来定义(我不知道这是不是在各类挖掘或机器学习中叫的特征的概念)。

ParamsNumeric n(10);VarsNumericSeries ma8;NumericSeries ma13;NumericSeries diffc;NumericSeries diffma8;NumericSeries diffma13;NumericSeries df;BoolSeries condbuy;BoolSeries condsellshort;Beginma8 = Average(close, 8);ma13 = Average(close, 13);diffc = (close[-1] - close)/close * 10000;diffma8 = (close - ma8)/close * 10000;diffma13 = (close - ma13)/close * 10000;df = (-0.037803471919434*diffma8 + 0.033816490363161*diffma13)*100;condbuy = df > n;condsellshort = df < n*-1;//PlotNumeric("ma8",ma8);//PlotNumeric("ma13",ma13);PlotNumeric("diffma8",diffma8);PlotNumeric("diffma13",diffma13);PlotNumeric("diffc",diffc);PlotNumeric("df",df);if (condbuy){Buy(1,close);}if (condsellshort){SellShort(1,close);}End

代码不注释的。哈哈。是段TB代码,可以直接复制到TB里测试。

diffma8 和 diffma13是特征,下一根K线的涨跌幅是需要去预测的量。通过w=(x'*x)^-1*x'*y的公式可以求w参数。然后带回到TB里。

大的框架就是这样的。现在问题是,好的X和Y有哪些?自己定义的框架是不是像批评者说的,限制了机器的learn。怎么突破?

如何用python实现批量的回测?

今天暂且先到这,这个框架以前搭过,需要持续研究的优化。

有兴趣一同探讨的朋友可以联系我。

PS:好久没撸matlab的代码和TB的代码了。今天为了写博先开了个头,后面会不断更新。




1 0