我在回测时,用portfolio = get_portfolio(code,2),建立品种合约code的投资组合信息对象,把浮动盈亏转给一个全局变量字典context.profit[code]=portfolio.pnl
然后每日记录各品种的浮动盈亏 在csv文件中,但是发现 浮动盈亏数值不对,正值时好像还对,负值就特别大。
file=open('D:\Python品种盈亏数据记录.csv','a',newline='')
csv_write=csv.writer(file,dialect='excel')
csv_write.writerow(context.profit.values())
开始分析以为会不会是连续合约转月时价格不连续造成的,但换了单月合约和指数合约回测还是有这个问题

此主题相关图片如下:捕获11.jpg
你测试单品种合约,然后回测中不断输出这个浮动盈亏试下呢
另外你这个文件,横轴是各个品种合约,纵轴是时间序列吗??
单看数值很难说负的数字大是不是就是问题,建议最好用上面方法输出跟踪下
测试单个品种,portfolio.pnl 得到的数值也不对。我的计算语句如下(止损语句时,同时累加本次平仓的盈亏)
#止损部分
if portfolio.buy_quantity>0 and (context.buy_price - close1[-1])>(context.LSS/10)*MMA2:
context.profitT+=portfolio.pnl
sell_close(context.s1,"market", volume=portfolio.buy_quantity)
没有办法,我直接用开仓平仓价格来计算就对了。
context.price=context.buy_price-close[-1]
context.price*context.multipliter1*portfolio.buy_quantity
如果计算价差的语句放在止损判断语句前,结果就是对的
如果用这样的止损语句:
if portfolio.buy_quantity>0 and (context.buy_price - close1[-1])>(context.LSS/10)*MMA2: context.profitT+=( context.buy_price-close[-1])*context.multipliter1*portfolio.buy_quantity
sell_close(context.s1,"market", volume=portfolio.buy_quantity)
盈亏结果就不对
请分析一下
输出一下呢,我2楼也说了,输出输出
你平仓时候输出一下这个值,然后算一下对不对呢
有一些可能乍看逻辑没问题,可能后面还是有问题也说不定的