まえがき
こんにちは、さつま芋です。
FXにおいて、自動売買ツールは悪者扱いされます。
その原因の大半は悪質な商材屋に由来している気もしますが…
しかし、自動売買システムは実際にどのような結果が出るのかを客観的に検証することができます。
今回はPythonで自動売買システムを最適化した結果を紹介します。
この最適化により、聖杯探しの思い込み(落とし穴)に気づけるかもしれません。
ゴールデンクロスとデッドクロス
最適化するのは単純移動平均線を使った、いわゆるゴールデンクロス、デッドクロスと呼ばれる手法です。
ドル円(USDJPY)の日足に対し、短期線(SMA_S)と長期線(SMA_L)の期間を変数にしました。
次の図が およそのイメージになります。
この図では、期間を短期5日間、長期15日間にしています。
短期線が長期線の上であれば買い(ロング)、下であれば売り(ショート)です。
ちなみに、このときの資金推移は下のようになりました。
returnsは最初に買って(ロング)から放置した場合の収益率、strategyは手法で売り買いした場合の収益率です。
returnsは1.168502、strategyは1.432432でした。
このままでも悪くない結果ですが、さらに最適化しました。
変数の最適化
細かい説明は割愛し、結果をヒートマップと呼ばれる色付きの表で示します。
このヒートマップからは、短期を4日間、長期を21日間にすれば利益を最大化できたことがわかります。
補足
検証期間は2022-01-01から2023-03-31までの約1年間です。
あいにく、スプレッドやスワップを含まないシミュレーションなので、実際は これほど理想的に運用できません。
少なくとも、短期線を14日間、長期線を30日間にするのは分が悪そうです。
最適化で正解を探そうとしてしまうと泥沼ですが、不正解を避ける参考にするならば有益だと思います。
同じようにPythonで試してみたいと思う人は次のサイトを参照してください。
アルゴリズムトレード入門 ~ python で自動取引を始めてみる ~ - GMOインターネットグループ グループ研究開発本部(次世代システム研究室)
あとがき
同じ条件のまま、ドル円の1時間足でもヒートマップ(色付きの表)を作ってみました。
明らかに赤い部分が多いです。
残念ながら、売り買いを逆にすると もっと赤くなります。
経験則というのが統計的な鋭い直感なのだとしたら、短期トレードで手法(聖杯)を探すのは初心者向きとは思えません。
以上、さつま芋でした。