清算指標の符号と分布を読み、よくある二つの読み違いを避けて、戦略に組み込む。
急落のあと、清算履歴に深いマイナスのバーが出た。本当に多くのロングが清算されたのか、それともこの銘柄の数値がもともとマイナス寄りなのか。清算指標は Binance だけを読み、0 も均衡点ではありません。この二点で、そのバーの読み方が決まります。価格帯ごとの清算マップを見ているなら、それは別のモデル推定です。清算マップの読み方を参照してください。
清算指標とは、一定期間にショートとロングのどちらが多く強制決済されたかを示す標準化された値で、Binance の公開強制決済フィードだけを使います。清算とは、レバレッジをかけたポジションを取引所が強制的に決済することで、ロングが清算されると売り注文、ショートなら買い注文が出ます。Blave は 5 分ごとに銘柄別の両側の清算数量(コイン数)を合計し、三段階で計算します。
| ステップ | 計算内容 |
|---|---|
| 1. 純清算量 | 5 分ごとの「ショート清算量 − ロング清算量」。単位はコイン数で、米ドルではありません。強制決済の記録がない 5 分間は 0 とします。 |
| 2. ローリング合計 | 選んだ timeframe(既定は 24h)の範囲で合計します。 |
| 3. 標準化 | その合計の直近 30 日ローリング標準偏差で割ります。分子から平均を引かないため、標準的な z スコアではありません。 |
数値に上限・下限はなく、符号がどちら側の清算が多かったかを表します。
| 数値 | 意味 |
|---|---|
| > 0 | その timeframe でショートの清算(コイン数)がロングより多い |
| < 0 | ロングの清算がショートより多い |
| ≈ 0 | 両側が相殺された、その期間に強制決済の記録がない、またはフィードが止まっていた。その銘柄の多空が均衡しているという意味ではない |
分布は非対称で、下側(ロング清算)の裾が上側より深くなります。以下は Blave が Binance の強制決済フィードから独自に計算した分位点です。1 時間足、timeframe 24h、期間 2024-09-15~2026-09-14、1 時間ごとに 1 値(n = 17,520)。
| 銘柄 | p1 | p50 | p99 | 0 を上回った時間の割合 |
|---|---|---|---|---|
| BTC | −3.76 | −0.01 | +3.31 | 48.8% |
| ETH | −4.07 | −0.08 | +2.79 | 43.1% |
| SOL | −4.01 | −0.17 | +2.87 | 37.6% |
| DOGE | −4.07 | −0.23 | +2.97 | 31.1% |
清算の概要・履歴とマップページの 24 時間清算バーは、Binance の強制決済フィードだけを使います。Binance は 1 銘柄につき 1 秒最大 1 件しか配信せず、同じ 1 秒の他の清算は送られません。つまりサンプルであり、大きな相場では過小になります。
単位はコイン数なので、銘柄をまたいで生の清算量を比べることはできません。比べるなら標準化後の数値を使います。フィードが止まっている間は、その期間に清算がなかったように見え、欠損は表示されません。
0 より大きければショートの清算がロングより多く、0 より小さければロングの清算が多い状態です。ただし標準化で分子から平均を引かないため、長期的にロングの清算が多い銘柄は数値が系統的にマイナス寄りになり、0 はその銘柄の「普段の水準」ではありません。
上の測定期間(1 時間足、timeframe 24h)で 0 を上回った時間の割合は、上の表のとおりです。同じ 0 でも、BTC ではほぼ中央値ですが、DOGE ではすでに大半の時間よりショート清算寄りです。
現在、清算データを使う公式戦略はないため、以下の三つの使い方はすべて例示で、バックテストしていません。コード中のしきい値は上で測定した分位点を出発点として借りたもので、パラメータスキャンの結果ではありません。実際に使う前に必ず自分でバックテストしてください。
最も直接的なのは、数値が分布の両端に入った期間に印を付ける方法です。下側の裾が深いので、両側に同じ絶対値のしきい値を使わないでください。BTC なら p1 は約 −3.8、p99 は約 +3.3 です。
LONG_FLUSH_TH = -3.8 # 例示:BTC 1h × 24h の p1 付近 SHORT_FLUSH_TH = 3.3 # 例示:BTC 1h × 24h の p99 付近 liq = fetch_liquidation(SYMBOL, INTERVAL, START, END, hdrs, timeframe='24h') df['LIQ'] = liq['alpha'] long_flush = df['LIQ'] <= LONG_FLUSH_TH # ロング清算の集中 short_flush = df['LIQ'] >= SHORT_FLUSH_TH # ショート清算の集中
印を付けたあとどう取引するかは自分で研究してください。清算が集中したあとに価格が反転するのか継続するのか、Blave は検証していません。分位点は銘柄によっても違い、ETH、SOL、DOGE の p1 はいずれも BTC より深いので、銘柄を変えたら計算し直します。
0 は均衡点ではないので、「0 より大きければショート清算が多い」という書き方は、DOGE のように長期的にマイナス寄りの銘柄では歪みます。代わりにその銘柄の過去一定期間の分位点をしきい値にすると、長期的な偏りの影響を受けにくくなります。
# 例示:過去 180 日の分位点をしきい値に。窓の長さはスキャンしていない
lo = df['LIQ'].rolling('180D').quantile(0.01)
hi = df['LIQ'].rolling('180D').quantile(0.99)
extreme = (df['LIQ'] <= lo) | (df['LIQ'] >= hi)
窓が短すぎると、しきい値が最近の相場につられて動きます。また、その銘柄のデータ開始からおおむね 30 日間のウォームアップ期間(BTC、ETH は 2023-01-31 以前)を窓に含めないでください。その期間は標準偏差のサンプルが少なすぎ、見かけの極端値が出ます。
より保守的な使い方は、既存戦略のエントリー条件に加えるものです。数値がどちらかの端に入っている間は新規ポジションを持ちません。使い方 1 の二つのしきい値を流用し、compute_entry は元の戦略のエントリー条件に置き換えてください。
# 例示:数値がどちらかの端にあるときはエントリーしない flush = (df['LIQ'] <= LONG_FLUSH_TH) | (df['LIQ'] >= SHORT_FLUSH_TH) entry = compute_entry(df) & ~flush
この組み合わせはバックテストしておらず、清算の集中を避けると成績が改善するかも検証していません。「清算の波が来たばかり」を新規エントリーを止める条件にしているだけです。
清算指標の設定は二つです。timeframe は純清算量を合計する窓で、15min、1h、4h、8h、24h、3d から選べ、既定は 24h。足の周期(period)は値を取る頻度を決め、5min、15min、1h、4h、8h、1d から選べます。数値はいつも 5 分刻みで計算してから、各足の最後の値を取ります。timeframe を変えると分布も変わります。同じ期間を timeframe 1h(1 時間足)で測ると次のとおりです。
| 銘柄 | p1 | p50 | p99 | 0 を上回った時間の割合 |
|---|---|---|---|---|
| BTC | −2.62 | 0.00 | +2.12 | 52.5% |
| ETH | −2.84 | 0.00 | +2.17 | 48.8% |
| SOL | −3.07 | 0.00 | +2.21 | 45.5% |
| DOGE | −3.50 | 0.00 | +2.09 | 40.3% |
24h と比べると、1h は両端が狭く、中央値はどの銘柄も 0.00、0 を上回る割合も半分に近くなります。しきい値は timeframe に合わせて計算し直し、一方の数値をもう一方に流用しないでください。15min、4h、8h、3d は本文では測定していません。
| ページ | 見るもの | 閲覧条件 |
|---|---|---|
| 清算の概要 | ツリーマップで、ドロップダウンで「ショート清算」「ロング清算」の二つのランキングを切り替え、それぞれ上位 30 銘柄を表示。タイルの大きさは数値の絶対値(その銘柄の直近 30 日比)で、清算金額ではありません。色はその timeframe の価格騰落です。 | ログイン |
| 清算の履歴 | 単一銘柄の清算指標の棒グラフを価格に重ねたもの。timeframe と足の周期を選べ、stat 項目が付きます。 | Pro 以外は直近 7 日を遅延表示 |
以下は組み合わせの考え方で、検証済みの結論ではありません。
| 組み合わせ | 用途 |
|---|---|
| 清算 + ホエールハンター | ホエールハンターで建玉に異常な変化がないかを見て、同じ期間に清算指標がどちらの端にあったかを確認し、その変化が清算の集中を伴っていたかを見分けます。 |
| 清算 + テイカー強度 | 清算指標が見るのは強制決済された側だけです。テイカー強度で同じ期間の能動的な売買の強さを見て、自発的な取引の側を補います。 |
清算指標のエンドポイントは GET /liquidation/get_alpha で、パラメータは symbol、period、timeframe(既定 24h)と開始・終了日(start_date、end_date)。Blave Agent では fetch_liquidation に対応します。確定した足だけを返し、項目は timestamp、alpha、stat。1 年を超える期間は自動で短縮されます。データは最も古い銘柄(BTC、ETH)で 2023-01-01 からで、それ以前の値は 0。その他の銘柄はそれより遅いことがあります。30 日標準偏差にはウォームアップが必要なので、意味のある値はデータ開始からおおむね 30 日後以降です(BTC、ETH は 2023-01-31 ごろ)。
get_alpha の stat オブジェクトは最新の値を説明しますが、名前と中身は完全には一致しません。
| 項目 | 実際の計算 |
|---|---|
up_prob | 直近 365 日のデータで学習したロジスティック回帰モデルが、清算指標から 24 時間後の上昇・下落を予測し、上昇する確率を出したもの。学習データに現在の期間が含まれるため、サンプル内の推定値であり、サンプル外の勝率ではありません。 |
avg_up_return /avg_down_return | 直近 365 日で「24 時間後に上昇/下落」したすべての時点の平均リターン。清算指標の水準は区別しません。 |
exp_value | up_prob × avg_up_return +(1 − up_prob)× avg_down_return。小数であり、パーセントではありません。 |
is_data_sufficient | その銘柄のデータが 365 日より前から存在するかどうか。「この水準のサンプルが十分か」ではありません。 |
清算マップ、マップ変化、取引所別集計のエンドポイントとフィールドは清算マップの読み方を参照してください。
stat もサンプル内の推定です。どのしきい値も自分のバックテストで検証してください。