全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
关于999指数映射回测
2024-05-25 12:51

如何获得比较准确的回测报告?比如999映射运行的都是当下的主力合约的价格,而回测报告是999指数的价格相差比较远,获得的回测盈利结果相当于打个6折还不只,用连续合约回测中间还有复不复权的问题,又增多交易次数。既然TB已经推算出当下主力合约是哪个,能否把指数映射价格数据直接对应当下合约价格数据获得一个回测报告呢?

Phoenix129

建立2个图层:

【图层0】:用888连续合约,你可以不复权,因为这个图层只是给你用来交易,以及生成回测报告的。因为888是直接挂钩当前最新主力合约的,所以盘口价格与真实价格一致,回测与实盘一致性也很高。至于你提到的复不复权的问题,跟你没有关系,因为从你的需求来看,你的策略的交易决策依据的是指数999,而不是888,所以888不复权,这样还简单。至于主力合约变更导致是移仓换月的增多交易次数,这个应该是交易规则的必然结果,与你具体是使用999指数,还是使用888连续合约没有关系,所有人都是一样处理的。

【图层1】:用指数999,进行趋势判断,发出【开仓】【平仓】的交易信号,但是执行这个交易信号还是放在【图层0】上面。

If(Data1.开仓交易条件 == 满足){
    Data0.Buy(1,0);
}
If(Data1.平仓交易条件 == 满足){
    Data0.Sell(0,0);
}
2024-05-25 14:17
robertfeng
@Phoenix129

好办法,请教一下是怎么处理主力换月的?每次换月时,自动进行持仓转移操作一下么?还是直接清仓

2024-05-25 16:39
Phoenix129
@robertfeng

(1)换月移仓 方法一 参考:

https://www.tbquant.net/forumDetail?cur=tbquan&id=10658&cid=undefined

(2)价差移仓参考:

https://www.tbquant.net/helper?navigate=tfts&cid=2561

(3)换月移仓 方法二:当委托映射变更为新的主力合约时,图表虚拟账户会触发移仓换月,然后头寸监控器来实现资金账户的头寸仓位与虚拟账户的头寸变更保持一致

https://www.tbquant.net/helper?navigate=tbquant&words=&cid=672

另外代码里面初始化要设置一下

    //=========除权换月相关设置==============
    AddDataFlag(Enum_Data_RolloverBackWard());    //设置后复权
    AddDataFlag(Enum_Data_RolloverRealPrice());    //设置映射真实价格
    AddDataFlag(Enum_Data_AutoSwapPosition());    //设置自动换仓
    AddDataFlag(Enum_Data_IgnoreSwapSignalCalc());    //设置忽略换仓信号计算
2024-05-25 19:16
robertfeng
@Phoenix129

赞,谢了

2024-05-26 11:48
justinshan
@Phoenix129

@Phoenix129 如果888合约不复权的话,回测报告是不是包含了换月跳空带来的损益,会自动处理换月吗?如果后复权的话,回测报告也和实盘不一致吧?

2024-09-15 07:19
gougouer521

谢谢,其实我只想要一个指数映射当下主力合约的那个回测报告。连续合约不复权并不准,复权了也不准。并且用连续开平仓位置和指数位开平仓置并不完全相同。

2024-05-25 15:45
Phoenix129
@gougouer521

(1)其实我只想要一个指数映射当下主力合约的那个回测报告

分2个图层,指数图层就是决策用的,连续图层就是执行和回测报告用的。

因为这个方法符合你最初描述的策略逻辑,即999用来看盘,委托时映射到主力合约上去交易,不就是这样的交易操作流程吗?然后你遇到的问题和困惑,不就是因为,你只有1个图层的999数据源,因此得到的回测报告盈亏情况都是按照999指数的开平仓信号得到的,但是你实盘不可能用999直接交易,因为他只是一个指数,不是具体可交易的商品,所以映射了具体的主力合约,然后你现在希望得到的,不就是用这个具体的主力合约开平仓的交易回测报告吗?

(2)连续合约不复权并不准,复权了也不准。

这句话最大的歧义点,就是准不准,你是用什么标准来判断的。我举个例子:

【第1步】10:00:00时 999指数点位是1000点,并且满足了 开仓条件了,此时我映射到主力合约用主力合约的最新价990元开仓1手。

【第2步】11:00:00时 999指数点位上涨到1010点上涨了1%,并且满足了 平仓条件,此时我再次映射到主力合约用主力合约的当时最新价995元平仓1手,主力合约只上涨了0.5%。

然后在你内心深处就认为连续合约用不用复权都不准,因为000指数上涨了1%,888连续只上涨了0.5%

如果你是这样思考问题的,我觉得你可能和下面的同学的问题差不多

https://www.tbquant.net/forumDetail?cur=tbquan&id=12880&cid=undefined

000指数也好、999指数也罢,他只是一篮子的品种以持仓量作为权重系数加权得到的该品种整体的平均点位,肯定与个体品种不一样。

(3)并且用连续开平仓位置和指数位开平仓置并不完全相同。

所谓【位置不同】,我猜测你真正想表达的意思是,当指数发出交易信号的时刻t1,指数的K线形态、趋势特征,与时刻t1的连续合约的K线形态、趋势特征,并不完全相同。

那肯定不可能相同啊,一个是整体样本的形态,一个是某一个个体形态。

因为你现在的交易操作手法,就错了,如果你要得到交易与做决策的比例、形态完全一致,那就不是你需求描述的那样 用指数去映射连续合约来交易,而是自己构建一个ETF去交易。

这个功能应该就是TBQ3的自定义指数,他与000指数、999指数不同之处在于,自定义指数不仅可以看盘、看趋势、看资金流入品种、参考的用途,最关键的特点是他还可以按照创建自定义指数时候的一篮子的个体合约的权重比例,进行自动批量下单交易。

所以我建议你先好好学习以下视频:

(1)000指数是什么:https://www.tbquant.net/TrainDetail?id=413

(2)888连续是什么:https://www.tbquant.net/TrainDetail?id=414

(3)999指数是什么:https://www.tbquant.net/TrainDetail?id=418

(4)TBQ3自定义指数:https://tbquant.net/helper?navigate=tfts&cid=2591

(5)刘老师认为的TBQ3的特色功能之【自定义指数】

http://vod.tbquant.cn/a06002ea18e071ef89620764b3ec0202/65713cd4c65f4b3fbc4032dd8d97f6f6-6dfdbf27a4a3301deef2ad938a3bf6af-od-S00000001-200000.mp4

直接拖到 01:29:06处观看

http://vod.tbquant.cn/20e3acaa18e171efbfb25420848d0202/e0b5a3a98aa94e6c90c4c5f393f9f95a-de383d81b876f2c2370e75d7e609d58c-od-S00000001-200000.mp4

接上面视频

顺便提一句,可能即使使用自定义指数功能创建自己的ETF,也无法完全构建000和999指数一样的ETF,原因就是000和999的 商品合约成分占指数的权重,会随着成分合约的持仓量变化,权重发生变化,但是TBQ3的自定义指数目前应该还不支持这种动态权重的指数(以后会不会支持我不知道),所以在创建自定义指数之初,一开始,就固定、设置好,成分合约占自定义指数的权重比例,创建完成后就固定不变了。

而且如果你不是做简单少量品种的套利策略、或者为了资产组合对冲需求等等,纯粹是因为999指数回测看起来很爽。那我接下来可能就是泼冷水了,因为成分品种一旦多了,即使下单可以通过自定义指数实现自动化批量下单,可是到了交易所撮合系统那里,可不是一定能成交的,你的成分品种越多,总会出现对你有利的成分合约的报单一直成交不了,对你不利的成分合约报单立马成交,这样一来,你实盘与回测报告的剪刀差就会进一步扩大。

上面说的主要还是技术层面上需要面对和解决的问题,还有一个更要命的就是资金层面的问题,我们知道交易一个品种合约的最小交易单位是1手,然后你自己构建的自定义指数的每个成分品种的权重如果不相等,那么问题来了,即使权重比例最低的品种每次交易的时候,也要1手,没错吧!如果另一个成员品种的权重比例是最小权重的那个品种的1.3倍,但是你总不可能交易1.3手对吧,要么2手,要么1手,但是2手是1手的2倍而不是1.3倍,怎么办?为了保证你的指数和实盘理论上一致,你只能整体抬高每次交易的手数,最低权重交易10手,这样1.3倍的品种交易13手,这还是2个成分合约,一般000指数如果有10个成分合约的话,你自己想想光1次交易的合计的量需要多少保证金。所以为什么ETF要大资金、机构才能玩得动,不仅要解决基金净值与指数之间的跟踪误差,而且完成1次一篮子交易品种的资金量是很大的,当然机构也不会全是自有资金,也会以打包切片的方式公募发行。

所以,如果你自己没有两三把刷子,解决好撮合系统在处理多个品种委托交易带来的不利影响的应对策略,以及异步成交的问题的把控能力,自己也没有相应的撤单风控,那我还是衷心建议你,抛弃幻想,还是先把888单个合约的技术分析功底练好。

2024-05-25 18:17
gougouer521
@Phoenix129

谢谢,明白了,讲解的非常具体清楚,点赞!

2024-05-25 21:57
kyover

要不给你开个专栏吧,你这都是精品贴了

2024-05-27 10:04
Phoenix129
@kyover

刘老师,见笑了。我这是关公面前耍大刀,我肚子里这点货还不都是从您那里学到的九牛一毛的知识。

2024-05-27 10:51
wgy_king
@kyover

刘老师给他开个专栏吧

方便大家查阅

风格又比刘老师平易近人

哈哈哈

2024-05-27 17:13
kyover
@wgy_king

不过开了专栏,也不一定有用,我的专栏内容也很多,每天还是有很多人问专栏里的内容。

实在是回不过来。

2024-05-28 08:30
y1582809

那实盘交易用000指数还是888指数?

2024-06-14 17:59
您未登录,请先 登录注册 后发表评论
顶部