想研发高频交易模型,请教下用什么软件好?

Discussion in 'General Topics on Software and Data' started by readonly, Jan 4, 2014.

  1. 推荐OQ
     
  2. 高频模型的话,研发和实现不能混在一起谈。

    一般提到用C/C++的,大多是指实现环节用C/C++。用的原则很简单:C/C++是你的母语。不用的原则也很简单:坚决不用,除非能够实测证明瓶颈在计算上(而非网络、存储)且消除该瓶颈对于相应模型而言是必要的。非母语情况下,一个简单的指标是:colocate了没有?没有的话多半不必考虑C/C++。

    在研发环节,考虑到数据量较大,是否支持矩阵运算是个重要考量。常见的支持矩阵运算的选择有:Matlab/Octave, R, Python。这里这里这里有一些比较,供参考。大概来讲,Matlab已老(元老?),R和Python正值当打之年,R只为统计建模而生,Python则十八般武艺皆通。选择的标准也很简单:会用哪种就用哪种。(都不会?Good luck:)
     
  3. prolog是典型的逻辑式语言,其要旨在于unification

    clisp是Common Lisp的一个实现
     
  4. 高手!多谢!
     
  5. 另外,对于python听说这个东西好像很热,有什么好处么?计算速度如何?听说有很多现成的工具包,确实是这样吗?学习难度如何?是适合懒人学的东西吗?典型的oop?望赐教。
     
  6. 非常感谢Wenyan!
     
  7. 也许可以抽样?都要的话,问记得matlab2009以上可以并行计算了,可以试试。我是菜鸟,一切以你自己的测试为准。哈哈
     
  8. 赐教不敢,互相交流,共同学习:)

    好处及现成的库我在这帖的16楼罗列过,不妨移步参考一下。

    速度上本身不算快,正确地使用科学计算库(如矩阵运算)则不慢。学习难度:上手很容易,精通很难说。适不适合懒人学我不知道。支持OOP、FP等主流编程范式(OOP方面没Ruby纯,FP方面没Haskell纯)。
     
  9. 收到,谢谢!
     
  10. 你所说的高速度交易是低延时交易,低延时交易的重点在于订单发出到服务器收到报单并给予反馈的速度尽量快。vba可以达到每秒钟2000次以上的订单效率,应该足够用了,至于策略执行延时的问题,其他帖子里以前我有说,很多事策略算法的问题。

    11年,我在论坛提到过策略的生命周期和有效性的问题,当时并没有多少人认同。你说的给予交易对象的生命周期的交易方式,不一定是高频交易。你不能说针对股指期货交易合约的生命周期的交易为高频交易不是。

    你正在学习的Q,不就不是cpp:)
    有些机构的高频套件,就是现在还是java,这里面包括排名前五大投行的自营交易部。
     
  11. 虽然认为vba一般还是足够用的,但你这句话也太扯淡了
     
  12. 不知道你试过没有就这样武断。去试试看~:)
    订单速度的最大瓶颈不是语言,是网卡。
    另外现在对ctp下单有限制了。
     
  13. 学习了
     
  14. 如果指绝对意义的高频,C++估计是速度第一的唯一选择。
    不过针对高频,C#, VB.net也能满足99%的需求。
    Excel是个常用平台,很多人用VBA/VBS其实都只是因为Excel的使用便利。结合C#VSTO在Excel上开发模型其实也是一个很好的解决方案。我曾经非常喜欢这种方案。不过现在软件开发确实简化不少,DevExpress内置了Spreadsheet控件,完全可以在脱离Excel的基础上操作spreadsheet。
    个人感觉现在开发模型,缺乏的或者说难点,是界面库的简化和运算库。
     
  15. 补充一点,现在的高频交易,瓶颈是网速的概率高于计算的速度。
     
  16. stony邮件是咨询法律事务,请注意言行。

    首先一个基础问题,你是否真正做过高频,实盘进行过,还是只是道听途说?

    不止一个高频解决方案提供商和CEP解决方案提供商的内核和GUI是基于Java的,同时Java具有跨平台的优势,虽然说linux x64是常用,但是AIX和windows也是用的很多。内核优化的高速解决方案可以达到每秒40万笔处理量,符合业界专业高频交易要求。

    C++作为主流,是因为语言的先天优势,尤其自行开发系统的,但是对于小机构和个人,甚至有预算的中大型机构,考虑到系统的完备性,C++经常不是首选,但是属于主流。但实际上业界内混合编程的也很多,即基于内核的类二次开发,除了服务器的Colocation外,很多fpga和asic的开发语言照样用到其他语言。

    我说easylanguage和vba/vbs对大多数人够用,是因为考虑到学习成本,实施效率以及debug的问题,你都用C#不用C++,不也是考虑到自己的以上因素,而如果对于非常熟悉C++的人说你去学vba吧,vba好,那才是胡搅蛮缠。至于用其做高频策略来讲,tradestation和MC从好多年前就被用来高频交易了,你可以直接找以前做过一些高频交易的人问问,用于外汇市场和期货市场,中国地区最早是台湾的交易者用得比较多,而用MC5完成一天几千单成交订单笔数的交易,完全没有问题,现在做大陆市场的就有台湾和韩国团队,有机会你可以问问看。而国内期货的情况,除非超高频追求极低延迟的套利和一些算法交易策略,其主要为抢单,但是达到这个级别的人/机构,国内能有几家/几个?别人忽悠说速度快就怎么怎么好,然后就照做,那样的可能达到那个级别?国内的交易环境就那样,可是这样的环境实际上客观保护了很多投资者。

    VBA/VBS的效率是我在2010年实盘实测的结果,这里面当然也有一些技巧,采用的就是金字塔的后台交易,虽然实际股指高频的不是用的金字塔。至于SAS和Matlab,其本质功能跟C++/C加上各种算法函数库的效果一样,比C#,java的效率高,内生内存数据库,而如果用来做交易,SAS方面可以负责任的说国内没几个能对不开放接口的SAS进行二次开发的,虽然我可以实现CTP的内核接入,但实际处理和你说的稳定和安全因素很难保证;至于Matlab,从2009a开始就说效能提高十倍,但实际上多线程和GPU也是慢慢才起来的,而且结合mex的效率并没有原生C++和C高,但是支持封包和压fgpa,开发方面对于IT人士稍微方便些,可以做交易平台,但是只是可以做而已。相比之下,用matlab高频盈利的人,比用vba/vbs/easylanguage盈利的人少多了。

    最后对于我开头的提问,我也有必要回答一下,避免乱说不实信息误导他人浪费他人时间,我现在任职的机构在BATS的IBM服务器中运行的高频交易平台是KDB+,很多机构都是这样,所以也就不涉及什么商业机密,属于业内公开信息。如果各位亲仔细搜索一下国内的应用情况,就会发现,转来转去就又回海洋了,国内最早接触使用kdb+的其实就是海洋这几个人。

    周末快乐!:)

    以上。
     
  17. Kuhasu对高频的定义大概是每天交易n次以上。
     
  18. 高频交易定义请查阅相关资料和wiki,虽然有些未免有些偏颇。
    所谓的订单处理性能与实战是真实下单量不同,高订单处理性能通常认为会在执行效率和可以采用的策略复杂度方面有更好的自由度,而是否具有利润意义则需要进行考量。
    一般人会把高频交易和低延时交易混淆,其实不是完全一样的概念。即便在低延时交易的市场深度中,实际上也分为高中低频,一样会有高延时占低延时便宜的策略,而不是只有低延时才有优势。
     
  19. 哭还诉大侠,:p你说的,我可以证实以下几点。我认识好几个用mc和tradestation、以及VBA做高频的团队。我自己也曾经参与过数个VBA做高频交易模型的工作。我个人认为高频交易对于个人交易来说无法战胜的难点,不在于程序运行的效率,更不会是下单的效率,而在于数据传输的高速瓶颈。曾经看到过有些机构为了数据的高速,斥资数千万甚至上亿美金铺设高速cable,自己估计这辈子是没能力花钱做这事的。

    我开始系统交易国内A股市场时间不长(虽然开户时间将近20年:p)。交易模式基本上是交易模型+手动下单。这几年的盈利情况比我预计的好很多,感觉系统交易发展空间远远好于欧美日。正在考虑程序化交易(每日最多进出场20次,日均4次,不同ETF+股票池)。刚看到你提及“虽然我可以实现CTP的内核接入,但实际处理和你说的稳定和安全因素很难保证”。能否请深入谈谈ctp内核接入的稳定和安全问题?我正考虑开发基于ctp的下单程序。多谢。
     
  20. 高频交易,需要投入大量的硬件投资。这个去搞这个的机构机房看一下就知道了。