为什么股价和实际不符?


(adamzjw) #1

我的交易log里面有一个
2017-08-23 09:30:00 000931.SZA 买入 400 12.46
这个股近期都没有到过12块,怎么会买入价是12.46呢?


(小Q) #2

按道理来说,交易日志不会有买入股票输出,你可否截图给我们看一下?

日志log里面是接入的回测数据,回测数据采取后复权,因此你看到的数据是后复权数据(12.46)。
近期股价如你所说,价格在12元以下,这是真实交易价格。真实交易价格=后复权数据 / 复权因子。

平台数据:

其他数据源:

image

可以发现,BigQuant平台数据和其他数据源是一致的。

之所以在回测里面采取后复权方式,是因为为了更好的考虑到分红、派息等措施,让回测更接近真实交易情况。


感觉有点什么不对
(adamzjw) #3

ok 明白了!谢谢详细的回答。

回测的UI里面有一个就是交易详情,那里可以查看回测期间的买入和卖出。

这样就有一个问题了,如果显示的数据是后复权数据,感觉我的交易成本就不是正确了,现在的计算4手的成本是4984.92,但实际上我的交易成本应该是3200?


(小Q) #4

你好,其实交易成本是没有问题的。你可以这样理解,在策略回测中,交易成本设置如下:

context.set_commission(PerOrder(buy_cost=0.0003, sell_cost=0.0013, min_cost=5))

其中,买入费用为万三,卖出成本为千分之1.3,不足5元按5元收取。不管回测使用什么价格,费用都是成交金额的一个百分比,因此这里并不会有问题,你觉得呢?(可能有点差异的是,当资金量很小,很多笔交易不足5元,回测情形可能会略微低估)。

最重要的是,交易成本这两个参数的确定(买入和卖出费用比例),一般是根据实际交易总结,策略回测的时候也可以吧冲击成本也估算进来,通过设置较大的费用比例来保守估计。


(adamzjw) #5

我指的成本是指持仓的成本。如果真实是8块钱的价钱 一手800块,但回测的价格是12块 一手1200块。如果我现在只有900块系统就认为我无法买入了?
当时,如果资金量很多的时候,这个可以忽略不计。
(但如果非模拟的时候,资金量总是有限的)。


(iQuant) #6

你好,回测和实盘会有一点点你说的这个差异,但影响不是很大。
在系统里,不一定是整百股票数量交易,也可以实现个位数的交易。


(dawnchime) #7

影响还是比较大吧?万科之类的股票后复权价都是几千块了,如果回测时间比较近的话基本买不到几股了,和真实情况差距还是挺大的吧?
建议能否考虑回测买卖时用真实价格呢?


(小Q) #8

你说的很对。如果后复权价格很大的话,确实买不了几手股票。这里建议扩大capital_base。关注策略的整体收益率。
回测如果使用真实交易价格,分红派息等股利政策就没有考虑到,因此回测结果我们认为是有偏差的。