Implementation code 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']}")
Code is user-provided; the site is not responsible for its safety or fitness.

💬 Code reviews