以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  python模块的porfolio的浮动盈亏会不会有bug  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=168532)

--  作者:投资老友-WAN
--  发布时间:2019/3/1 16:50:51
--  python模块的porfolio的浮动盈亏会不会有bug
我在回测时,用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
图片点击可在新窗口打开查看

--  作者:yukizzc
--  发布时间:2019/3/1 17:04:59
--  

你测试单品种合约,然后回测中不断输出这个浮动盈亏试下呢


--  作者:yukizzc
--  发布时间:2019/3/1 17:06:19
--  

另外你这个文件,横轴是各个品种合约,纵轴是时间序列吗??

单看数值很难说负的数字大是不是就是问题,建议最好用上面方法输出跟踪下


--  作者:投资老友-WAN
--  发布时间:2019/3/4 16:20:47
--  
测试单个品种,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)   
盈亏结果就不对

请分析一下



--  作者:yukizzc
--  发布时间:2019/3/5 9:54:19
--  

输出一下呢,我2楼也说了,输出输出

你平仓时候输出一下这个值,然后算一下对不对呢

有一些可能乍看逻辑没问题,可能后面还是有问题也说不定的