定价: 0.01 USDC (x402支付) 作者: Rich (@samhuang2025)
计算交易/投注的期望值(Expected Value),判断是否具有正期望。
核心功能:
text
EV = p × win - (1-p) × loss
text
EV = p × b - (1-p) × 1
其中 b = 盈亏比
text
EV = 你的概率 - 市场概率
EV值含义行动EV > 0正期望值,能赚✅ 可以玩EV = 0不亏不赚⚪ 观望EV < 0负期望值,必亏❌ 不玩
python
def calculate_ev(p, win, loss):
"""
计算期望值
Args:
p: 胜率 (0-1)
win: 赢的金额
loss: 输的金额
Returns:
EV值 (正=赚,负=亏)
"""
return p * win - (1 - p) * loss
python
def polymarket_ev(your_prob, market_price):
"""
计算Polymarket的EV
Args:
your_prob: 你判断的真实概率 (0-1)
market_price: 市场定价 (0-1)
Returns:
edge (你的概率 - 市场概率)
"""
return your_prob - market_price
python
def win_loss_ratio(win_pct, loss_pct):
"""计算盈亏比"""
return win_pct / loss_pct
text
EV = 0.5 × 1.10 - 0.5 × 1.00 = +$0.05
✅ 每赌一次期望赚5分
text
EV = 0.60 - 0.40 = +0.20 (20% edge)
✅ 每投$1期望赚$0.20
text
正常EV = 0.55 - 1.00 = -$0.45 (亏)
套利EV = 1.18 - 1.00 = +$0.18 (赚)
胜率EV评价45%-10%远离48%-4%避开50%0%公平52%+4%可以55%+10%不错60%+20%很好70%+40%极佳
市场定价你的判断Edge30%45%+15%40%55%+15%50%65%+15%60%75%+15%
python
#!/usr/bin/env python3
"""EV Calculator"""
import argparse
import json
def calculate_ev(p, win, loss):
return p * win - (1 - p) * loss
def polymarket_ev(your_prob, market_price):
edge = your_prob - market_price
ev_dollar = edge / market_price if market_price > 0 else 0
return edge, ev_dollar
def main():
parser = argparse.ArgumentParser(description="EV Calculator")
parser.add_argument("--p", type=float, help="胜率 (0-1)")
parser.add_argument("--win", type=float, help="赢的金额")
parser.add_argument("--loss", type=float, help="输的金额")
parser.add_argument("--market", type=float, help="市场定价 (Polymarket)")
parser.add_argument("--your", type=float, help="你的判断概率")
parser.add_argument("--json", action="store_true")
args = parser.parse_args()
if args.p and args.win and args.loss:
ev = calculate_ev(args.p, args.win, args.loss)
result = {
"type": "basic",
"ev": ev,
"verdict": "✅ 正期望" if ev > 0 else "❌ 负期望" if ev < 0 else "⚪ 持平"
}
elif args.market and args.your:
edge, ev = polymarket_ev(args.your, args.market)
result = {
"type": "polymarket",
"market_price": args.market,
"your_prob": args.your,
"edge": edge,
"ev_per_dollar": ev,
"verdict": "✅ 正期望" if edge > 0 else "❌ 负期望"
}
if args.json:
print(json.dumps(result, indent=2))
else:
print(f"\n🎯 EV计算结果")
print(f"=" * 30)
if result["type"] == "basic":
print(f"胜率: {args.p*100:.0f}% | 赢: ${args.win} | 亏: ${args.loss}")
print(f"EV: ${result['ev']:.2f}")
else:
print(f"市场定价: {args.market*100:.0f}% | 你的判断: {args.your*100:.0f}%")
print(f"Edge: {result['edge']*100:.0f}%")
print(f"每$期望赚: ${result['ev_per_dollar']:.2f}")
print(f"\n{result['verdict']}")
if __name__ == "__main__":
main()