欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → python模块的porfolio的浮动盈亏会不会有bug

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2544人关注过本帖树形打印复制链接

主题:python模块的porfolio的浮动盈亏会不会有bug

帅哥哟,离线,有人找我吗?
投资老友-WAN
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:217 积分:390 威望:0 精华:0 注册:2012/11/3 10:14:55
python模块的porfolio的浮动盈亏会不会有bug  发帖心情 Post By:2019/3/1 16:50:51 [只看该作者]

我在回测时,用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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2019/3/1 17:04:59 [只看该作者]

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


 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2019/3/1 17:06:19 [只看该作者]

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
投资老友-WAN
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:217 积分:390 威望:0 精华:0 注册:2012/11/3 10:14:55
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2019/3/5 9:54:19 [只看该作者]

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

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

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


 回到顶部