我的程序开仓杠杆控制在2倍,如下面代码所示:
lots = Portfolio_CurrentCapital() / (open/Rollover()*ContractUnit()*BigPointValue())*2;
组合测试报告如下图如示:
从表中可看出(6个品种的起始日期均统一),分品种的最大开仓杠杆仅有2倍,但组合测试报告显示最大开仓杠杆为5倍。
我逐个品种找2022年8月15日的开仓市值和动态权益,6个品种的开仓市值合计为9744万元,6个品种的动态权益合计为5047万元,可以计算出此时的杠杆为1.93倍,远低于组合报告显示的5倍。
你的相关数据不太充分。我只能尽量分析一下
你的鸡蛋品种 ,最大开仓市值8000w左右,最大回撤2300w左右,最大回撤率63%。
按照你开仓两倍杠杆计算,你鸡蛋最大开仓的时候,权益大概是4000w,回撤63%,大概是回撤2400w左右,和最大回撤指标基本对的上。
那么当发生最大回撤的时候,鸡蛋的杠杆是,持仓市值(8000-2400)/权益(4000-2400)=5600/1600=3.5,可以看到这个权益已经从2升到了3.5。
在回撤过程中,杠杆变大是很正常的。
另外,汇总的数据是不是单纯的把每个品种的最大开仓杠杆加总计算。因为每个品种的最大杠杆不一定是同时发生的,也许汇总发生最大杠杆的时候,单个品种不一定是最大杠杆。
建议你如果还有疑问,可以通过输出日志的形式,把每一根bar上所有品种的持仓市值和权益全都输出一下,然后用序列变量记录一下累积的最大杠杆,进行对比
老师好,您说的鸡蛋应该是焦炭j9888。
您举行了最大回撤63%的例子,杠杆从2上升到3.5。但这个回撤63%并不是一次交易所发生的,每次交易止损后,又重新开仓,杠杆重新平衡到2倍。回撤的过程中,有不断的开仓和平仓,每次杠杆都会重新计算,所以您的结论:“在回撤过程中,杠杆变大是很正常的”并不能解释以上现象。
那我就无能为力了
老师,我按照你的方法,用代码把日记梳理出来,代码如下:
TotalEquity = Portfolio_CurrentCapital() + Portfolio_UsedMargin();
lots = TotalEquity / (open/Rollover()*ContractUnit()*BigPointValue());
FileAppend(\"c:\\\\双均线仓位日志测试\",\"品种为:\" + Symbol() + \" Date=\" + DateToString(Date) + \" 权益金额为=\" + Text(TotalEquity/10000) + \" 持仓价值为=\" + Text(lots*close/Rollover()*ContractUnit()*BigPointValue()/10000));
为简化,这次测试只用两个品种,如下图所示:
但两个策略的组合最大开仓杠杆还是1.5,如下图:
按策略提示,我到日志搜索2023年2月8日的情况,但显示杠杆仍为1,如下图:
只要使用了Portfolio_CurrentCapital() + Portfolio_UsedMargin()这种复利加仓的模式,最大杠杆貌似就会超出实际。所以我很好奇这个最大杠杆是如何计算出来的?
我转给研发相关同事看看