🎯 一、游戏核心目标
你的目标是:
在每一轮信息揭示后,利用你手上的信息(自己的牌 + 公共牌 + 各bot报价)判断市场的定价偏差,进行短线交易(买低卖高),并在下一轮前平仓,最大化期望PnL。
🧩 二、已知设定回顾
元素 | 说明 |
牌堆 | 39 张(去掉方块),黑牌 +10×点数,红牌 −10×点数 |
点数 | A=1, 2=2, …, K=13 |
每张牌期望 | μ = 7/3 × 10 = 23.33 |
总和目标 | 9 张牌:4张公共 + 你1张 + 4个bot各1张 |
市场结构 | 每一轮有:4个bot的个别市场 + 总和市场;每个市场都报 bid@ask |
信息揭示 | 第0轮:无公共牌;第1–4轮:依次翻开第1至第4张公共牌;第2轮可花100提前看1张;第4轮可花500看最后一张 |
交易规则 | 卖打bid,买打ask;每轮都可与4个bot逐个交易;可以看总和市场价;建议每轮结束先平仓 |
最终PnL | 所有交易盈亏 + 最终结算价变动 – 看牌费用 |
🧮 三、关键公式(记熟!)
(1) 单张期望值
μ = 23.33
(2) 反推Bot的手牌(信息提取)
在第 (k) 轮(已翻出 (k) 张公共牌):
其中:
- :已翻出公共牌的总和(含正负)
- (k):已揭示公共牌张数(0~4)
(3) 你对该Bot的EV(你的主观公平价)
其中:
- :你的手牌(黑红有正负)
(4) 买卖判断
条件 | 操作 | 逻辑 |
买入(long 1) | 市场低估总和,你预期会上涨 | |
卖出(short 1) | 市场高估总和,你预期会下跌 | |
不交易 | 定价合理,点差吃掉优势 |
(5) 交易手数(risk-based)
其中 (spread = Ask - Bid)。
取整或上限控制(如 max 1 手)。
(6) 总和市场交易(可选)
对“总和市场”的公平价估计:
若 (),买入;若 (),卖出。
🧭 四、逐轮交易策略(清晰流程)
🔹 第0轮:未翻任何公共牌
输入: 你知道自己的牌 (),看到4个bot报价 & 总和市场价。
步骤:
- 计算每个bot的 mid 与反推手牌区间:
- 用 () 算出自己的EV。
- 比较Bid@Ask:
- 若 ( → 买入该bot的市场(long 1);
- 若 → 卖出(short 1);
- 否则不动。
- 总和市场判断(可选对冲):
用 ,和总和市场价比较。
- 记录持仓与成本。
✅ 重点:
先只做方向最明确的1~2笔(EV 与 Ask/Bid 差距 > spread 的2倍以上),避免过度加仓。
🔹 第1轮:揭示第1张公共牌(值 = P1)
- 更新 , (k=1)。
- 重新计算每个bot的 mid & 反推手牌:
- 更新每个 。
- 与上轮持仓对比:
- 若EV方向变反 → 平仓;
- 若EV差距加大 → 加仓;
- 若点差扩大 → 减仓。
- 可考虑 花100提前看第二张牌,条件:
- 当前持仓较大(>2手或EV明显接近临界);
- 预期信息能大幅减少不确定性。
🔹 第2轮:揭示第2张公共牌(或花100提前看)
- 更新。
- 同步更新各bot的反推与EV。
- 重新比较价格:
- → long;
- → short。
- 平旧仓,重新建新仓(保持方向与EV一致)。
- 观察总和市场价是否滞后(可反向操作)。
🔹 第3轮:揭示第3张公共牌(值 = P3)
- 。
- 更新反推:
- 更新EV、调整仓位。
- 若波动放大(公共牌剧烈正负),先全平仓再观察价差再入场。
🔹 第4轮:揭示第4张公共牌(值 = P4)
- 更新反推:
- 再算每个。
- 若最后一张未翻,可花500提前看:
- 若你持仓较大(≥3手);
- 或4张公共牌合计绝对值>80(剧烈偏离平均)。
此时提前看值大。
- 最后平仓准备结算。
🔹 最终摊牌:所有bot与公共牌揭示完毕
- 计算真实总和。
- 你的PnL:
- 扣除看牌成本(100 或 500)。
- 统计总收益。
⚙️ 五、风险控制与细节
风控点 | 说明 |
持仓上限 | 单个bot最多1手,总敞口≤3手 |
每轮平仓 | 新一轮开始先平旧仓 |
价差判断 | 仅当超过spread时行动 |
对冲 | 若对多个bot方向一致,可在总和市场做反向对冲部分风险 |
记录 | 每笔记下:轮次、方向、价格、EV、PnL |
📘 六、例子讲解(照步骤算)
假设:
- 你牌:+50(黑5);
- μ=23;
- 第0轮报价:
Bot | Bid | Ask | Mid | 推算 (c_{bot}) | 你的EV | 操作 |
1 | 220 | 230 | 225 | 225−8×23=41 | 50+225−23=252 | EV>Ask→买 |
2 | 250 | 260 | 255 | 255−8×23=71 | 50+255−23=282 | EV>Ask→买 |
3 | 150 | 153 | 151.5 | 151.5−8×23=−32.5 | 50+151.5−23=178.5 | EV<Bid→卖 |
4 | 225 | 230 | 227.5 | 227.5−8×23=43.5 | 50+227.5−23=254.5 | EV>Ask→买 |
于是:
- Long bot1@230
- Long bot2@260
- Short bot3@150
- Long bot4@230
- 平均价约 +PnL 替代见结算。
进入下一轮再按新牌更新。
🔮 七、策略核心总结(口诀)
每轮:看牌 → 算均值 → 推Bot → 比价差 → 只做极差 → 先平仓再开仓。
或更短一句:
EV高买、EV低卖、轮前平仓、价差优先、信息可买。
🧠 八、补充直觉图解
- 当bot报的价越高 → 表示它手上牌可能越大(黑高牌),你倾向做空(因为市场高估总和)。
- 当bot报的价越低 → 表示它手上可能是红牌(负数),你倾向做多。
- 公共牌揭示的负值越多 → 总和期望下降,所有bot的mid会同步往下,你应先平多仓、再评估新方向。
- 信息越多,EV区间越窄,交易越有把握。
- 看牌花费相当于“买波动”,只有当你未平仓或波动加大时值得。
✅ 九、简化版“算法模板”伪代码
mu = 23.33 positions = [] for round in range(5): update_Scomm() for i in range(4): # 4 bots bid, ask = get_quote(i) mid = (bid + ask) / 2 EV = c_me + mid - mu if EV > ask + spread: # Buy positions.append(("long", i, ask)) elif EV < bid - spread: # Sell positions.append(("short", i, bid)) pnl = mark_to_market(positions) if round < 4: close_positions() # flatten at start of next round
🧭 十、最终效果
通过这套策略:
- 你在每轮都系统化地提取 bot报价→反推手牌→算EV→比价差→决策→平仓;
- 不会被信息滞后或过度持仓困扰;
- 清晰地控制市场风险;
- 并在信息价值高的轮次理性决定是否“花钱看牌”。
是否希望我帮你把这个策略画成一张图表(流程图 + 公式框)?
那样可以更直观看到每轮的输入、计算、决策与平仓逻辑。
