mcpField
P
position-sizer

position-sizer

github.com/wind-alice其他143411 次安装2 周前更新
代码仓库

关于 position-sizer

面向需要计算股票多头交易股数的用户,此技能通过固定比例、ATR 或 Kelly 准则估算仓位,并应用账户及行业集中度限制。它提供股数、头寸价值和风险明细,并生成 JSON 与 Markdown 报告。

主要功能

  1. 01支持固定比例、ATR 和 Kelly 方法
  2. 02按账户风险与止损计算股数
  3. 03应用头寸及行业上限
  4. 04比较多种参数情景
  5. 05生成 JSON 和 Markdown 报告

适用场景

  1. 01根据入场价和止损价计算买入股数
  2. 02比较不同风险比例或 ATR 倍数
  3. 03检查持仓是否超出集中度限制
  4. 04依据历史胜率和盈亏数据估算配置

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/wind-alice/alicemarket --skill position-sizer

安装后在 Claude Code 中输入/position-sizer确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
sizing_methodologies.md
scripts/
position_sizer.py
scripts/tests/
conftest.py
test_position_sizer.py

详细介绍

仓位计算器

概述

根据风险管理原则,计算买入多头股票交易的最佳股数。支持三种计算方法:

  • 固定比例法:每笔交易承担固定比例的账户权益作为风险(默认值:1%)
  • ATR 法:使用平均真实波幅设置经波动率调整的止损距离
  • 凯利准则:根据历史盈亏统计数据,计算数学意义上的最佳风险分配

所有方法都会应用投资组合限制(最大仓位比例、最大行业比例),并输出最终建议股数及完整的风险明细。

适用场景

  • 用户询问“我应该买多少股?”
  • 用户想为特定交易方案计算仓位大小
  • 用户提及每笔交易风险、止损仓位计算或投资组合配置
  • 用户询问凯利准则或基于 ATR 的仓位计算
  • 用户想确认某个仓位是否符合投资组合集中度限制

前置条件

  • 无需 API 密钥
  • Python 3.9+,仅使用标准库

工作流

步骤 1:收集交易参数

向用户收集:

  • 必填:账户规模(总权益)
  • 模式 A(固定比例法):入场价、止损价、风险比例(默认 1%)
  • 模式 B(ATR 法):入场价、ATR 值、ATR 倍数(默认 2.0x)、风险比例
  • 模式 C(凯利准则):胜率、平均盈利、平均亏损;可选入场价和止损价,用于计算股数
  • 可选限制:账户最大仓位比例、最大行业比例、当前行业敞口

如果用户提供了股票代码,但没有提供具体价格,请使用可用工具查询当前价格,并根据技术分析建议入场价和止损价。

步骤 2:运行仓位计算脚本

运行仓位计算:

# Fixed Fractional (most common)
python3 skills/position-sizer/scripts/position_sizer.py \
  --account-size 100000 \
  --entry 155 \
  --stop 148.50 \
  --risk-pct 1.0 \
  --output-dir reports/

# ATR-Based
python3 skills/position-sizer/scripts/position_sizer.py \
  --account-size 100000 \
  --entry 155 \
  --atr 3.20 \
  --atr-multiplier 2.0 \
  --risk-pct 1.0 \
  --output-dir reports/

# Kelly Criterion (budget mode - no entry)
python3 skills/position-sizer/scripts/position_sizer.py \
  --account-size 100000 \
  --win-rate 0.55 \
  --avg-win 2.5 \
  --avg-loss 1.0 \
  --output-dir reports/

# Kelly Criterion (shares mode - with entry/stop)
python3 skills/position-sizer/scripts/position_sizer.py \
  --account-size 100000 \
  --entry 155 \
  --stop 148.50 \
  --win-rate 0.55 \
  --avg-win 2.5 \
  --avg-loss 1.0 \
  --output-dir reports/
步骤 3:加载方法论参考资料

阅读 references/sizing_methodologies.md,以说明所选方法的背景、风险指南和投资组合限制最佳实践。

步骤 4:计算多种情景

如果用户未指定单一方法,则运行多种情景进行比较:

  • 固定比例法:风险比例为 0.5%、1.0% 和 1.5%
  • ATR 法:倍数为 1.5x、2.0x 和 3.0x
  • 提供对比表,展示每种情景的股数、仓位价值和美元风险
步骤 5:应用投资组合限制并确定最终仓位

如果用户提供了投资组合背景信息,则添加相应限制:

python3 skills/position-sizer/scripts/position_sizer.py \
  --account-size 100000 \
  --entry 155 \
  --stop 148.50 \
  --risk-pct 1.0 \
  --max-position-pct 10 \
  --max-sector-pct 30 \
  --current-sector-exposure 22 \
  --output-dir reports/

说明哪项限制具有约束作用,以及它为何会限制仓位。

步骤 6:生成仓位报告

提供最终建议,包括:

  • 使用的方法及理由
  • 准确股数和仓位价值
  • 美元风险及其占账户的比例
  • 止损价
  • 任何具有约束作用的限制
  • 风险管理提醒(投资组合风险敞口、严格执行止损)

输出格式

JSON 报告
{
  "schema_version": "1.0",
  "mode": "shares",
  "parameters": {
    "entry_price": 155.0,
    "account_size": 100000,
    "stop_price": 148.50,
    "risk_pct": 1.0
  },
  "calculations": {
    "fixed_fractional": {
      "method": "fixed_fractional",
      "shares": 153,
      "risk_per_share": 6.50,
      "dollar_risk": 1000.0,
      "stop_price": 148.50
    },
    "atr_based": null,
    "kelly": null
  },
  "constraints_applied": [],
  "final_recommended_shares": 153,
  "final_position_value": 23715.0,
  "final_risk_dollars": 994.50,
  "final_risk_pct": 0.99,
  "binding_constraint": null
}
Markdown 报告

与 JSON 报告同时自动生成。内容包括:

  • 参数摘要
  • 当前使用方法的计算详情
  • 限制分析(如有)
  • 最终建议,包括股数、价值和风险

报告保存在 reports/ 目录中,文件名为 position_sizer_YYYY-MM-DD_HHMMSS.json 和 .md。

资源

  • references/sizing_methodologies.md:固定比例法、ATR 法和凯利准则的综合指南,包含示例、对比表和风险管理原则
  • scripts/position_sizer.py:主要计算脚本(CLI 接口)

核心原则

  1. 生存优先:仓位管理重在承受连败,而非最大化盈利
  2. 1% 规则:每笔交易默认承担 1% 的风险;除非有特殊理由,否则绝不超过 2%
  3. 向下取整:股数始终向下取整为整数(绝不向上取整)
  4. 从严执行:存在多项限制时,以最严格的一项确定最终仓位
  5. 半 Kelly:实践中绝不使用完整 Kelly;半 Kelly 只需承担远低得多的风险,就能实现 75% 的增长
  6. 组合风险敞口:总未平仓风险不应超过账户权益的 6-8%
  7. 亏损的不对称性:亏损 50% 需要盈利 100% 才能回本;仓位应据此调整

评论

支持 Markdown