Backtesting一定要记得enable "Look inside bar Backtesting"

Discussion in 'Philosophy and Strategy' started by BlueSpeculat, Feb 16, 2009.

  1. 之前有报告过,TradeStation在做backtesting的时候其实是有一些地方要注意的。有时候我们看到一个很漂亮的资金曲线。是因为我们不严谨的backtesting所造成的。如果我们是因为不严谨的backtesting,而造成这种虚假又漂亮的资金曲线,然后又拿实际的资金下去交易,那下场通常就是亏损出场,然后丧失对系统交易的信心。

    http://tw.myblog.yahoo.com/Blue-Speculator/article?mid=1&prev=2&l=a&fid=5


    下面举两个例子来作说明好了,我用一个Larry William在1999年写的"Long Term Secrests to Short Term Trading"这本书里面提到的范例。是一个很简单的Range Breakout System。规则如下:

    1.先计算今天最高点和最低点的差距,就叫这个差距为Range好了。

    2.在明天开盘之后,如果价格往上涨突破了开盘价+Range则结束原有空头部位并作多。如果价格跌破了开盘价-Range则结束原有多头部位并作空。没有设停损,是一个stop and reverse系统。

    规则很简单,是我最喜欢的类型,整个系统四行程序就写完了。如果我们拿来测试在美国十年公债的市场上,用日线来作交易,可以得到像下面这样的资金曲线的图表。看来还不错,应该是一个可以实际拿来交易的系统。

    [​IMG]
     
    Last edited by a moderator: Nov 10, 2009
  2. 可是我们在backtesting的选项里面有一个选项,刚刚并没有把它enable起来,就是 Strategy Proterties里面的" Use Look-Inside-Bar Back-testing"刚刚并没有勾选(就是下面画面圈起来的地方)。所以我们现在把这个选项勾选起来,并且用最细的分辨率,1分钟的分辨率。

    [​IMG]
     
    Last edited by a moderator: Nov 10, 2009
  3. 然后我们重新来看我们的资金曲线会变成怎么样子?竟然变成下面这个图表的样子了!这种资金曲线的表现,是不可能让人投入资金进去操作的。

    [​IMG]
     
    Last edited by a moderator: Nov 10, 2009
  4. 那我们再看另外一个范例, 下面这个图看来很漂亮吧.

    [​IMG]
     
    Last edited by a moderator: Nov 10, 2009
  5. 可是我们check 了 "look inside bar backtesting"的这个选项之后, 再重新看equity curve,会变成下面这样.吓人吧. 如果有人是因为上面这张图漂亮的资金曲线而投入实际的资金的话,那么会得到的结果就是下面这样子。


    请注意,我并没有修改系统的任何程序代码,也并没有调整参数。唯一有调整的只有"Look Inside Bar Backtesting"的选项有没有勾选而已。所以请记得,以后当你们在做backtesting的时候,一定要记得check这个"Look Inside Bar Backtesting"。这样才会得到比较接近真实世界的回测结果。

    PS:1.我是用8.4版的,如果有人用TS2000i的话,应该也是有这个功能,只是名称不大一样而已。

    2.Range Breakout还是我最喜欢的系统之一,只是要选择市场&Time Frame来用而已。

    [​IMG]
     
    Last edited by a moderator: Nov 10, 2009
  6. Thx.Go ahead,buddy.
     
  7. 牛!
    早听说台湾有一个蓝帮,今天有幸一睹。
     
  8. blue兄,能不能说说那个“look inside bar backtesting”选项是如何影响绩效的吗?
    多谢
     
  9. 又学习啦:)
     
  10. 确实如楼主所说,用历史数据测试必须要考虑到K线内部的价格变动,无法用更细致的K线测试的话,就要用当前K线的收盘时的价格来做一些策略上的判断。

    谢谢楼主让我学习到TradeStation有一个这么好的功能:)
     
  11. 只是把功能打开绩效就相差甚远,
    那之前产生的讯号真的正常吗?有实际检查?
    个人对ts的backtest抱持:confused:
     
  12. 我不了解TS,不过我举个例子,比如说有这么一个规则“如果价格收于XX价位下就平仓”,而你基于日线进行测试,日线的收盘价价格在XX价位下,于是你并没有被平仓,第二天价格接着上涨,你获利大丰。。。可是在实际情况下,价格可能在当日收盘前探到了XX价位下,然后再收盘前又涨回到了XX价位之上,所以,在实盘时,你已经被震出了局,只能眼看着第二天的继续上涨与你无关了。

    不知道我的这个例子表达的是否正确 只是我对 backtesting的个人理解 其实这个问题在《高级技术分析》一书里也提到了,是测试中要避免的问题 呵呵
     
  13. 谢谢楼主无私分享!
     
  14. bluespeculat,我到您的博客去看了一下,颇有收获。其中还有一位参与讨论的howard,提及对于市场非随机性的测度,也是我想做但是还没有做的。希望多多交流。
     
  15. :cool:
     
  16. 这个问题我在一年前就已经指出了,下面回答yoyo2000的疑问,为什么开了和不开lookinsidebar会有这么大的差异:
    如果不打开这个开关,tradestation只计算hloc四个值,那么就会出现一个问题,假如说你是在开盘买入,在实际情况中你会先遇到最高价还是最低价,tradestation就只能猜了,ts的猜法如下:如果H-O<L-O 那么就假设你买入之后先遇上最高价,而非最低价。对于一些策略,尤其是突破型策略,买入之后遇上最高价是好的事情,获利平仓。如果不幸先遇到最低价,那么在获利平仓之前,可能已经被止损了。

    这就是为什么这个开关对获利目标和止损都在1个atr左右的策略的绩效影响非常巨大。
     
  17. 个人感觉这要看交易系统的规则的。

    比如说DT系统,在日线上交易,每天最多只能交易一次,那就没有影响。
     
  18. 我不明白楼主的意思。如果你的系统只在开盘时做交易,不做日内交易,也没有日内止损止盈,那个“look inside bar backtesting”选项怎么会影响你的业绩?

    是否是因为你默认了TS内部的止损止盈设置了?
     
  19. Bar Assumptions
    When tick data is not available, TradeStation makes certain assumptions about how eachprice bar was formed. These bar assumptions apply only when the Strategy uses stop and/or limit orders; they do not apply when it includes only on close or at market orders, as describedin the section above.
    After extensive research, a few rules were established to describe the “normal”behavior of bars. The Trading Strategy Testing Engine follows these rules in an attempt to simulate the market activity when there is not sufficient data available. However, these are market assumptions designed to improve the accuracy of the testing when there is not enough data available, and historical results will not always match realtime results. The assumptions are:
    1. The market traded at every valid price throughout the range of the bar.
    2. If the open price is nearer to the low than to the high (i.e., the open is in the bottom half of the bar), the intra-bar movement is assumed to be Open -> Low-> High -> Close, chronologically (see Figure 3-9).
    3. If the open price is in the upper half of the bar (i.e., nearer to the high than the low), the intra-bar movement is assumed to be Open -> High -> Low -> Close, chronologically (see Figure 3-9).
    所以说数据不能只买日线的,还要买分钟线的,就不用Assumptions了。
     
  20. 重新翻出这个帖子看看,结合上边大家的讨论,我对这个“look inside bar backtesting”选项是这样理解的,不对的地方请斧正:
    1、这个选项只对stop和limit单有效,对market单和close单无效。不管在哪个时间周期上;
    2、从逻辑上,这个选项对buy/sell next bar at open也无效;
    3、止损位置在该bar内不移动的时候,这个选项也无效;
    4、当策略在当前周期的bar内设定可移动的止损,比如,在15分钟bar上设定auto trailing Stop,由于这个stop实际上是跟随实时市场价格而移动,因此构成15分钟bar的实时价格移动路径就成为影响trailing stop,从而影响该头寸出场时机的决定因素,这就是选项选定与否,影响回测结果的原因。从这个角度来说,选择最小1分钟的数据也无法把这个影响消除,而只是将这个影响减小,只有选中1tick数据才能完全消除这个影响;
    5、可见,这个选项要发挥作用,需要的前提条件还不少。

    PS:this bar at Close类的指令也会因为假信号对绩效产生影响,当然,这个是另外一个话题了。