python在CTA策略研发中的应用


(darcylike) #1

开篇申明:笔者也是python初学者,以下内容纯粹从个人使用经验来讨论问题,若有谬误,请大神们拍砖。

Python where we can, C++ where we must,这句话基本概率了python大法对CTA的重要作用。不是说迷信python大法好,而是说python特别符合CTA策略研发的一些特征,即利用了python的一些优势,又很好的回避了它的一些局限性。原因有如下3个:

1. 代码简洁,开发效率高。CTA策略研发需要大量来回调参,修改局部代码,属于典型的投入多,产出少。尝试几十几百个策略,成果却可能就那么1-2个,这种事情更是家常便饭。python代码极为简洁,语法简单,能让开发人员从大量的重复体力劳动中解脱出来,乃懒人同胞居家必备之良药,实在是药不能停;

2. 学习曲线友好,适合编程入门。CTA策略主要是使用python大法里数据处理这一小部分内容,主要包括pandas, numpy, scipy, statsmodels, sklearn, matplotlib, os, cmath, logging这些模块,其他的通通不学基本没有任何关系;

3. 至于python速度和性能上的局限性,我个人觉得没啥问题。1是因为反正交易下单系统还是C++搞定,不需要python。2是我又没处理tick,数据量又不是很恐怖,numpy基本能轻松搞定一切;

————————————————干货分割线————————————————

废话不多说,亮兵器。

python的学习,同其他语种相比,是一件无比快乐的事情。 ——By 笔者

1. python入门书籍,推荐head first,基本算是零基础入门读物,内容主要包括常用函数,OI读写和简单的数据处理。我网上找到了中文版的PDF,若需要强烈建议购买正版书籍。下载链接:

Head_First_Python(中文版).pdf

2. python进阶书籍,推荐_Python For Data Analysis_或者_Python数据分析基础教程:NumPy学习指南_,主要是数据处理的一些常用工具的使用,包括numpy, pandas和matplotlib。其中_Python For Data Analysis_网上暂未找到中文版的PDF,若需要强烈建议购买正版书籍。下载链接:

Python For Data Analysis (2013).pdf

Python数据分析基础教程

3. 细节参考书籍。请自己百度_python基础教程_或其他同类型资料_;_

4. 至于statsmodels, sklearn这2个模块的话,由于开发时间不是很久,而且现阶段还算是未收官的模块包,网上暂时找不到相关的书籍。大家可以看看对应的开发手册或者网上一些帖子的简单介绍;

另外说一下几点个人的使用经验:

1. 从效率上来说,能用numpy搞定的不要用pandas。或者换句话说,能用iloc的地方尽量用iloc,除非涉及到时间序列上数据的对齐和文本信息处理这2个方面,再考虑pandas;

2. CTA策略研发总体plot用的还是不多,个人建议是尽量不要或者少在美化和界面上投入时间,投入时间多又没产出,不过是讨老板开心而已,何况你有很多更重要的事情要做;

3. 什么时候用nan, inf和0是个很大的学问,慎之慎之又慎之;

4. 多用logging模块,尽量别用或少用print,长痛不如短痛;

5. paramiko大法好;

最后,祝大家自学开心:)


【整理分享】知乎量化交易及其子话题高赞精华帖整理