Pingback https://github.com/ricequant/rqalpha/issues/219
こんにちは、RQAlpha チーム
RQAlpha は本当に効果的な価格バックテストツールです。
バックテスト結果をプロットするためにコマンド `# rqalpha plot someresult.pkl` を使用する際に問題が発生しました。空のウィンドウが表示されました。この問題を解決しようと試み、興味深いことを見つけました。
`rqalpha/rqalpha/mod/rqalpha_mod_sys_analyser/plot.py` の 52-53 行目にて
portfolio = result_dict["portfolio"]
benchmark_portfolio = result_dict.get("benchmark_portfolio")
print portfolio.index
print benchmark_portfolio.index
portfolio.index と benchmark_portfolio.index を出力することで、理にかなわない違いが見つかりました。
![image](https://user-images.githubusercontent.com/4476941/33165321-59a13c02-d071-11e7-80e1-b41a5fbdd6db.png)
https://github.com/pandas-dev/pandas/issues/8614 によると、pandas > 0.15 で作成された DatetimeIndex がある場合、matplotlib はプロットできないと言われています。
一時的な解決策を見つけました。そして、最終的にプロットが正常に機能するようになりました。
`index.to_pydatetime ()` を使用して、`DatetimeIndex` 型のインデックスを明示的に Python の `Datetime` 型に変換します。
例えば:`rqalpha/rqalpha/mod/rqalpha_mod_sys_analyser/plot.py` の 152 行目を修正して、`ax.plot (portfolio ["unit_net_value"] - 1.0, label=_(u"strategy"), alpha=1, linewidth=2, color=red)` を `ax.plot (index.to_pydatetime (),portfolio ["unit_net_value"] - 1.0, label=_(u"strategy"), alpha=1, linewidth=2, color=red)` に変更します。
これは最良の問題解決方法ではありませんが、最終的に最良の方法を見つけることができると思います。そして、これらの情報が役立つことを願っています。
ありがとうございます。