前書き:なぜ仮想通貨ではなくTradFiなのか?
仮想通貨のグリッド取引を経験した者なら誰でも同じ悪夢を見たことがある:グリッドを組んだ直後に価格が急落、ポジションがすべてロックされ、追証か強制ロイカットになる。仮想通貨の魅力は値動きの幅に上限がないことだが、これこそがグリッド戦略の最大の敵である。グリッドは本質的にレンジ相場向けであり、一方向の相場では全損する。
では、日内の変動が十分にありグリッドを頻繁にトリガーさせつつ、突然30%や50%の暴騰・暴落が起こらない資産クラスは存在するのか?答えはTradFi商品である。
TradFi(伝統的金融)のデリバティブには、S&P500、ナスダック、金、原油、外国為替などの伝統的資産の無期限先物があり、背後には実際のファンダメンタルズがある。株価指数は企業収益やFRBの政策に拘束され、コモディティは需給に左右され、為替レートは二つの主権経済間の相対関係で決まる。これらの資産は理由もなく一夜で5倍に跳ね上がったり、1つのツイートで80%暴落したりしない。価格には「重力」があり、短期的にはレンジ変動しても、長期的にはファンダメンタルズに回帰する。
この特性はグリッド戦略とほぼ完璧にマッチする:日内では1~3%の正常な変動があり、十分にグリッドをトリガーさせる。極端な相場でもグリッドが完全に壊れることはなく、ストップロスや資金管理に十分なバッファーを残す。本戦略はまさにこのロジックに基づいて構築されている。すべてのTradFi商品を自動スキャンし、現在最も変動が活発なものを特定し、それらに循環グリッドを構築し、変動構造が変化した際に自動的に商品を入れ替える。
背景:仮想通貨取引所に静かに上場された新たな商品群
ここ2年、OKXやBitgetなどの主要仮想通貨取引所は、大量のTradFi無期限先物商品を静かに上場してきた。範囲は米国株指数(S&P500、ナスダック100)、個別株(アップル、エヌビディア、テスラ)、コモディティ(金、原油、天然ガス)、外国為替(ユーロ、円)にまで及ぶ。簡単に言えば、現在では仮想通貨取引所で米国株、金、外国為替を24時間365日、レバレッジをかけて直接取引できる。
これは定量取引者にとって大きな意味を持つ。一方で、これらの商品は伝統的金融資産のファンダメンタルズ特性を継承しており、価格が不当に乱高下することはない。他方で、仮想通貨取引所に上場されているため、無期限先物の取引構造を踏襲し、流動性が十分で、手数料が透明であり、APIインターフェースは通常の仮想通貨と完全に同じで、定量戦略にシームレスに組み込める。
つまり、この商品群は新たなアービトラージの機会を開いた:仮想通貨取引のインフラを使って、伝統的金融資産のレンジ変動から利益を得るのだ。本戦略はまさにこのシナリオに合わせてカスタマイズされている。プログラムで自動的に最も変動の活発な商品を選別し、その上でグリッドを稼働させ、レンジ変動の利益を得る。
一、銘柄選定ロジック:最も変動の大きい銘柄のみを選ぶ
グリッドで儲かるかどうかは、60%が銘柄選定にかかっている。適切な銘柄を選べば、1日に何度もグリッドがトリガーされ、利益が自然に蓄積される。間違った銘柄を選べば、グリッドを1週間放置しても全く動かず、資金が寝ていて証拠金を占有するだけになる。
本戦略の銘柄選定基準は1つだけ:過去N本の日足における平均日変動幅である。
変動スコア = Σ [ (High_i − Low_i) / Close_i × 100 ] / N
コード実装は以下の通りで、ロジックは一目瞭然である。
python
def score_symbol(info):
bars = exchange.GetRecords(info["sym"], PERIOD_D1, KLINE_COUNT + 2)
if not bars or len(bars) < 3:
return None
bars = bars[-KLINE_COUNT:]
atr_pcts = [(b["High"] - b["Low"]) / b["Close"] * 100 for b in bars if b["Close"] > 0]
avg_atr = sum(atr_pcts) / len(atr_pcts)
# 日間変動幅は少なくともグリッド間隔の1.5倍でなければならない。満たさない場合は除外
if avg_atr < GRID_RATIO * 100 * 1.5:
return None
return {"sym": info["sym"], "atr": round(avg_atr, 3), "price": bars[-1]["Close"]}
戦略は定期的にすべてのTradFi商品をスキャンしてランク付けし、最も変動の大きいTOP_N個のポジションを保有する。参入基準の設計は非常に重要である:日間変動幅は少なくともグリッド間隔の1.5倍でなければならない。そうでなければ、1日に1つのグリッドも超えられない可能性があり、そのような商品は除外され、資金が効率の悪い銘柄に拘束されて証拠金を浪費するのを防ぐ。
銘柄の識別も特別な処理が必要である。FmZプラットフォームでは、TradFi商品はinstCategoryフィールドによって通常の仮想通貨と区別される。
python
def scan_tradfi():
markets = exchange.GetMarkets()
for sym, mkt in markets.items():
if not sym.endswith("USDT.swap"):
continue
info = mkt.get("Info") or {}
# instCategory != 1 がTradFi商品
if int(info.get("instCategory", 1)) == 1:
continue
result.append({"sym": sym, "base": base, "cat": cat})
二、グリッド構造:安値で買い、高値で売り、循環アービトラージ
選定された銘柄に対して、現在価格を中心として上下に一定の割合で拡張し、固定間隔の等比でグリッドを分割する。現在価格より低い各グリッドには買い注文を出し、価格が下落して約定するのを待つ。
グリッド構築のコアコードは以下の通りである。
python
def build_grid(sym, price):
low = price * (1 - LOWER_RANGE)
high = price * (1 + LOWER_RANGE)
# 等比グリッド分割
grids, p = [], low
while p <= high * 1.001:
grids.append(round(p, g_states[sym]["pp"]))
p = p * (1 + GRID_RATIO)
for i in range(len(grids) - 1):
buy_p, sell_p = grids[i], grids[i + 1]
if buy_p < price:
oid = buy_open(sym, buy_p, GRID_VALUE) # 現在価格より低い場合はすぐに買い注文を出す
g["status"] = "pending_buy" if oid else "skip"
else:
g["status"] = "above" # 現在価格より高い場合は注文を出さず、価格が下落するのを待つ
グリッドの同期は戦略稼働のコアループであり、各グリッドの注文ステータスをチェックし、それに応じて対応する。
python
def sync(sym):
for g in grids:
if g["status"] == "pending_buy":
s, deal, avgp = check_order(g["buy_oid"])
if s == "filled":
# 買い注文約定 → すぐに利確注文を出す
oid = sell_close(sym, g["sp"], ct)
g["status"] = "pending_sell"
elif g["status"] == "pending_sell":
s, deal, avgp = check_order(g["sell_oid"])
if s == "filled":
# 利確約定 → 利益を計算し、再び買い注文を出して循環させる
profit = g["ct"] * cv * (avgp - g["fp"])
g_total_profit += profit
oid = buy_open(sym, g["bp"], GRID_VALUE)
g["status"] = "pending_buy"
動作ロジックは明確である:価格がグリッドを下抜けると買いがトリガーされ、価格が1つ上のグリッドを上抜けると利確がトリガーされ、利確後は同じ位置に買い注文を再掲し、これを繰り返す。注文の取り消しや利確注文の異常などについては、自動検出と再注文の仕組みがあり、戦略は偶発的な注文異常で中断することはない。
三、スマートローテーション:資金を常に最も活発な銘柄に留める
TradFi商品の変動リズムは、マクロイベント、決算シーズン、政策変更に応じて移り変わる。ある時期は金が最も活発でも、しばらくすると原油やS&P先物に変わるかもしれない。1つの銘柄に固定してグリッドを動かし続けると、いつかその銘柄が低変動期に入り、1週間グリッドが動かないという事態に陥る。
本戦略は固定時間ごと(デフォルト48時間)にすべてのTradFi商品を再評価・ランク付けし、現在保有する銘柄を入れ替える必要があるかどうかを判断する。わずかな差による頻繁な入れ替えで手数料がかかるのを避けるため、ヒステリシス機構を導入している。
python
def needs_rebalance(new_selected):
cur_scores = {s["sym"]: s["atr"] for s in g_score_log if s["sym"] in g_active}
for s in new_selected:
if s["sym"] in g_active:
continue
weakest_atr = min(cur_scores.values())
threshold = weakest_atr * (1 + HYSTERESIS) # 必须高出 20% 才触发换仓
if s["atr"] >= threshold:
Log(f"{s['base']} ATR={s['atr']:.2f}% > 阈值={threshold:.2f}%,触发换仓")
else:
Log(f"{s['base']} ATR={s['atr']:.2f}% < 阈值={threshold:.2f}%,磁滞保持")
新たな候補銘柄の日次平均振幅が現在の最弱保有銘柄より20%以上高い場合のみ、実際にポジションの入れ替えがトリガーされます。入れ替えフローは以下の通りです:まず旧銘柄の全注文をキャンセルし、全てのポジションをクローズした後、新銘柄で完全なグリッドを再構築します。このプロセス全体が自動で完了します。
四、主要パラメータの説明
-- TOP_N:同時に保有する銘柄数を制御します。デフォルトは3で、資金は最もボラティリティの高い3銘柄に分散されます。
-- GRID_RATIO:グリッド間隔の比率です。デフォルトは1.5%で、各グリッドの利確幅を表します。
-- GRID_VALUE:各グリッドに固定で投入するUSDTの金額です。デフォルトは50で、価格変動に応じて調整されません。
-- LOWER_RANGE:グリッドがカバーする価格範囲を決定します。デフォルトは現在価格の上下それぞれ10%です。
-- REBALANCE_HOURS:ポジション入れ替えの評価期間です。デフォルトは48時間です。
-- HYSTERESIS:ヒステリシス閾値です。デフォルトは20%で、頻繁な入れ替えを防ぎます。
-- LEVERAGE:レバレッジ倍率です。3倍以下を推奨します。
-- STOP_LOSS_RATIO:グローバルストップロスのラインです。口座の損失がこの割合を超えると自動的にポジションをクローズして停止します。デフォルトは30%です。
-- KLINE_COUNT:評価に使用する日足の本数です。デフォルトでは過去20本を取得します。
-- EXCLUDE_SYMBOLS:ブラックリストです。戦略が触れてほしくない銘柄コードを記入します。複数の場合はカンマで区切ります。
五、リスク管理
グローバルストップロスは戦略の最後の防衛線です。口座の損失が初期値の設定割合を超えた場合、自動的に注文をキャンセルし、ポジションをクローズして以降の全ての処理を停止します。
python
def check_stop():
acc = exchange.GetAccount()
loss = (g_init_equity - acc.Equity) / g_init_equity
if loss >= STOP_LOSS_RATIO:
Log(f"触发止损!亏损={loss*100:.1f}% → 全部平仓停止")
for sym in list(g_active):
close_all(sym)
g_state = "STOP"
銘柄選定段階での参入フィルターは、ボラティリティが不十分な銘柄を排除し、戦略に参入する全ての銘柄がグリッドを駆動するのに十分な日内振幅を持つことを保証します。ブラックリストメカニズムにより、流動性が低い、スプレッドが異常、または挙動が不安定な銘柄を手動で除外できます。すべての注文の価格と数量は、取引所の精度要件に厳密に合わせられ、精度不一致による注文拒否の問題を根本から排除します。各銘柄に資金は均等に配分され、単一銘柄の損失が全体のポジション構造に影響を与えることはありません。
六、適用相場と注意事項
本戦略はレンジ相場で最も効果を発揮します。対象銘柄がレンジ内で繰り返し値動きする場合、グリッドが高頻度でトリガーされ、利益が時間とともに線形に蓄積され、戦略にほとんど人手を介する必要がありません。
注意点として、価格が継続的に一方向に下落し、グリッドの下限を突破した場合、すべての買い注文が含み損となり、価格の回復かグローバルストップロスのトリガーを待つ必要があります。一部のTradFi銘柄は、非取引時間帯(例:米国株式市場の休場期間)に流動性が大幅に低下し、注文が長時間約定しないことがありますが、これは正常な現象です。グリッド間隔GRID_RATIOの設定は、対象銘柄の日次平均振幅を参考にし、日次平均振幅の1/3から1/2の間に収めることを推奨します。大きすぎるとトリガー頻度が低くなり、小さすぎると手数料が利益を侵食します。レバレッジは3倍以内に抑えることを推奨します。高すぎるレバレッジは極端な相場で損失を加速させ、ストップロスがトリガーされる前に制御不能になる可能性があります。
結び
本戦略の核心ロジックは、一言でまとめると「常に最もボラティリティの高いTradFi銘柄に資金を置き、グリッドに時間の味方をさせる」です。銘柄選定、グリッド構築、ポジション入れ替え、リスク管理の4つのモジュールが互いに連携し、全自動で動作します。TradFi銘柄のファンダメンタル特性は価格が無限に乖離しないという基盤的な保証を提供し、プログラムによるボラティリティフィルタリングは資金が常に最も効率的な銘柄に配分されることを確実にします。パラメータが適切に設定されている場合、本戦略は多くの市場環境で安定したグリッド収益を生み出すと同時に、ストップロスとヒステリシスメカニズムによりダウンサイドリスクを受け入れ可能な範囲に抑えます。
本記事は発明者量化プラットフォームのオリジナル戦略説明です。学習・交流のみを目的としており、いかなる投資アドバイスを構成するものではありません。
- 1


