A. 如何系统地学习量化交易
首先,我对这个问题是完全不知道怎么回答,为此,我专门去请教了我的老师。
我理解很难有一个定量交易的所谓的系统学习过程,定量的只是手段,交易逻辑是多样的,你可以通过形态描述,追踪市场方法,如不合理的降价,也可以把天体物理、小波分析、神经网络等复杂模型应用其中,你可以做的是K线结构上的策略,也可以做日线或每500毫秒数据进行决策的策略。所有的一切目的就是为了获利,所谓量化和程序化只是实现这一目的的手段。
一个strategist需要思考策略的思维框架,实现方式,而developer则是侧重了前后端接口,输入输出,界面设置,风控机制,平台拼接等等很多很多方面。其实很不相同吧。
B. 做量化交易选择什么语言好呢
量化交易,就是把人能够识别的信息变成数字,输入给计算机程序处理,辅助或者代替人类的思考和交易决策。
初学者碰到的第一个问题就是工具的选择。首先大部分交易员本来不会写程序,选择任何一个语言进行策略开发,都有不小的学习成本。更重要的是,选择了一门语言,接下来开发环境、人员招聘、数据接口与平台、甚至同类人群之间的交流、遇到问题后的支持,都跟着被“套牢”。所以从一开始就必须慎重对待。
先给出答案:对于还没有确定一套固定量化环境的,建议用Python。
量化交易员面临的大致选择有:C/C++/java/C#/R/Matlab/excel等。我们从以下几个方面考虑简单做个对比。
注意:这里假设你团队规模在50人以下。
1 学习成本和应用的广泛性
C、C++的特点是速度最快,但要想用好,必须对计算机底层架构、编译器等等有较好的理解,这是非计算机专业的人很难做到的,对于做量化交易来说更是没有必要。
Java本来是SUN的商业产品,有学习成本和体系的限制,也不适合。
Excel面对GB级别的数据无能为力,这里直接排除。
Python、R和Matlab学起来都简单,上手也快,可以说是“一周学会编程”。但R和Matlab一般只用来做数据处理,而Python作为一门强大的语言,可以做任何事,比如随时写个爬虫爬点数据,随时写个网页什么的,更何况还要面对处理实时行情的复杂情况。
2 开始做量化分析后,哪个用起来碰到问题最少,最方便省事?
用历史数据的回测举例。假设我们有2014年所有股票的全年日线,现在我们想看看600001的全年前10个最高股价出现在什么时候。python世界有个强大的pandas库,所以一句话就解决问题:
dailybar[dailybar [‘code’]==‘600001’].sort_values([‘close’].head(10)
R/Mathlab等科学语言也可以做到。
C/C++没有完备的第三方库。如果为了做大量的计算,要自己实现、维护、优化相应的底层算法,是一件多么头疼的事。
Python从一开始就是开源的,有各种第三方的库可以现成使用。这些底层功能库让程序员省去了“造轮子”的时间,让我们可以集中精力做真正的策略开发工作。
3 现在我们更进一步,要做实时行情分析和决策
以A股的入门级L1数据为例,每3秒要确保处理完3000条快照数据,并完成相应的计算甚至下单。这样的场景,C和C++倒是够快了。所以行情软件比如大智慧、同花顺等客户端都是使用高效率的语言做的,但像客户端那样的开发量,绝大部分量化交易机构没能力也没必要去做吧。
python的速度足够对付一般的实时行情分析了。其底层是C实现的,加上很多第三方的C也是C实现,尽管其计算速度比不上原生C程序,但对我们来说是足够啦。
4 quant离职了,他的研究成果怎么办
Python是使用人群最多、社区最活跃的语言之一,也是最受quant欢迎的语言之一。如果你是老板,你能更容易地招聘到优秀人材,享受到python社区带来的便利。
附几个量化中常用的python库:
- Pandas:
天生为处理金融数据而开发的库。几乎所有的主流数据接口都支持Pandas。Python量化必备。
- Numpy:
科学计算包,向量和矩阵处理超级方便
- SciPy:
开源算法和数学工具包,与Matlab和Scilab等类似
- Matplotlib:
Python的数据画图包,用来绘制出各类丰富的图形和报表。
PS: Python也是机器学习领域被使用最多的语言之一。像tensorflow、scikit-learn、Theano等等对python都有极好的支持。
C. 如何利用matlab对交易策略进行回测
这个很简单啊,我现在就在用matlab做期货量化的回测呢
关键的构成:
一是:形成自己策略的思想和流程图
二是:从TB或者其他软件中导出需要的tick等级别的数据,根据自己的思想和流程图编辑程序,最好多使用function函数句柄,是程序的可适性增强。
三是:绘制图片,plot,mesh或者GUI,来观测自己参数对策略的影响,进而进一步完善策略
四是:多用cell元胞数组,根据TB等回测报告形成自己的测试报告,比如空多盈亏,回撤等等。
D. 请问大家什么软件能够用外部指标进行历史回测
需要一些比较专业的统计软件。第三方炒股软件一般都做的不好,有些我拿更权威的统计软件去计算,发现结果居然是错的。这个是个人经验(不过有点过时了,2012年尝试的,估计那个软件自己已经把错误更改了。)。
建议你做以下操作:
自己收集外部指标,并随时更新。如果可以的话,自己建个数据库。MYSQL之类的,免费而且非常容易上手。
选择一款可以轻松将金融数据导出成标准格式的第三方炒股软件。这个就是你自己的喜好了。大部分软件,这方面做的还是不错的,虽然要交费。
用一款比较专业的统计软件,将两者数据导入,然后按自己的想法,自由自在的做分析。你可以随便选一款你自己使用着习惯的统计软件。EVIEWS之类的太简单,包含的东西太少了。高度建议你选择一些自带金融计量分析工具的软件。建议你用以下统计软件:
MATLAB。这个上手超快,前提是你很好的学过线性代数,因为计算是以矩阵为基础的。他自带的financial econometrics tool box包含的东西非常广,非常全。就算没有,因为软件自由度很高,所以可以轻松自己创造出一个。
STATA。这个上手比上面那个还快。而且,不需要很好的线性代数,因为编程理念不是以矩阵为基础的。自带的金融计量的东西很多很全。更新也很快。缺点是,没上面那个自由度高。某些全新的算法和公式,你想用的话,自己写出来比较费劲,效率也容易低。特别是你想做蒙特卡罗模拟实验的时候。
其他的那些免费的统计软件,比如R, OX之类的我并不建议。因为是免费的,所以用户体验做的并不好。
E. 怎么获取股票数据c++ api
基本都是自己封装CTP接口,程序端实现多账户、多策略的行情信号接收和委托提交/回报处理。也可以用 QuantBox/QuantBox_XAPI · GitHub 这样的封装的比较好、多接口统一API的项目直接整合到程序化平台的项目中使用。
通过程序接口用证券、期货账号登录后订阅品种的行情,证券、商品期货、股指期货、期权(全真模拟,9号就有实盘行情)都可以接收交易所的快照数据(例如商
品、股指都是500ms一个快照,数据结构也比较完整)。然后交易平台可以把行情数据广播给各个策略程序,程序根据量化策略的逻辑判断是否下单?挂单的方
式如何?挂单失败是否追单?如何追单?
策略程序判断要下单,则提交指令到程序化交易平台,平台把各个帐号各个品种中策略的逻辑持仓汇总为实际持仓,然后通过接口提交委托,并且处理委托回报。
行情数据一方面广播给策略程序,一方面自己存数据库,存下来的数据通过完整性检测后,可以自己合成低频率的数据,如
1分钟、30分钟、1小时、日度等等,这些数据会被用于策略回测,也可以用于市场微观结构的观察和研究,例如可以通过优化挂单方式来降低交易滑点。
Matlab可以做一些回测,实盘可能是比较不易用的。一般可以用C++, Java, C#来利用CTP程序化交易接口实现实盘平台,策略研究推荐用R做数据分析、统计、处理、可视化、策略分析、自动报告,用Rcpp(R调用C++)或者直接C++实现高性能回测,用单机并行或集群实现批量回测。