Pandasの練習問題ーBTCFXのドンチャンブレイクアウトBOTの月別成績を集計する前回の記事「Pandasを使ってBTCFXの自動売買BOTの月別の成績を集計しよう!」の練習問題の回答コードです。今回のコードではPandasの集計方法を使って以下のような指標も加えておきました。・最終的な損失合計これらも自動売買BOTの成績を評価する際に参考にしてみてください。以下が1時間足でシンプルな30期間のドンチャンブレイクBOTを、2017年8月~2018年4月にかけて運用した場合の成績です。月別の成績で見ても、すべての月でプラスの成績が出ています。これはなかなか悪くない結果ですね。こちらの月別の成績は、あくまで「ポジションを手仕舞った日時」を基準に区切っている点に注意してください。2月の成績はプラスになっていますが、これは1月から持ち越したポジションで大きな利益が出ているからです。2月からBOTの稼働を開始していたら、2月の損益はマイナスになります。基本的には、前回の記事「Pandasを使って自動売買BOTの成績を月別に集計しよう!」で、例として解説したコードをそのまま使っています。難しいところは無かったのではないでしょうか。以下のところだけ、前回の記事には登場していなかった書き方なので、追加で解説しておきます。最大ドローダウン率とは、ある行の最大ドローダウンの金額を、その行までの最大資産額で割った数字です。特定の行までの最大値は、cummax()で取得できます。そのため、以下のような式になります。100,1)ただし実際に最大ドローダウン率を表示するときには注意が必要です。ドローダウン率の中から最大値を選ぶだけだと、最大ドローダウンの金額と時期が一致するとは限らないからです。「最大ドローダウン率でみると序盤の2月の30%が最大だけど、金額ベースでみると4月の300万円が最大ドローダウンだ」ということもあり得ます。このとき私たちが知りたいのは、最大ドローダウン率ではなく、「最大ドローダウン金額が最大だったときのドローダウン率」であるはずです。そのため、以下のように記述します。最大ドローダウンと同じ行のドローダウン率を取得records.DrawdownRate.loc[records.Drawdown.idxmax()]これで最大ドローダウンと同じ時期のドローダウン率を取得することができました。))pandasの表データを1行ずつループ処理したい場合、以下のように書くことができます。(インデックス)というのは、表データから特定の「行」を検索するときの「索引」のことです。0,1,2,3,4,5.....などの行番号が割り振られていますが、それだと検索するときに不便です。Gross/Rate/Drawdownなど)があるのと同じように、行にも名前を付けることができます。「2017/08」「2017/09」「2017/10」などのDate型のデータが指定されています。コメントをキャンセルメールアドレスが公開されることはありません。