ソーシャルビットコインポートフォリオというサービスを作った話

ビットコインに関係する何かを作りたくて仕方がなかったので、ちょっと作ってみました。

SocialBitcoinPortfolio http://socialbtcportfolio.com/

概要

ビットコインとユーロで構成される資産の割合(ポートフォリオ)を閲覧者の投票で決めてもらうのがSocialBitcoinPortfolioのメインテーマです。ビットコインとユーロの交換レート(XBT/EUR)が上昇すると思う人にはビットコインの方に、下降すると思う人にはユーロの方に投票してもらうといった具合です。

例えばビットコイン/ユーロの投票数がそれぞれ120/80だった場合、その時のレートで全体資産の6割がビットコインとなるように市場で売買して割合の調整(リバランス)を行います。このリバランスは100時間に1回、システムによって自動で行われます。

初期資産は私の入金した100,000JPYで、2015年2月4日に1XBT≒27,500JPYレートで3.63686XBTにしました。

仕組み

このサービスで使用されるビットコインとユーロはKrakenというアメリカの仮想通貨取引所のアカウントで管理されています。もちろん、私(@tanapro)の口座です。

KrakenではAPIが公開されているので、ビットコインの売買をアプリケーション経由で自由に行えるわけです。

残高の証明

SocialBitcoinPortfolioでは、KrakenAPIで必要となるAPI-KeyとAPI-Secretを公開しています。これは私の口座に紐付いており、「残高読み取り専用」のキーです。これを使用してもビットコインの売買、送金といった操作は行えません。APIを使用すると口座にあるXBT/EUR/JPYの保有量がJSON形式で得られます。

API-Key: HLTTSLx7zoJCdnZnHa/C9DE+BiMy86zg7YKTJjKBG7h2wz5spek1sj1L

API-Secret: 7drFRUJx9wFsvu/nnECGUridGF/PORd6KlTywX7b3Rm+f9MAfGAJWSZ8fCkVyEmP37ejmlzqKeas9v6REF3B5w==

このキーを使った具体的な確認方法については、後日記事にしたいと思います。

ユーロを選んだ理由

Krakenで一番取引量の多い通貨ペアだからです。下の画像を見れば一目瞭然だと思います。

XBT/JPY

f:id:dsaki:20150218005703p:plain

XBT/EUR

f:id:dsaki:20150218005822p:plain

ではなぜKrakenを選んだのかと言うと、Kraken社は昨年11月に日本進出しているからです。 このおかげで、日本の銀行からの日本円での入金、本人確認などスムーズに行うことが出来ました。 (日本にも他に取引所はあるのですが、現状だと取引量があまりにも少なく高頻度の取引には向いてないと判断しました)

SocialBitcoinPortfolioが市場に与える影響

ビットコイン取引市場における流動性は、リアル通貨市場のそれに比べるととてつもなく小さいです。スプレッド(売りと買いの差)もかなりあります。このため、たとえ少量の取引であっても市場に与える影響はそれなりに大きいのです。

例えば、以下の売り板で3XBT分の成行買い注文を出すと、XBT/EURのレートは約0.2上がります。

f:id:dsaki:20150219154147p:plain

仮想通貨取引市場間で裁定取引をしている人は必ずいるはずので、Krakenでの価格変動は他の取引所へも波及します。

さて、SocialBitcoinPortfolio(以下SBP)では100時間に1回、サイトトップのタイマーが0になると取引所に注文が送られます。買い注文になるのか売り注文になるのか、また取引量はいくらになるのかはその時点でのポートフォリオ状況と投票の割合によって変わってきます。また、注文の形式は成行注文です。

ということは、SBPから送られる決定された注文に対して、他の市場参加者は先回りして注文を出せばいいわけです。上記の売り板を例に取ると、仮にSBPから約3XBT分の買い注文が数十秒後に送られる状況であった場合、208.67€までの売りをすべて買い、それをそのままSBPに売りつければ差額がそのまま利益となります。もちろん、これが通用するのはSBPの存在を知っている者が少ない場合に限ります。存在が認知されれば簡単に利益を上げることは難しくなるでしょう。

いずれにせよ、SBPは市場に対して流動性の供給を促す存在になるはずです。今はまだ小さいですが。

※正確にはタイマーの数字が0になってから最大15秒以内に注文が取引所へ送信される仕様です。

寄付受付中

SBPに関してほんの少しでもワクワクした、可能性を感じたという方は寄付をしていただけると大変嬉しいです。以下のビットコインアドレスで受け付けています。

1P2HTAzmeeks4BbGEvsXywtGtCpadLMq1S

Bitcoin Address 1P2HTAzmeeks4BbGEvsXywtGtCpadLMq1S

ビットコインを送金したことがないからテストで使ってみたい、という方も大歓迎です。

バックエンドについて

Scala + Play!Frameworkで動いてます。投票数、チャットの部分はPubNubというWebRTCを使ったリアルタイム通信機能を簡単に構築できるサービスを使用しています。サーバはHerokuを使いました。

今後の展開

3月中にiOS版をリリースします。 ビットコイン価格に関して議論できる場所を提供できるよう、今後も機能改善を重ねていきます。

===以下ポエム===

SBPを皮切りに仮想通貨に関連した、またはブロックチェーンを応用したアプリケーションを今後も作っていこうと考えています。既存の銀行システムに囚われずに価値/信用のやりとりが出来る未来、こんな素晴らしい世界を自分たちで作っていけるなんて最高にワクワクしませんか?

仮想通貨はまだまだ始まったばかりの技術です。数十年後、世界中で一般的に使用される通貨となるのか、あるいはマイナーな電子マネーと同じような扱いで終わるのか、今この記事を読んでいる皆さんのこれからの意識に掛かっています。