vn.py官网
开源量化社区
Member
avatar
加入于:
帖子: 18
声望: 1

请教,我写了一个简单的策略,9月份在SimNow测试了一周多,逐日和平仓盈亏有正有负。假期我下载了1分钟K线图重新跑了本地回测,回测结果连回撤都没有,两个差异比较大。可能是tick和1-min K线的差别和其它细节的问题。
由此我想到,BacktestingEngine的模拟实盘的真实度问题,在同样的操作前提下,是否在实盘能取得与本地回测相同的效果?交易所的计算规则(如先开先平)等是否得到完整模拟。(只是pnl的计算,无关撮合和滑点问题)
谢谢!

description

Member
avatar
加入于:
帖子: 3033
声望: 174

可以对比一下你的委托成交记录应该就可以了。
vnpy计算规则的模拟是没问题的,但是要对比的话,滑点和手续费就是最大的差别。回测是假设价格触到都能买到的,而实盘不是。如果有一笔开仓没买到,那么回测里平仓的时候实盘肯定也不一致的。
还有,请问你的策略是通过vnpy完全复刻了吗?请问你是基于一分钟K线的策略还是tick策略呢?如果是基于1分钟K线的策略,那你自己的策略下单就要基于一分钟K线。如果是tick级别,那回测时候也是应该用tick数据回测的。

Member
avatar
加入于:
帖子: 18
声望: 1

了解了,谢谢xiaohe老师。

Member
avatar
加入于:
帖子: 18
声望: 1

还想请问一下xiaohe老师,
我看了一下backtesting的代码,在calculate_pnl中,计算是依据下单的direction来设定pos_change,但是没有理会trade的开/平。如果是这样,对净仓方式的操作适用,多空永远有仓位的策略计算是否会不准确?

    for trade in self.trades:
        if trade.direction == Direction.LONG:
            pos_change = trade.volume
        else:
            pos_change = -trade.volume

        self.end_pos += pos_change

        # For normal contract
        if not inverse:
            turnover = trade.volume * size * trade.price
            self.trading_pnl += pos_change * \
                (self.close_price - trade.price) * size

description

Member
avatar
加入于:
帖子: 3033
声望: 174

不会的

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3

沪公网安备 31011502017034号