スポンサーリンク

ビットコインのボット作成(その7)~ 最小二乗法を使ってみる!

前回まで、移動平均線のクロスを使う売買ロジックに、「レンジ相場で売買しない」と「長期トレンドを売買の参考に」というロジックを追加してきました。内心、いいボットが出来たつもりでいたのですが、まだまだ打たれ弱い事が発覚。そこで基本に立ち返り、移動平均線の位相ズレを減らすことで売買の収益を上げる方法を考えてみました。

 

※他のボット作成に関する投稿はコチラ

※取引所のAPIに関する投稿(サンプルあり)はコチラ

後付けのロジックは一旦外してみよう

いままでは、ある1日の価格チャートだけをテストサンプルとしてボットを作り込んできました。もう少し長い期間のチャートも試してみようと思い、7日間の価格チャートをサンプリングしてボットに食わせてみたわけです。↓これがそのチャートです。

結果:-60175円

そこそこいいボットができたと思ってたのに、ショックです。売買の様子を調べてみると、前回追加した「安く買って高く売る」ロジックが逆張りとして働いているようです。「安く買って高く売る」のロジックを外してみると…

結果:74965円

おおっ!マイナスから一気にプラスに転じました。
もしやと思い、前々回に追加した「レンジ相場では売買をしない」も外してみると…

結果:67385円

若干収益が落ちました。レンジ相場は意味があるという事なのか、それともこの価格チャートと相性がいいというだけなのか…

しばらくは、この2つの「後付けロジック」は一旦外すことにしました。

移動平均線の位相ズレを解消したい!

移動平均線はノイズのような細かな凹凸を平坦化しますが、平均値を使うので、下図のように期間の長い移動平均線ほど、時間軸のズレ、つまり位相ズレが生じるのです。

位相がズレると売買のタイミングがズレて、ズレの分だけ高く買って、安く売ることになってしまいます。

位相ズレを少なく凹凸を平坦化する方法があれば、売買の収益が上がるはずなんです。

移動平均線ならぬ「移動回帰線」で位相ズレを減らす!

僕が考えた、移動平均線よりも位相ズレを少なく平坦化する方法は、移動平均線の平均を計算する部分を、最小二乗法に置き換えたモノで、「移動回帰線」と名づけました。

最小二乗法は、誤差を含む測定点に対し、傾向を示すn次式を求める方法です。最小二乗法で求めた直線や曲線を「回帰線」と言います。

下の左図は、移動平均線で、n個の点の平均を順次プロットしたものです。これを回帰直線で行うと右図はのようになるのです。傾きを持った直線を使うので、より元のチャートに沿った曲線がプロットできるはずです。

下図は、移動平均線と移動回帰線の比較です。区間は両方同じ、赤:100秒、緑:5分、黄:50分です。右の移動回帰線の方が位相ズレが少ないのが分かると思います。

移動回帰線を使った取引の結果は

さて、「安く買って高く売る」と「レンジ相場では売買をしない」を外した10日間の仮想取引の結果は 67385円 でした。これを移動平均線から移動回帰線に置き換えてみると…

結果:190275円

おおっ!収益が上がってます。移動平均線から移動回帰線に変えただけです。奥が深いですね。まだまだ勉強が必要だと感じました。

スポンサーリンク