このページの翻訳は LLM によって生成されています。誤りに気づいた場合は GitHub で issue を開いてお知らせください。
無期限先物:価格影響モジュール
- 動的計算: 取引サイズと市場の厚みから計算。
- OI追跡: 複数時間枠で未決済建玉を記録。
- 市場の厚み: ペアごとに設定可能。
- 時間加重OI: 時間枠で累積建玉を計算。
- 方向別処理: ロング・ショートで個別に計算。
OI_WINDOWS_SETTINGS:OI時間枠の設定。WINDOWS:各時間枠のOI。PAIR_DEPTHS:ペアの市場の厚み。TRADE_LAST_WINDOW_OI:取引の直近時間枠のOI。
get_trade_price_impact:価格への影響を計算。add_price_impact_open_interest:新規時のOI更新。remove_price_impact_open_interest:決済時のOI更新。get_price_impact_oi:価格影響用の現在OIを取得。
価格への影響の計算
Section titled “価格への影響の計算”次の式で計算します。
$$Price\ Impact\ % = \frac{(Start\ OI + \frac{Trade\ Size}{2})}{One\ Percent\ Depth}$$
- Start OI: 対象方向の開始時OI。
- Trade Size: 取引サイズ。
- One Percent Depth: 価格を1%動かす取引量。
-
PAIR_DEPTHSから市場の厚みを取得します。 -
複数の時間枠のOIを集計し、最近の枠に高い重みを付けます。
-
価格影響率を計算します。
let price_impact_p = Decimal::from_ratio(start_open_interest_usd + trade_open_interest_usd.checked_div(2_u64.into())?,one_percent_depth_usd).checked_div(Decimal::from_atomics(100_u64, 0)?)?; -
計算した影響を約定価格に適用します。
let price_after_impact = if long {open_price + price_impact} else {open_price - price_impact};
次のロング取引を考えます。
- 新規価格: $1000。
- 取引サイズ: $100,000。
- 現在のOI: $500,000。
- 1%の市場の厚み: $1,000,000。
-
価格影響率を計算します。
Price Impact % = (500,000 + 100,000 / 2) / 1,000,000 / 100 = 0.55% -
影響額を計算します。
Price Impact = $1000 * 0.55% = $5.50 -
価格に適用します。
Price After Impact = $1000 + $5.50 = $1005.50
未決済建玉の管理
Section titled “未決済建玉の管理”OIは時間枠を使って管理します。
OI_WINDOWS_SETTINGSで枠の長さと数を設定します。- 新規時に
add_price_impact_open_interestで現在枠のOIを増やします。 - 決済時に
remove_price_impact_open_interestで調整します。 - 複数の最近の枠を使い、安定した指標にします。
- 市場の厚みで
PAIR_DEPTHSを初期化します。 OI_WINDOWS_SETTINGSを設定します。get_trade_price_impactで取引の影響を計算します。- 約定後、
add_price_impact_open_interestまたはremove_price_impact_open_interestでOIを更新します。
次のパラメーターで調整できます。
PAIR_DEPTHSのone_percent_depth_above_usdとone_percent_depth_below_usd。OI_WINDOWS_SETTINGSのwindows_countとwindows_duration。
- 市場の厚みの動的調整。
- 非対称な価格影響への対応。
- より高度な時間加重アルゴリズム。