关于 position-sizer
这款 Python skill 使用固定比例、ATR 或 Kelly Criterion 方法,计算股票多头交易的股数。它会应用账户及投资组合限制,并生成 Markdown 和 JSON 风险明细报告。
主要功能
- 01三种仓位计算方法
- 02账户与行业限制
- 03整数或小数股数输出
- 04风险与仓位明细
- 05Markdown 和 JSON 报告
适用场景
- 01计算计划股票交易的股数
- 02比较仓位方法与风险水平
- 03检查交易是否触及集中度限制
- 04根据盈亏统计估算仓位
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ tradermonty/ claude-trading-skills --skill position-sizer安装后在 Claude Code 中输入/position-sizer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
requirements.txtreferences/sizing_methodologies.mdscripts/position_sizer.pyscripts/tests/conftest.pytest_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% 规则:默认每笔交易承担 1% 的风险;除非有特殊理由,否则绝不超过 2%
- 默认使用整股:现有工作流默认继续使用整数股
- 向下取整,绝不进位:整股模式向下取整为整数;小数股模式向下取整至指定精度,确保不超出风险和集中度预算
- 以最严格的限制为准:若有多个限制,最终仓位由其中最严格的限制决定
- 半凯利:实践中绝不使用完整凯利;半凯利只需承担远低得多的风险,即可实现 75% 的增长
- 投资组合风险敞口:未平仓头寸的总风险不应超过账户净值的 6-8%
- 日内交易规则因经纪商而异:FINRA 已用日内保证金标准取代旧有的模式日内交易者交易日计数和 25,000 美元最低净值要求,新标准自 2026-06-04 起生效,经纪商可在 2027-10-20 前分阶段实施。在保证金账户中反复进行当日交易前,请查看经纪商的现行规则。
- 亏损的不对称性:亏损 50% 后,需要盈利 100% 才能回本;应据此调整仓位
评论
支持 Markdown