ベーシス率アービトラージ戦略のダイアグラム
ペアには2つの価格がある。本来の価値としての価格と、実際に約定できる価格である。このダイアグラムは前者を合成銘柄とその移動平均として組み立て、後者を2つの板情報から読み取り、両者の乖離をパーセントで表し、その乖離がしきい値を超えて広がったときに両方のレッグを建てる。
戦略の概要
- 指数ブロック (Index) が第1銘柄の価格を第2銘柄の価格で割って1つの合成銘柄を組み立て、それにローソク足系列を購読し、そのローソク足に対する移動平均がペアのフェアバリューとなる。
- 2つの板情報ブロック (Market depth) が、ペアを実際に約定できる価格を供給する。一方のコンバーターが第1銘柄の最良買い気配を取り出し、もう一方が第2銘柄の最良売り気配を取り出す。
- 板は1本の足の中で何度も更新されるため、2つの最良価格をそのまま条件に流し込むことはしない。2つの変数がそれぞれ最後の気配を保持し、売買対象のローソク足が確定した時点でそれを送り出し、数式が一方をもう一方で割って約定可能レシオを求める。
- 同期ブロック (Sync) が、約定可能レシオと同じタイムスタンプを持つレシオ用ローソク足を保持し、両者をまとめて送り出す。そのため、比較されるフェアバリューと約定可能価格は常に同じ足に属する。
- 数式が、送り出された組を1つの数値に変換する。約定可能レシオからフェア平均までの距離を、平均に対するパーセントで表したものである。この数値がベーシスとなる。
- 変数がベーシスを売買対象のローソク足に紐づけ、以降のすべての比較はその足の上で評価される。したがって各注文は、それが判断された足の時刻を持つ。
- ベーシスは、エントリーしきい値と、その符号を反転した同じしきい値と比較され、方向ごとに1つのゲートが得られる。さらにフェアバリューの周囲のはるかに狭いバンドとも比較され、その2つの結果を論理条件が回帰シグナルへとまとめる。
- いずれかのエントリーによって起動された遅延ブロック (Delay) が、確定した売買対象の足を数え、保有上限に達した時点で単一のフラグ (Flag) を立てる。結合ブロック (Combination) がそのフラグと回帰シグナルを1つのエグジット系統にまとめ、2つの決済ブロックが銘柄ごとに1つずつペアを手仕舞う。
エントリーとエグジットの条件
- ロングエントリー: 約定可能レシオがフェア平均を最小ベーシスより大きく下回った場合、ダイアグラムは第1銘柄を買い、第2銘柄を売る。各レッグの数量は注文数量1つ分である。各レッグは自身のポジションがフラットのときにのみ建てるよう設定されているため、ペアが既に建っている状態でシグナルが繰り返し発生しても、そこに何も積み増されない。
- ショートエントリー: 約定可能レシオがフェア平均を最小ベーシスより大きく上回った場合、ダイアグラムは第1銘柄を売り、第2銘柄を買う。各レッグの数量は注文数量1つ分である。同じくフラットのときのみという条件が、各レッグを個別に守る。
- エグジット: 両方のレッグは、次のいずれか早く起きた方で手仕舞われる。ベーシスがフェアバリュー周囲の狭いバンドの内側へ戻ったとき、または遅延ブロックが、それを起動したエントリー以降に確定した売買対象の足を保有上限まで数えたときである。どちらの理由も、1つの結合ブロックを通じて同じトリガーに到達する。決済ブロックは売買方向を持たず、建っている分から自身の数量を割り出す。フラットなレッグに対して決済ブロックが発火しても、単に何も起こらない。
パラメーター
| パラメーター | 既定値 | 説明 |
|---|---|---|
| Traded Candles | 00:05:00 | 判断が行われ、注文が発注される対象となるローソク足の長さ。 |
| Index Expression | BTCUSDT@BNBFT/TONUSDT@BNBFT | 合成銘柄を組み立てる式。第1銘柄の価格を第2銘柄の価格で割ったもの。両方の銘柄が接続されたデータ内に存在する必要があり、両方とも売買の対象となる。 |
| Ratio Candles | 00:05:00 | フェアバリューを構築するローソク足の長さ。売買対象の系列と等しく保つこと。そうでなければ、両者は1つの組にまとまらない。 |
| Sync Interval | 00:05:00 | 同期ブロックがまとめる単位となる区間。ローソク足の長さと等しく保つこと。区間が短いと本来ひと組であるべき値が分割され、長いと異なる足の値が結合されてしまう。 |
| Fair Average Length | 20 | フェアバリューを取り出す移動平均に含まれる、レシオ用ローソク足の本数。 |
| Minimum Basis, % | 0.5 | 両方のレッグを建てるまでに、約定可能レシオがフェアバリューからどれだけ離れている必要があるかを、パーセントで表したもの。 |
| Exit Basis, % | 0.1 | ペアを手仕舞うまでに、ベーシスがフェアバリューへどれだけ近づいて戻る必要があるかを、パーセントで表したもの。 |
| Volume Per Leg | 1 | 各レッグの注文数量。ロット単位。両方のレッグには同じ数量が送られる。 |
| Max Hold Bars | 72 | ベーシスにかかわらず決済されるまでに、ペアを保有してよい、確定した売買対象の足の本数。 |
ダイアグラムの詳細
- 板情報がそのまま条件に読み込まれることはない。板は1本の足の中で何度も更新されるのに対し、条件は足の単位で動く。2つの保持用変数が両者を同じ時計に合わせるものであり、そのトリガーは板ではなく売買対象のローソク足である。
- 注文を発注する要素は、同期出力からはトリガーされない。送り出された組は、その構成要素のうち最も早い時刻を持ち、現在時刻より前の時刻を持つ注文は拒否される。そのため同期は計算に値を供給し、すべてのトリガーは売買対象のローソク足が担う。
- 両方のローソク足系列は確定足のみに設定されている。形成中の足の更新は、その足が始まった時点の時刻を注文に与えることになるが、その時刻は足について判断が下される時点では既に過去である。
- 定数は売買対象のローソク足ごとに再送される。比較は評価のたびに両方の値が改めて届くことを必要とするため、一度しか送られない定数は、それが供給する条件を静かに停止させてしまう。
- 下側のしきい値は独立した定数ではなく、上側のしきい値に対する数式である。そのため、しきい値をどのように設定しても両方のバンドは対称に保たれる。また保有上限は、時計上の時間ではなく確定した足の本数で数えられる。
使い方
.json ファイルを Designer に読み込み、バックテスターで過去データを使って実行し、実運用の前にパラメーターやブロック自体を自分の銘柄に合わせて調整してください。