@inoader/bo
v1.0.2
Published
仓位管理计算器 - 投注与交易仓位管理工具
Downloads
395
Readme
bo
Position Calculator / 仓位管理计算器
支持标准投注、Polymarket 预测市场、股票交易、套利/抽水、纳什均衡、组合凯利(独立)与相关情景组合凯利(非独立)计算。
功能特性
- 标准模式 - 赔率 + 胜率计算凯利公式
- Polymarket 模式 - 针对预测市场优化,直接输入市场价格和你的概率
- 股票交易模式 - 基于当前价/止盈价/止损价计算风险建议与建仓仓位
- 组合凯利模式 - 多标的联合最优仓位(独立假设)
- 相关情景组合凯利模式 - 非独立事件按联合情景优化(
-K) - 资产等级模式 - 输入资金,输出简中 A 系列资产等级与自然对数 L 系列等级(
-L) - 套利检测 - 双边或多边套利机会计算
- 抽水分析 - 无套利时显示庄家抽水率
- 纳什均衡模式 - 2x2 双人博弈的纯策略与混合策略均衡计算
- 交互式和命令行两种使用方式
- 支持全局参数
-h/-help与-v/-version - 提供全凯利、半凯利、1/4凯利建议(含风险金额与建仓金额)
- 显示算术期望收益,并计算全凯利、半凯利、1/4凯利仓位下的几何期望收益
- 支持
--json输出,便于脚本和自动化处理
安装
方式一:通过 npm 安装
npm install -g @inoader/bo安装后可直接使用:
bo 2.0 60npm 包内置 Linux x64、macOS Intel、macOS Apple Silicon 与 Windows x64 的预编译可执行文件;普通安装不需要 Rust 工具链。
方式二:从源码编译
git clone https://github.com/inoader/bo.git
cd bo
cargo build --release二进制文件位于 target/release/bo。
发布
项目通过 GitHub Actions 构建多平台二进制并发布到 npm,不再上传 GitHub Release 附件。
发布前更新 package.json 与 Cargo.toml 中的版本号,然后推送对应 tag:
git tag v1.0.2
git push origin v1.0.2发布流程需要在仓库 Secrets 中配置具备 npm 发布权限的 NPM_TOKEN。
使用方法
参数约束
bo -h/bo -help/bo --help:显示用法bo -v/bo -version/bo --version:显示版本bo -L <资金>:资产等级计算,资金必须为正数- 赔率必须大于
1.0 - 胜率/概率必须在
0-100之间 - Polymarket 市场价格必须在
(0, 100)之间 - 本金、当前价、止盈价、止损价必须为正数
- 组合凯利标的数量必须在
2-12之间 -K标的数量必须在1-12,情景数量必须在2-128-K情景概率之和应约等于100%(允许微小浮点误差)-K情景收益率按百分数输入,且不得小于-100%- 纳什模式需要 8 个收益值(
a11 a12 a21 a22 b11 b12 b21 b22,允许负数)
输入单位说明
- 概率/胜率统一使用
0-100,例如60表示60% -K的收益率也用百分数输入,例如20表示+20%、-10表示-10%--json仅支持命令行参数模式,不支持交互式输入
标准模式
bo <赔率> <胜率> [本金]
bo --json <赔率> <胜率> [本金]bo 2.0 60 # 赔率2.0,胜率60%
bo 2.0 60 10000 # 本金10000输出示例:
──────────────────────────────────────────────────
计算结果
──────────────────────────────────────────────────
输入参数:
├─ 赔率: 2.00
├─ 净赔率 (b): 1.00
└─ 胜率 (p): 60.00%
分析:
├─ 算术期望收益: 20.00%
├─ 几何期望收益 (全凯利): 2.0340%
├─ 几何期望收益 (半凯利): 1.5156%
├─ 几何期望收益 (1/4凯利): 0.8795%
├─ 状态: ✓ 正期望值 (值得下注)
└─ 仓位建议: 20.00%
基于本金 10000.00 的投注金额:
├─ 全凯利: 2000.00
├─ 半凯利: 1000.00
└─ 1/4凯利: 500.00Polymarket 模式
bo -p <市场价格> <你的概率> [本金]
bo --json -p <市场价格> <你的概率> [本金]bo -p 60 75 # 市场价格60c,你认为75%
bo -p 60 75 1000 # 本金1000股票交易模式
bo -s <当前价> <止盈价> <止损价> <胜率> [本金]
bo --json -s <当前价> <止盈价> <止损价> <胜率> [本金]bo -s 100 120 90 60 # 当前价100,止盈120,止损90,胜率60%
bo -s 100 120 90 60 10000 # 本金10000输出示例:
──────────────────────────────────────────────────
股票交易计算结果
──────────────────────────────────────────────────
输入参数:
├─ 当前价: 100.00
├─ 止盈价: 120.00
├─ 止损价: 90.00
└─ 胜率 (p): 60.00%
风险分析:
├─ 预期收益: 20.00
├─ 风险: 10.00
├─ 止损幅度: 10.00%
└─ 盈亏比: 2.00
分析:
├─ 净赔率 (b): 2.00
├─ 算术期望收益: 80.00%
├─ 几何期望收益 (全凯利): 15.9909%
├─ 几何期望收益 (半凯利): 11.9213%
├─ 几何期望收益 (1/4凯利): 6.9561%
├─ 状态: ✓ 正期望值 (值得交易)
├─ 风险建议: 40.00%
└─ 建仓仓位: 400.00% (需杠杆 4.00x)
基于本金 10000.00 的仓位金额:
├─ 全凯利风险金: 4000.00
├─ 半凯利风险金: 2000.00
├─ 1/4凯利风险金: 1000.00
├─ 全凯利建仓: 40000.00
├─ 半凯利建仓: 20000.00
└─ 1/4凯利建仓: 10000.00套利/抽水模式(双边)
bo -a <赔率1> <赔率2> [本金]
bo --json -a <赔率1> <赔率2> [本金]- 隐含概率之和 < 100% → 显示套利机会和投注方案
- 隐含概率之和 = 100% → 无套利,抽水率为 0
- 隐含概率之和 > 100% → 显示庄家抽水率
bo -a 2.1 2.2 # 有套利机会
bo -a 1.9 1.9 # 无套利,显示抽水
bo -a 2.1 2.2 1000 # 本金1000输出示例(有套利):
✓ 套利机会存在!
├─ 套利收益率: 2.44%
├─ 方案1投注比例: 51.22%
└─ 方案2投注比例: 48.78%
基于本金 1000.00 的投注方案:
├─ 方案1投注: 512.20
├─ 方案2投注: 487.80
└─ 获胜总回报: 1024.39 (收益: 24.39)多标的套利/抽水模式
bo -A <标的数量> <赔率1> <赔率2> ... <赔率N> [本金]
bo --json -A <标的数量> <赔率1> <赔率2> ... <赔率N> [本金]适用于多选项(如足球胜平负、多匹马赛跑等)的套利或抽水计算。
bo -A 3 2.5 4.0 5.0 # 3个标的,有套利
bo -A 3 2.0 3.5 4.0 # 3个标的,显示抽水
bo -A 3 2.5 4.0 5.0 1000 # 本金1000纳什均衡模式(2x2)
bo -n <a11> <a12> <a21> <a22> <b11> <b12> <b21> <b22>
bo --json -n <a11> <a12> <a21> <a22> <b11> <b12> <b21> <b22>其中:
A = [[a11, a12], [a21, a22]]为行玩家收益矩阵B = [[b11, b12], [b21, b22]]为列玩家收益矩阵
bo -n 3 0 5 1 3 5 0 1 # 囚徒困境
bo -n 1 -1 -1 1 -1 1 1 -1 # Matching Pennies组合凯利模式
bo -k <标的数量> <赔率1> <胜率1> ... <赔率N> <胜率N> [本金]
bo --json -k <标的数量> <赔率1> <胜率1> ... <赔率N> <胜率N> [本金]
bo -k <descriptor1> <descriptor2> ... [本金]
bo --json -k <descriptor1> <descriptor2> ... [本金]适用于同时配置多个独立策略腿(标准/Polymarket/股票/套利)的联合仓位优化。
descriptor 支持以下格式:
std:赔率:胜率(标准模式,胜率单位为%)pm:市场价格:你的概率(Polymarket,价格与概率单位为%)stock:当前价:止盈价:止损价:胜率(别名:stk)arb:赔率1:赔率2(双边套利腿,按确定性收益/抽水建模)marb:赔率1,赔率2,...(多边套利腿,按确定性收益/抽水建模)
bo -k 2 2.0 60 2.5 55
bo -k 2 2.0 60 2.5 55 10000
bo -k std:2.0:60 pm:60:75 stock:100:120:90:60 10000
bo --json -k std:2.0:60 arb:2.1:2.2 marb:2.5,4.0,5.0 10000相关情景组合凯利模式(非独立,-K)
bo -K <标的数量> <情景数量> <p1> <r11> ... <r1N> ... <pM> <rM1> ... <rMN> [本金]
bo --json -K <标的数量> <情景数量> <p1> <r11> ... <r1N> ... <pM> <rM1> ... <rMN> [本金]参数说明:
N:标的数量M:联合情景数量pi:第i个情景概率(百分数)rij:第i个情景下第j个标的收益率(百分数)
建模步骤:
- 列出“互斥且完备”的联合情景(把相关性直接体现在情景中)。
- 给每个情景赋予概率,且总和约为
100。 - 在每个情景下,为每个标的填写对应收益率(下限
-100)。 - 按命令格式顺序拼接参数并计算。
# 2 个标的,2 个相关情景
# 情景1: 50%,收益 [+20%, -10%]
# 情景2: 50%,收益 [-10%, +20%]
bo -K 2 2 50 20 -10 50 -10 20 10000
# 2 个标的,4 个相关情景(更完整的联合分布)
bo -K 2 4 30 20 15 20 20 -100 10 -100 15 40 -100 -100 10000交互式模式
不带参数或仅带模式标志即可进入交互式模式:
bo # 标准模式交互
bo -L # 资产等级交互
bo -p # Polymarket 交互
bo -s # 股票交易交互
bo -a # 套利交互
bo -A # 多标的套利交互
bo -n # 纳什均衡交互
bo -k # 组合凯利交互
bo -K # 相关情景组合凯利交互资产等级模式
bo -L <资金>
bo --json -L <资金>bo -L 50000000输出示例:
A8.5
L17.7275- A 系列按简中圈常用的资产位数表达,保留 1 位小数。
- L 系列为资金金额的自然对数
ln(金额),保留 4 位小数。
公式说明
凯利公式
f* = (bp - q) / bb= 净赔率(赔率 - 1)p= 胜率q= 败率(1 - p)f*= 最优仓位比例
Polymarket 变体
隐含赔率 = (1 - 市场价格) / 市场价格
f* = (隐含赔率 × 你的概率 - (1 - 你的概率)) / 隐含赔率套利检测
隐含概率 = 1 / 赔率
套利条件: Σ隐含概率 < 100%
套利收益率 = (1 / Σ隐含概率) - 1
双边投注比例:
方案1投注比例 = 赔率2 / (赔率1 + 赔率2)
方案2投注比例 = 赔率1 / (赔率1 + 赔率2)
多边投注比例:
标的i投注比例 = (1 / 赔率i) / Σ隐含概率纳什均衡(2x2)
设行玩家收益矩阵 A、列玩家收益矩阵 B:
A = [[a11, a12], [a21, a22]]
B = [[b11, b12], [b21, b22]]内部混合策略均衡(若存在)满足双方无差异:
q = (a22 - a12) / (a11 - a12 - a21 + a22)
p = (b22 - b21) / (b11 - b21 - b12 + b22)p:行玩家选择“上”策略的概率q:列玩家选择“左”策略的概率
相关情景组合凯利(非独立)
直接输入联合情景 {(π_s, r_s)},优化目标为:
max_f Σ_s π_s * ln(1 + f · r_s)
s.t. f_i >= 0, Σ f_i <= 1这避免了把相关事件误当作独立事件所带来的仓位偏差。
Contributors
- inoader
- GPT / Codex
