程序化交易开发者的重要经验

Discussion in 'Philosophy and Strategy' started by mashall, Feb 14, 2013.

  1. konit所指的可能是这篇文章提到过的:http://blog.renren.com/share/284205872/14805151224
     


  2. 你好,请问你程序中
    CloseShortForce();
    OpenLong();
    CloseLongForce();
    OpenShort();
    CloseAllForce();
    ...

    这些都是你事先写好的模块化程序吗?是怎么处理细节的呢?

    比如我调用OpenShort()(应该是开仓做空吧?),那么如果当时无法做空程序是怎么处理的呢?还有成交后的订单返回信息好像没有在你的代码中看到,都是市价委托吗?

    我在实施策略时发现将模型转化为代码的过程是非常漫长和痛苦的。一个并不复杂的模型,但是如果要考虑的全面一点,整个程序的编写、调试、纠错过程可能需要长达一两个星期。所以我也在思考是不是什么地方有问题。以前在某个地方看到过对冲基金里的quant似乎将模型转化为可以执行的策略程序整个过程只要一到两个小时。不知是真是假

    谢谢!
     
  3. Jane Street Capital用OCaml, 据说是基于可靠性的考虑。
     
  4. 都是模块化的程序,细节很多,不能简单说清楚。
    你指的无法做空是指什么原因:资金?休市?限仓?...
    策略简单,所以代码简单 ,都是市价委托.系统本身可以下限价单,撤单,处理订单汇报等.
    如果不处理限价单的部分成交,撤单等状况,全部用市价委托.策略的编写还是比较简单的,只要你把底层的函数编好就可以了.常用的SetStopLoss, SetBreakEven, SetTraillingStop, SetTraillingStopPercent等函数,本系统都可以直接用.
     

  5. 感谢回复!

    如果都是市价委托,那么在要考虑执行成本的情况下,是不是就不能使用这些函数?请问如果在复杂些的情况下,比如,部分订单需要限价委托、或者跟随市价的限价委托(pegged order),而其他订单又需要根据这些订单的成交情况作出反应(比对配对交易就要求在限价委托成交的同时,对另外的证券发出市价委托)。那么你会如何处理这些情况呢?

    我的程序对于这些情况下只能分别考虑各种情形(没有成交、部分成交等等);对需要实时反映的情况,就根据订单成交的事件作出反应,但是其实很多时候会涉及到线程的同步问题,个人觉得很多线程同步的细节问题在设计时也很难考虑全面,经常在测试的过程中才发现,因此有时候又需要作出大的修改。因此程序很难没有BUG,我就是想请教一下是否有什么成熟的方法。

    谢谢!
     
  6. 市价委托基本上都是对价成交,只要频率不高,比如1min以上持仓周期, 影响不大.
    每个委托都有自己的ID号, 该ID成交后在成交回报里面处理其他的委托.
    你说的成熟的方法我不清楚. 线程同步等程序问题一般是仁者见仁,智者见智的地方, 我想每个人处理的方式应该都不会相同.
    不客气, 互相交流学习.
     
  7. 能用钱解决的问题都不是问题,就用文华,你专注研究策略就行,技术上有什么难题解决起来很简单,直接打客服电话。
     
  8. 策略开发可能还是matlab最好。

    执行上如果追求效率的话,就用C++改写,绝大多数情况够用。
    如果要求再高,就搞个FPGA。

    脚本类的,我不知道用来干嘛。
    用来研发策略不够强大,用来执行不够快。
    除非对执行效率根本没啥要求。
     
  9. 其实策略研究还是专用的策略回测平台好,有买卖信号显示、有资金曲线,matlab恐怕是学院派用的多,学院派(尤其搞金融的)喜欢里面的金融工具箱,定价模型,神经网络、基因算法啥的,呵呵,放在实盘都是一塌糊涂。
     
  10. Matlab + C++ 都快成工业标准了 :D
     
  11. 我理解,这不是同一个阶段的工作。
    策略的诞生,总是从一个理念开始,然后去验证,去实现,去回测,外测。后面都是技术性的工作,真正的核心还是理念。
    什么是理念?
    打个比方,与盲人摸象的典故类比,市场行为就是那个像,无数投机者就是其中的盲人。除了上帝,没有人可以完全了解市场,但是每个人都可以了解自己所见的部分规律,因其不全知,故而没有确定性规律,只有统计性规律。
    一个理念,就对应着一种统计规律,这是一切策略的原点。粗粗的看,有人看到长期上涨的统计偏向,发展了长期持有策略;有人看到厚尾偏向,发展出趋势策略;有人看到摆荡偏向,发展出价值投资策略或均值回归策略…

    一个好的理念基于好的统计优势,它无需太多优化;反之不好的理念基于不强烈、不稳定、乃至不存在的统计优势,所以后面需要大量参数优化,要么不盈利,要么过度优化,要么生命周期很短,要么适应范围很窄。
    我认为matlab最大功用,在于发现和验证统计偏向,为下一步的策略实现打好坚实基础。所以其实最需要的还是统计功能和数据展示功能,比如3D绘图、boxcox之类。这些功能,当今的策略回测平台可否做到我不太清楚,可能我out了,反正以前我是找不到这样的平台的。

     
  12. 同意, 快速统计学建模还是Matlab好
     
  13. 不同意,matlab适合计算机编程经验的人员,快速统计建模matlab并不擅长。
     
  14. 那你说哪个软件好? R? SPSS? SAS? Maple? Mathematica? MathCAD?