特にモノアイと関係ないけど暗号通貨周りとかで気になったことを適当に書くブログ

FXか暗号通貨辺りの気になったことをたまに書きます。

国内仮想通貨取引所のビットコイン積立の手数料無料が実質嘘なのでFTXで実質手数料無料の自動積立をする話

前書き

国内大手のbitFlyerさんでもビットコインの積立サービスが始まりましたね。

ところが内容を読むと

積立手数料
無料*1

※1 「かんたん積立」は販売所同様、実質的に 0.1% ~ 6.0% の手数料を含んだ購入・売却価格をお客様に提示しております。販売所手数料の詳細はこちらをご覧ください。

積立手数料を無料と書いていますが、販売所価格で購入させられることになるので、実質的に0.1%〜6.0%の取引手数料がかかるようです。
積立サービスでそれはしんどい。
国内取引所をdisって海外取引所に誘導するような形になるので抵抗があったのですが、流石にこれはしんどいので海外の板取引で自動で買える方法の紹介をしていきます。

方法は香港を拠点にしたFTXという取引所でのQuant Zone(クオンツゾーン:プログラム知識がない人でも簡単に自動売買できる機能)を利用します。
これを使って売買手数料なし、板取引で指値買い、1口数ドル〜数万ドル、毎週/毎日/特定の曜日などの好きなタイミングで自動積立が可能になります。
本記事ではQuant Zoneでの自動積立のサンプルを公開していきます。

諸々分かっているぜという方はサンプルは記事の下の方にあるので、ガッツリ下にスクロールするか目次から飛んでください。

FTXを使っていない人向けの前置き

海外取引所ってやばそう…という方、はい。やばいです。ピンキリで自己責任の世界です。裁判沙汰になるとほとんどの人は手が出なくなるリスクがあると思います。
ヤバいなと思ったらすぐお金を抜く覚悟で使う必要があるので、その辺りに抵抗がある人は利用を控えてください。

しかしその中でも運営の身元がハッキリしていて、お金持ちで破産や夜逃げしなさそうな所を一社あげろと言われたら自分はFTXに一票入れます。
CEOがバイデン大統領にもガッツリ献金している(GoogleAmazonよりも高額の献金!)ので2021年時点ではまぁ大丈夫だと思います。
少なくともBitMEXのような日本人締め出しやCEOに令状とか規制でやられるとしたらBinanceのほうが先かなぁ…というのが個人的な印象。

ブルームバーグの参考記事
www.bloomberg.co.jp


あと、基軸の通貨がUSDです。米ドル。この記事もUSDで積み立てる事を前提としています。
なので、どちらかというとアルトコインのトレードとかでUSDやUSDTを儲けた人がそれを原資にビットコインを積み立てる場合や、Funding RateやレンディングでUSD定期収入を得ている人がBTCを積み立てるというのに向いた記事です。

…よく考えたら既存のFTXユーザー向けの記事では。

FTXに登録

メールアドレスでの登録は即日、各種の機能をフルに使うにはKYCレベル2を推奨しますが、日本の免許証でKYC2まで登録可能です。
この場合、海外の取引所に自分の個人情報を預けるという意味をよく考えてから申請してください。
いやまぁ国内取引所でパスポート画像とか流出しちゃった可能性のある所もあるのでまぁアレなんですけど。

自分の場合、KYC2は申請翌日に通りました。2020年のまだ利用者が少なかった頃の話なので、今は数日かかると思います。
2週間以上連絡が無かったのでサポートにメールで督促したら使えるようになった、という話も聞いたのでご参考まで。

以下のリンクから登録すると手数料5%オフで使えるようになります。まぁこれ読んでいる人はもう使っているか、もっと良い条件のリンクを踏んでますね…
(※登録してくれた人が支払った手数料の25.00%がFTXから紹介した人に支払われるので、その辺りがモヤモヤする人は直接登録してください。広告費が浮いてFTXが喜びます。)

ftx.com


あとGoogle検索で開こうとするとたまに偽サイトが広告に出てくるのでクリックしないように注意してください!

サブアカウントの作成

FTXではサブアカウントという機能があって、自分の口座を細かく分別できます。わざわざメールアドレスを複数作って複数アカウント登録したりする必要がありません。
それぞれのサブアカウントは証拠金なども独立しており、どれか1つのサブアカウントがゼロカットされてもメインのアカウントや他のサブアカウントに影響が出ません。
そのため、メインアカウントからサブアカウントに少額入金してハイレバで遊ぶ人も多いと聞きます。
(極端にUSD残高がマイナスになったサブアカウントがあったりすると、全体で出金が制限されたりはします。)

今回はBTC積立専用のサブアカウントを作ります。
後述するQuant Zoneで何かしらミスがあってもメインのアカウントに影響がでないようにするためです。
人間、「0.01BTC買うつもりが0.1BTC買ってしまった」…みたいなミスもあるので念のためですね。
後は売買の履歴もサブアカウント毎に独立しているので、後々管理が楽というのもあります。

f:id:mono_i_love:20210207072833p:plain
積立用サブアカウントの作成01:サブアカウント作成画面を開く
f:id:mono_i_love:20210207072909p:plain
積立用サブアカウントの作成02:サブアカウント作成ボタンを押す
f:id:mono_i_love:20210207072926p:plain
積立用サブアカウントの作成03:サブアカウント名(任意)を入力して作成ボタンを押す
f:id:mono_i_love:20210207072947p:plain
積立用サブアカウントの作成04:メインアカウントから作成したサブアカウントに送金する。図は1000USD送金する場合の例
f:id:mono_i_love:20210207073007p:plain
積立用サブアカウントの作成05:メインアカウントから作成したサブアカウントに移動する

売買手数料を安くする

2021年2月時点でFTXの売買手数料はMakerであれば0.02%です。
Makerなので、指値買い注文で買い板をだし、他の人がその買い板を食ってくれれば(≒成行で売り注文をぶつけてくれれば)0.02%という事です。
「リンクを踏むと手数料5%オフ」というのはここに効きます。0.02 × 95% = 0.019% になる感じです。成行ならTakerで0.07 × 95% = 0.0665%

f:id:mono_i_love:20210207060014p:plain
FTX売買手数料

Fees – FTX Exchange


国内の大手取引所は板取引の売買手数料が0.15%からの所もあるので0.02%で十分お安いですが、FTXの場合は同取引所が発行しているFTTトークンを25枚保有してステーキング(正確ではないですが、シンプルに言うと一定期間売買や送金できない状態にロックする事)するとそのMaker手数料もゼロになります。
「実質手数料無料」と表題で謳っていたのはこの点ですね。

f:id:mono_i_love:20210207060852p:plain
FTT Stake画面

上記のようなステーキング用の画面が用意されているので、25FTTを購入してここでステーキングするとMaker手数料がゼロになります。
ただし、現在の相場は地合いが良く、FTTの知名度や人気も向上してきたのでFTTは高騰気味です。

f:id:mono_i_love:20210207061157p:plain
FTT/USDの日足

現時点だと 15USD/FTT × 25FTT = 375 USD 程かかります。
手数料を無料にするために4万円近く支払うかは十分に検討をしてください。
積み立てのためだけであれば高い買い物になると思います。
ただし、積み立て以外でも頻繁にFTXを利用するのであれば十分検討の価値はあるでしょう(BTCのレバレッジ20倍取引で成行注文を多く使う、IEOに参加したい、等々)。

2021/2/20 追記:FTT/USD価格が高騰して30ドルを超えてしまいました…25FTTで割引を受けるためには8万円必要です…つらい

Quant Zoneについて

「プログラム知識がない人でも簡単に自動売買できる機能」と説明しましたが、その通りで簡単な計算式を入力して売買ルールを作っておくだけで最短15秒間隔で売買をしてくれます。
後述しますが、この15秒はかなり当てになりません。

Roughly 15 seconds, each rule is intended to check whether its trigger is true. If so, it is intended to execute its action.
Quant Zone Rules FAQ – FTX Exchange

今回はこの機能を使って、「板取引で指値買い」「1口数ドル〜数万ドル」「毎週/毎日/特定の曜日」で購入するためのサンプルを紹介します。

基本的には以下の2つのルールを作成して実行します。

2つ目の購入ルールは「毎週/毎日」の2種類紹介するので、ご自身の積み立てプランに合わせたものをコピペして改変してください。
では積み立て用のサブアカウントに移動しているのを確認してからQZの画面を開いてルールを作っていきましょう。

f:id:mono_i_love:20210207064852p:plain
Quantz Zone画面を開く

Quants Zone(QZ)のサンプル

共通で使用する 「ビットコインの残高をチェックするルール」

1つ目のルールです。このルールは毎日指定した時刻にサブアカウントの口座の中にあるBTCの残高を記録します。
この記録した残高に基づいて当日にBTCを積み立てていきます。
ここでは日本時間午前9時頃に残高をチェックするルール「BTC残高チェック(日次)」を示します。(Rule Nameは自分が分かりやすい名前を付けてOKです。)

Trigger

まずは実行条件(Trigger)を設定していきます。
この条件を満たしていると最短15秒おきにルールを実行してくれるというわけです。

f:id:mono_i_love:20210207064929p:plain
Ruleを作成する
f:id:mono_i_love:20210207065001p:plain
ビットコインの残高をチェックするルール_01

↓コピペ用

hour == 0
Actions

条件を入力できたら続いて実行内容(Action)を入力します。ここではActionを2つ作ります。
1つ目はBTCの残高を記録するAction、2つ目は翌日までルールを実行しないように一時停止(Pause Rule)するActionです。
2つ目のActionがないと、最短15秒おきに延々とルールを実行し続けるので気をつけてください。

f:id:mono_i_love:20210207065034p:plain
ビットコインの残高をチェックするルール_02

※上図のようにActionを2つ以上設定する場合は、「ADD ACTION」ボタンを押下してAcitonを増やします。
※Pause Ruleを「24Hours」や「1day」にすると毎日少しずつ実行時間が後ろにずれます。これはQZの実行タイミングがあくまで最短15秒おきのためです。30秒以上の間隔になる事もざらです。
(実行間隔はかなりばらつくため、ピッタリ24時間だと「9:00:00実行→翌日9:00:30実行→翌々日→9:01:02実行」のようにずれていきます。何かしらの障害で数分止まるケースも頻繁にあるので余裕を持った設計がおススメです。)

↓コピペ用

today_btc_balance
balance("BTC")

ルール作成が終わったら「SAVE AND RUN」で実行が開始されます。
(ルールは保存したいが実行したくない場合は「SAVE DRAFT」で下書き保存をしておきましょう。)

毎日10ドル積み立てる場合のサンプル

2つ目のルールです。ここでは日本時間正午12時以降に毎日BTCの指値買い注文をだす「BTC積み立て」ルールを示します。
正午にしている意味は特にありませんが、先に書いた通りQZの実行時間はずれやすいので、少なくとも1つ目のルールの実行時間から1時間以上は後にしておくとトラブルが少ないのでおススメです。

Trigger

まずはTriggerから。
時刻の指定と、USD残高の確認と、1つ目のルールで確認したBTC残高と・保有しているBTCの枚数の比較を条件として入力します。
具体的には「正午12時以降で、口座の残高が10USDより多く、朝に確認した時よりBTCの枚数が増えていない時(に買い注文を出す)」という条件です。

f:id:mono_i_love:20210207071213p:plain
毎日10ドル積立ルール_01

↓コピペ用

hour >= 3
and balance("USD") > 10
and get_variable("today_btc_balance") + max(10/bid_price("BTC/USD"),0.0001) > balance("BTC")
Actions

続いてActionを。このルールではBTCの指値買い注文を出すActionの1つだけです。

f:id:mono_i_love:20210207071350p:plain
毎日10ドル積立ルール_02

↓コピペ用

get_variable("today_btc_balance") + max(10/bid_price("BTC/USD"),0.0001) - balance("BTC")

→ max(10/bid_price("BTC/USD"),0.0001) とすることで、最低でも0.0001BTCを買い付けるというCondition(条件)にしています。
なので、BTC価格が10万ドルを超えてしまった場合は毎日0.0001BTCを買い付けるようになってしまいます…つらい

bid_price("BTC/USD")

Post Onlyなどの細かい部分は画像を参考にしてください。

1つ目のルールと2つ目のルールを組み合わせた実行例です。

f:id:mono_i_love:20210220121945p:plain
毎日10ドル積立ルール_実行結果

BTCの呼び値が0.0001BTCなので7ドルくらいしか積み立てできていないですね…
こういう場合は1回ごとに積み立てる金額を増やすしかないので、ちゃんとドルコスト平均法したい方は額を増やすか、頻度を下げて毎週100ドル積立などを検討してください。

また、Order TypeLimit OrderからMarket Orderに変更すれば指値注文ではなく、成行注文に変更可能です(Post Onlyも外しておく)。
手数料を多少払っても(Max: 0.07%)指定した時間に購入したい場合はこちらがおススメです。うまくアレンジしてください。
時刻を指定する「hour >= 3」 「hour == 3」 「hour >= 3 and hour <= 6」 などに限定して、意図しない時間帯に動かないよう安全を図るのも良いと思います。
このあたりを個人の裁量で決めれるのがQZで自動積立する場合の魅力の1つです。

毎週月曜日に100ドル積み立てる場合のサンプル

こちらは2つ目の「BTC積み立て」ルールとほぼ同じです。上で作った2つ目のルールのTriggerとActionを以下のように書き換えればOKです。

Trigger

↓コピペ用(conditionにday_of_weekの設定を追加し、10ドルの部分を100ドルに書き換える)

day_of_week() == 0
and hour >= 3
and balance("USD") > 100
and get_variable("today_btc_balance") + max(100/bid_price("BTC/USD"),0.0001) > balance("BTC")

※day_of_week() : UTC day of the week as an integer, where Monday is 0 and Sunday is 6UTC day of the week as an integer, where Monday is 0 and Sunday is 6

平たく言うと月曜日は0、火曜日は1、…日曜日だと6の値を返します。
day_of_week() == 0 なら「月曜日の時」という条件になりますが、UTC基準なので日本時間だと「月曜日午前9時から火曜日午前9時までの間」という条件になります。
なので、上記のConditionだと
 ・日本時間の月曜日午前9時~火曜日午前9時の間、かつ
 ・日本時間正午12時以降、かつ
 ・USD残高が100より多い、かつ
 ・今日の朝チェックしたBTC残高から100ドル分のBTCが増えていない時
という意味になります。

Actions

↓コピペ用(order_sizeの10ドルの部分を100ドルに書き換えるだけ)

get_variable("today_btc_balance") + max(100/bid_price("BTC/USD"),0.0001) - balance("BTC")


このようにQZの自動積立はアレンジがかなり効きます。
毎週月・水・金に買い付ける、日足更新確定前に毎日買い付ける、指値ではなく成行で買い付ける…などなど戦略に合わせて独自のルールをお使いください。
みんなが同じルールで一斉にやりだすと…こう…あれなので…

また、ルールを読めば分かっていただける通り、このルールだとサブアカウント口座内のBTCを他所に送ったりするとガンガンBTCを買うので気をつけてください。
その場合は、2つ目の指値買いする方のルールを止めておく必要があります(再稼働させる場合は翌朝9時以降にONにすればOK)。



末筆ですが、書くまでもなくこれらは自己責任で行う必要があります。
Ruleの書き間違い等でQZが暴走したり、それによって損失を被る可能性は十分にあるので気をつけてください……はい、私も結構暴走させて冷や汗を流しながら使っています…

この辺の諸々のリスクを背負ってくれるならそれなりに手数料を払っても国内取引所で良いかな、と判断されるならそれはそれでアリだと思います。
というか、この記事を読んでよく分からんなと感じたら国内取引所を使った方が良いです。

以上です。