★ 代表実装
做市 / 高频(库存偏移报价)官方示例
python
以库存偏移惩罚驱动买卖报价、赚取价差的做市模拟,含成交撮合与手续费成本。
実装コード python
# =====================================================================
# 量化策略流派 · 官方教学示例(做市 / 高频 Market Making)
# 策略:围绕中间价双边报价,按库存惩罚偏移报价(Avellaneda-Stoikov 简化)
# 说明:本代码为社区教学示例,由站点整理发布,仅供学习交流。
# 示例代码由站点提供,站点不对代码的安全性、合规性与收益
# 表现作任何明示或默示担保;据此交易风险自负。
# 依赖:numpy(pip install numpy)
# 运行:python market_making.py
# =====================================================================
import numpy as np
def simulate(n=5000, seed=21):
rng = np.random.default_rng(seed)
mid = 100.0 + np.cumsum(rng.normal(0, 0.02, n))
buy_flow = rng.poisson(8, n) # 买方主动单(吃 ask)
sell_flow = rng.poisson(8, n) # 卖方主动单(吃 bid)
return mid, buy_flow, sell_flow
def run(mid, buy_flow, sell_flow, half_spread=0.03, invent_pen=0.003, cost=0.0002):
n = len(mid)
rng = np.random.default_rng(7)
inv = 0.0
cash = 0.0 # 做市利差捕获(已扣手续费),不含期末库存市值
fb = 0
fs = 0
for t in range(n):
skew = inv * invent_pen # 库存越大越偏空报价
bid = mid[t] - half_spread - skew
ask = mid[t] + half_spread - skew
q_sell = min(buy_flow[t], rng.poisson(5)) # 我们在 ask 上卖出
q_buy = min(sell_flow[t], rng.poisson(5)) # 我们在 bid 上买入
# 每笔双边报价价差 = ask - bid = 2*half_spread(skew 自动抵消)
cash += (q_sell + q_buy) * (ask - bid) / 2.0 - (q_sell + q_buy) * cost * mid[t]
inv += q_buy - q_sell
fb += q_buy
fs += q_sell
pnl = cash + inv * mid[-1] # 含期末库存市值重估的总盈亏
return dict(cash=cash, pnl=pnl, final_inv=inv, buys=fb, sells=fs)
if __name__ == "__main__":
mid, bf, sf = simulate()
m = run(mid, bf, sf)
print("做市 / 高频(库存偏移报价)模拟")
print(f" 模拟步数 : {len(mid)}")
print(f" 做市利差收益 : {m['cash']:.2f}")
print(f" 期末库存 : {m['final_inv']:.1f}")
print(f" bid 侧成交 : {m['buys']}")
print(f" ask 侧成交 : {m['sells']}")
コードは利用者提供です。サイトは安全性・適合性について責任を負いません。
💬 実装へのコメント
🔵 ログイン / 新規登録