ビットコインの自動取り引きbotを作ってみた話

今流行りのビットコイン。儲かるならちょっと手を出してみるか〜〜〜〜と思って仮想通貨取引所zaifに登録してみました。仮想通貨取引所というのは、お金をコインに交換して株のように売買できるネットサービスです。

最初はシステムがよくわからなかったので200円ほどのコインを売ったり買ったりして0.05円儲かった!とかで喜んでいたのですが、次第に人の欲望はエスカレートしていきます。

 少しずつ取引額を増やしながら遊んでいたのですが、zaifのアカウントページを詳しく見るとなんとapi keysの項目があるではないですか

え、これってもしかしてお手軽にプログラムを書いて取り引きし放題なんですか!?神かビットコイン神サービスか?

botが毎日少しでもお金を増やしてくれるなら私は数年後には億万長者やで!!!!!!とすっかり興奮してしまい、自動取引botを作ることになるのでした。

 

結論からいうと自動取引は儲かるのか? 

私の実力では儲かりませんでした。儲かったらこんな記事書いてません。

あ、儲からないとは言っても、ここ数日の仮想通貨界隈はバブルで爆上げ状態でしたので、ある程度は儲かりましたよ。もちろん。

コインを買ってただずっと持ってるというスタイルに一週間近くbotを回して及ばなかった、という意味です。大変悲しい。

もちろん私が実装できなかっただけで、うまくやれば儲かる方法はあると思いますが。

 

そもそも市場が単調増加の時、最適な行動はただ持っていること

 大した成果が挙げられなかった原因の一つに、私がbotを動かし続けている間、ビットコインがほぼ毎日高値を更新する単調増加状態だったことがあるように思います。

値段が毎日あがるなら、ずっと持っているのが一番です。細かく売り買いしても、タイミングを逃せば売った時より高く買うだけになってしまいますから。

結構上下はしていましたけど、かなり値上がりしていたので、ただ持っているだけが十分効率的だったという気がします。

 

試したアルゴリズム1:コスト平均法

一日1%利益が得られれば、一年間で何倍になるでしょうか?1.01の365乗≒38です。10万円で初めても380万円になります。2%なら1億3000万円になります。

やばい。夢がある。人生勝組への道はここにあったか・・・・。ということで、一日1%から2%の利益率を目標に、アルゴリズムを試しました。

  •  手持ちの資産を24*60=1440分割して、毎分ビットコインを購入する
  • 2%値段が上がったら売却する

これだけです。非常に単純。ただし、このアルゴリズムだと一日にどれだけビットコインが値上がりしても最大で2%しか資産を増やすことができません。

また、このアルゴリズムで大金持ちになるためには、ビットコインの値段が一年間毎日ずっと2%程度上昇していかなければなりません。

一年間でビットコインの値段が今の1.02の365乗≒1300倍になることは到底有り得そうもない。

そこで、下記のように変更しました。

  • 手持ちの資産を4*60=480分割して、毎分ビットコインを購入する
  • 0.33%値段が上がったら売却する

このアルゴリズムは以下のような仮定をおいてます。

  • ビットコインの値段は一年間毎日約0.33%程度ずつ上昇し続ける
  • 一日に6回程度大きく値段を上下する

年間せいぜい0.33%上昇しても、年間で3.3倍程度にしかならない。一年でビットコインの値段が3倍・・・・ないとも言い切れない・・・。夢を見る程度の価値はあります。

でも毎日相場が爆アゲしてる今試すアルゴリズムじゃねーよなーーーーーーーということでボツ。超長期的に見るなら、資産を線形じゃなくて指数で増やすことができるので有効ですけど、目の前の大きな利益を捨てて試すことじゃあない。

試したアルゴリズム2:とにかく全力で売り買い

自分の持っている全資産を常に全つっぱで売り買いする男気あふれるアルゴリズム。試して見て思ったのですがアルゴリズム1よりは成績がいいです。

でも、ずっと持ってるだけのほうがもっとよかったです。南無。

ランダムに売り買いする非常に雑なアルゴリズムを組んでしまったため、市場が単調増加の時は、買いそびれる確率が高くて危険です。

いずれにしてもある瞬間に値段があがるのか、下がるのかを一定以上の精度で予測できない限り、ずっと持ってるだけ戦術には勝てない気がします。

試したアルゴリズム3:とにかく細かく上下に売り買い

これが一番可能性がある気がします。ビットコインって手数料が非常に安くて、0.01%とかだったりします(zaifの場合はなんと-0.01%)。

今の相場って手数料の割に値段の細かい上下が激しいんですよね。

少しでも値段が上下すれば、売り買いをするという取り引きを超高スピードで回せば、いくらでも利益を出すことが理論上可能・・・・・・・なはず・・・・・。

でしたが、売りそこねたり買いそこねたりした不良債権が溜まっていくせいで、資産の回転率が低くて全然ダメでした。

それにAPIをやたらと叩きまくるのあんまり好きじゃないしね。

まとめ

上記のアルゴリズムはすごくシンプルなので、もう少し改善できないかと思っていくつか調整をしてみたりしましたが、結局ずっと持ってるほうが強いという結論は変わりませんでした

今はまだ、上がり調子下がり調子がすごくはっきりしてるしね。

ある程度の精度で値段の上下を予測する仕組みがないと、単純なルールベースじゃ無理なんじゃないかなーという気がしています(3の方法はもしかしたらその限りではないかもしれないけど)。

 

まあ、まだ他にもいくつかやってみたいことはあるのですが、とりあえず自分の中で結論がでるまで書きません。

ちなみにこれまでのコードはgithubにあるので気が向いたら試して見てください。

github.com