
高頻度botを雑に作るイメージ
どうもこんにちは。
仮想通貨botter3年目の片道切符マンです。
絶賛スランプ中!
というより今まではバブルに偶々ほんの少し乗れただけの可能性が極めて高いですな。
では本noteのテーマ「高頻度botを雑に作るイメージ」に進んで行きたいとぅおぉもいます!
※本記事でのデータ、グラフ等はフィクションです。
※イメージを掴む為に適当に書いたものです。
まずは雑にテーマ決め。
スプレッドだけを使って高頻度botを考えてみる。
スプレッドが以下のように変化した時を考える。
この変化が起こったのは何故か、また、その変化からその先の動きを予想できるか考える。
まずこの変化が起こったのは下記の赤部分の売り板がなくなったという事。
つまり「赤部分の売り板が逃げた or 成行買いが赤部分の板を食った」のいずれかとなる。
いずれの場合であったとしても、少なくともその瞬間は価格が"上がる"と考えた人がいたから「逃げた or 食った」はずですね。
上がりそう!
↓
出してた売り板をキャンセルしないと! or 成行で買わなきゃ!
↓
スプレッドが上に開く
何故上がりそうと思ったんかは知らん!!
が、流れとしてはこんな感じ。
では、このスプレッドが上に開いた事象は"その後"の価格変化を予想する材料と成り得るのか?
スプレッドが上に開いた瞬間とその○秒後との比較を雑に行なってみる。
※スプレッドが上に開く時、下記のようなパターンも想定されるので
mid price(中央値)が上昇していれば全て上に開いたと定義する。
スプレッドが上に開いた瞬間を0地点として5秒後のmid priceの位置を集計してみる。0地点から上昇していればプラス。
プラス圏に偏っている(スプレッドが上に開いた5秒後は上昇している場合が多い)という事がわかる。
同じように今度はスプレッドが下に開いたケースを見てみる。
マイナス圏に偏っている(スプレッドが下に開いた5秒後は下落している場合が多い)という事がわかる。
雑に言うとスプレッドが上に開いた後は上昇しやすい!
スプレッドが下に開いた後は下落しやすい!という事。
※高頻度botの場合は買いと売りに優位性の偏りはないというのが私の今の所の結論です。低頻度やロジックの特性によっては買いの方が勝ちやすいというケースはありますが。※
以上の結果を踏まえてバックテストを行なってみる。
上に開いたらロング、下に開いたらショートの単純ロジックでまずは理想的な条件(手数料無し、スリップなし、遅延なし)でテストする。
1ヶ月で1億円稼げる優秀なロジックが出来たな。
これで人生上がりだ!おめでとう!
・・・となればええな。
とはいえ、理想的な条件でバックテストした際に綺麗に右肩上がりにならない場合、そのロジックは"高頻度bot"としては使い物にならないと思うので、まずは理想的な条件でテストしてみた方がいいと思う。
最初から遅延やスリップ、板情報などを入れて正確にテストする事は個人的にはナンセンスだと思う。
なぜなら、
「皮算用はモチベーションの最大の母である」
と考えているから。
これ上手くいったらめっちゃ儲かるやん!うひひひ・・・
みたいにわくわくしていた方が私はモチベーションが上がるのでね!
さて次にやる事は正確なバックテスト?最適化?
これが手数料無料業者でのテスト結果の場合は
もう実弾投入してフォワードですね。
「最小ロットでのフォワードが何より重要だ!」
詳細なデータ(板や約定、遅延情報など)をそもそも取り貯めていない自分を正当化してそう言いましょう。
実際の所、最小ロットで右肩上がりにならない場合厳しいですなあ。
無事最小ロットフォワードで右肩上がりになった場合は、
崩れるまでロットを上げます。
ロット限界を迎えたら物足りなくなってきますね?
もっと利益を上げれないかと。
そうなって初めて詳細なテストや執行方法、取引所選定等に移行します。
実際にはフォワードテスト中にチャートを眺めていても意味がないので、フォワード中には始めていると思いますが。
例として海外取引所で取引を検討してみます。
海外取引所の場合はtakeの際に大抵の場合手数料を取られますし、
makeの場合は手数料を貰えたり、0だったり、makeでも取られたり
とまちまちですが、ともかく一番ネックとなるのは手数料及びそれに起因する特徴的な値動きでしょう。
海外取引所でのテスト
average profitが$70幅/tradeで
テスト期間中のtake take(成り成り)fee averageが
$50幅だった場合で考えます。
この場合はさほど難しく考えず成り成りで動かします。
それで右肩上がりにならない場合は遅延やスリップが原因なので、
単純な成行ではなくてtake指値にします。
上記例の場合は、平均利益幅$70に対して平均手数料幅が$50なので
スリップを$20幅以下にすればうすーく利益を積み重ねられるはず。
であればエントリー、決済共にbest値から$10幅以内にIOCかFOKで指値を投げる、もしくはGTCで投げてすぐキャンセルするという事になります。
エントリーを絞って決済を優先させたい場合は、
エントリーでのスリップ許容値を*$5とかにして決済側でスリップ許容値を少し大きくする($20-*$5以下に)という方法も考えられますね。
take指値がピンと来ない方は以下参照
例えば、3ドル幅スリップを許容して買う場合は
上記のようにbest Askより3ドル高い価格に指値を投げるという事です。
指値注文なんだけどスリップを限定しながら成行するみたいな取引になるのでtake指値という名前で呼んでますが、正式名称は知りません。
以上が 利幅>手数料 のケース。
利幅<手数料の場合は成り成りでは負けますので
何か考える必要があります。
指値にするのか、片側は指値にするのか、
それとも利幅自体を伸ばす方法を考えて成りで押し込むのか。
あくまでも成りでやろうという場合は利幅自体を伸ばす方法を考えます。
例えば、スプレッドの開き幅(%)と利幅との相関はあるかなどを検証します。スプレッドが0.05%開いた時とスプレッドが0.1%開いた時の違い。
5秒後、10秒後との相関や、10分間の最大利幅、平均利幅に関係性はあるか?等々
※ドル幅表記で表現している部分もありますが、基本的に%で考えた方がいいと思います。価格が10,000の時の5ドル幅と価格が50,000の時の5ドル幅とでは意味合いが違うからです。
手数料が10ドルの時に5ドルの利益を狙いに行くのと、手数料が50ドルの時に5ドルの利益を狙いに行く事をイメージするとわかりやすいかと思います。リスクや求められる精度が全然違ってきますので値幅の絶対値ではなく、率(%)で考えた方がいいと個人的には思います。※
はたまた、スプレッドが開いた時の成分を分解して相関を見るとか。
成行によってスプレッドが開いたのか、指値が逃げた事によってスプレッドが開いたのか、その割合(例:成り80%、指値逃げ20%)とその後の値動きとの関係性。
例えば、take BUYによってスプレッドが上に開いた時には価格が上昇しやすいのか?それとも指値がいなくなった事によってスプレッドが上に開いた時の方が価格が上昇しやすいのか?全然関係ないのか?
こういう事を色々検討、テストしてどんどん深みにはまって行きますね。
ともかく、最初は雑にやりながら上手くいきそうであればより詳細に考えて行くのがいいのではないかと思います。
本noteではスプレッドを例にしましたが、
これが板の厚み変化でも、成り注文の売買偏りでも何でもいいんです。
○と△は関係があるか?という疑問→雑に検証→フォワード→より深みへ
流れは同じです。
他のbotterの方々のロジックはわかりませんが、
私の作るbotって雑なのが多いんですよね。
と、ここまで書いてきて、一体何を書こうと思っていたのか、
何故書こうと思っていたのか思い出せません。。
その辺りも含めて雑だなぁと。
まぁええか!
最初に書いた事の繰り返しになりますが、
本noteで載せたお絵かきやデータ等は出鱈目のイメージです。
ただ、このロジックは取引所と執行戦略の組合せによっては利益でるかも?と妄想したりはしています。
あくまでイメージですが、海外取引所の場合はより顕著にスプレッドと値動きの相関が見られるのではないかと思います。しかし、それは幻のアルファの可能性が高いでしょう。
最後に、THE BLUE HEARTSの「さすらいのニコチン野郎」より歌詞を引用して雑に締めさせて頂きまっす!
そろそろデッカク金儲けしよう!!
この星そっくり買い取る位な!!!!!!!
何かご意見等ございましたらとぅいったまで宜しくお願い致します。