banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

RQAlpha バグ Issue#219

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)` に変更します。

これは最良の問題解決方法ではありませんが、最終的に最良の方法を見つけることができると思います。そして、これらの情報が役立つことを願っています。

ありがとうございます。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。