跳转到内容
本页面的翻译由 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。

使用以下公式计算。

$$Price\ Impact\ % = \frac{(Start\ OI + \frac{Trade\ Size}{2})}{One\ Percent\ Depth}$$

  • Start OI: 对应方向的起始 OI。
  • Trade Size: 交易规模。
  • One Percent Depth: 使价格移动 1% 的交易量。
  1. 从 PAIR_DEPTHS 获取市场深度。

  2. 汇总多个窗口的 OI,给予近期窗口更高权重。

  3. 计算价格影响百分比。

    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)?)?;
  4. 将计算结果应用到成交价格。

    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。
  1. 计算价格影响百分比。

    Price Impact % = (500,000 + 100,000 / 2) / 1,000,000 / 100 = 0.55%
  2. 计算价格影响金额。

    Price Impact = $1000 * 0.55% = $5.50
  3. 应用价格影响。

    Price After Impact = $1000 + $5.50 = $1005.50

模块按时间窗口管理 OI。

  1. OI_WINDOWS_SETTINGS 定义窗口时长和数量。
  2. 开仓时由 add_price_impact_open_interest 更新当前窗口 OI。
  3. 平仓时由 remove_price_impact_open_interest 调整。
  4. 使用多个近期窗口,得到更稳定的指标。
  1. 用市场深度初始化 PAIR_DEPTHS。
  2. 配置 OI_WINDOWS_SETTINGS。
  3. 调用 get_trade_price_impact 计算影响。
  4. 成交后用 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。
  • 动态调整市场深度。
  • 支持非对称价格影响。
  • 引入更先进的时间加权算法。