以文本方式查看主题
- 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp)
-- 高级功能研发区 (http://www.weistock.com/bbs/list.asp?boardid=5)
---- python模块的porfolio的浮动盈亏会不会有bug (http://www.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楼也说了,输出输出
你平仓时候输出一下这个值,然后算一下对不对呢
有一些可能乍看逻辑没问题,可能后面还是有问题也说不定的
|