npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@inoader/bo

v1.0.2

Published

仓位管理计算器 - 投注与交易仓位管理工具

Downloads

395

Readme

bo

Position Calculator / 仓位管理计算器

支持标准投注、Polymarket 预测市场、股票交易、套利/抽水、纳什均衡、组合凯利(独立)与相关情景组合凯利(非独立)计算。

npm Publish

功能特性

  • 标准模式 - 赔率 + 胜率计算凯利公式
  • Polymarket 模式 - 针对预测市场优化,直接输入市场价格和你的概率
  • 股票交易模式 - 基于当前价/止盈价/止损价计算风险建议与建仓仓位
  • 组合凯利模式 - 多标的联合最优仓位(独立假设)
  • 相关情景组合凯利模式 - 非独立事件按联合情景优化(-K
  • 资产等级模式 - 输入资金,输出简中 A 系列资产等级与自然对数 L 系列等级(-L
  • 套利检测 - 双边或多边套利机会计算
  • 抽水分析 - 无套利时显示庄家抽水率
  • 纳什均衡模式 - 2x2 双人博弈的纯策略与混合策略均衡计算
  • 交互式和命令行两种使用方式
  • 支持全局参数 -h/-help-v/-version
  • 提供全凯利、半凯利、1/4凯利建议(含风险金额与建仓金额)
  • 显示算术期望收益,并计算全凯利、半凯利、1/4凯利仓位下的几何期望收益
  • 支持 --json 输出,便于脚本和自动化处理

安装

方式一:通过 npm 安装

npm install -g @inoader/bo

安装后可直接使用:

bo 2.0 60

npm 包内置 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.jsonCargo.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.00

Polymarket 模式

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 个标的收益率(百分数)

建模步骤:

  1. 列出“互斥且完备”的联合情景(把相关性直接体现在情景中)。
  2. 给每个情景赋予概率,且总和约为 100
  3. 在每个情景下,为每个标的填写对应收益率(下限 -100)。
  4. 按命令格式顺序拼接参数并计算。
# 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) / b
  • b = 净赔率(赔率 - 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