mcpField
P
position-sizer

position-sizer

github.com/tradermonty其他3.4k3.8k 次安装2 天前更新
代码仓库

关于 position-sizer

这款 Python skill 使用固定比例、ATR 或 Kelly Criterion 方法,计算股票多头交易的股数。它会应用账户及投资组合限制,并生成 Markdown 和 JSON 风险明细报告。

主要功能

  1. 01三种仓位计算方法
  2. 02账户与行业限制
  3. 03整数或小数股数输出
  4. 04风险与仓位明细
  5. 05Markdown 和 JSON 报告

适用场景

  1. 01计算计划股票交易的股数
  2. 02比较仓位方法与风险水平
  3. 03检查交易是否触及集中度限制
  4. 04根据盈亏统计估算仓位

安装

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

$npx skills add https://github.com/tradermonty/claude-trading-skills --skill position-sizer

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

包含的文件

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

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

详细介绍

仓位计算器

概述

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

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

所有方法都会应用投资组合约束(最大仓位比例、最大行业比例),并输出包含完整风险明细的最终建议股数。默认输出整数股。仅当用户的券商支持该证券和订单类型的碎股交易时,才使用 --fractional。

适用场景

  • 用户询问“我应该买多少股?”
  • 用户想为特定交易方案计算仓位大小
  • 用户提到每笔交易风险、止损规模或投资组合配置
  • 用户询问凯利准则或基于 ATR 的仓位计算
  • 用户账户规模较小,整数股取整会导致无法充分利用已设定的风险预算
  • 用户想确认某个仓位是否符合投资组合集中度限制

前提条件

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

工作流

步骤 1:收集交易参数

向用户收集:

  • 必填:账户规模(总权益)
  • 模式 A(固定比例法):入场价、止损价、风险比例(默认 1%)
  • 模式 B(基于 ATR 的方法):入场价、ATR 值、ATR 倍数(默认 2.0x)、风险比例
  • 模式 C(凯利准则):胜率、平均盈利、平均亏损;可选提供入场价和止损价以计算股数
  • 可选约束:账户最大仓位比例、最大行业比例、当前行业敞口
  • 可选股数模式:默认使用整数股;券商支持时,可使用 --fractional --share-precision N 进行碎股交易

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

步骤 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/

# Fractional shares for small accounts or high-priced stocks
python3 skills/position-sizer/scripts/position_sizer.py \
  --account-size 1000 \
  --entry 155 \
  --stop 148.50 \
  --risk-pct 1.0 \
  --fractional \
  --share-precision 4 \
  --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. 以最严格的限制为准:若有多个限制,最终仓位由其中最严格的限制决定
  6. 半凯利:实践中绝不使用完整凯利;半凯利只需承担远低得多的风险,即可实现 75% 的增长
  7. 投资组合风险敞口:未平仓头寸的总风险不应超过账户净值的 6-8%
  8. 日内交易规则因经纪商而异:FINRA 已用日内保证金标准取代旧有的模式日内交易者交易日计数和 25,000 美元最低净值要求,新标准自 2026-06-04 起生效,经纪商可在 2027-10-20 前分阶段实施。在保证金账户中反复进行当日交易前,请查看经纪商的现行规则。
  9. 亏损的不对称性:亏损 50% 后,需要盈利 100% 才能回本;应据此调整仓位

评论

支持 Markdown