position-sizer について
固定比率、ATR、Kelly Criterion の方法で、株式の買いポジションの株数を計算する Python スキルです。口座とポートフォリオの制約を適用し、リスク内訳を Markdown と JSON で出力します。
主な機能
- 013種類のポジション計算方法
- 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詳細
ポジションサイザー
概要
リスク管理の原則に基づき、株式のロングトレードで購入する最適な株数を計算します。以下の3つのサイズ算出方法に対応しています。
- 固定比率方式:取引ごとに口座資産の一定割合をリスクにさらします(デフォルト:1%)
- ATR ベース:平均真の値幅を使って、ボラティリティに応じたストップ幅を設定します
- ケリー基準:過去の勝敗統計から、数学的に最適なリスク配分を計算します
すべての方法でポートフォリオの制約(最大ポジション比率、最大セクター比率)を適用し、リスクの詳細を含む最終推奨株数を出力します。デフォルトの出力は整数株です。--fractional は、ユーザーのブローカーが該当の証券と注文タイプで端株取引に対応している場合にのみ使用してください。
使用する場面
- ユーザーが「何株買えばよいですか?」と尋ねた場合
- 特定のトレード設定に対するポジションサイズを計算したい場合
- 1回の取引あたりのリスク、損切り幅の設定、またはポートフォリオ配分について言及した場合
- ケリー基準や 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回の取引あたりのリスクは原則として1%とし、特別な理由がない限り2%を超えないようにします
- 整数株をデフォルトにする:既存のワークフローでは、デフォルトで整数株を使用します
- 切り上げずに切り捨てる:整数株モードでは整数に切り捨て、端株モードでは指定された精度に切り捨てます。これにより、リスクと集中度の予算を超えないようにします
- 最も厳しい制約を優先する:複数の上限が適用される場合は、最も厳しい制約によって最終的なサイズが決まります
- ハーフ・ケリー:実際の運用でフル・ケリーを使用してはいけません。ハーフ・ケリーなら、リスクを大幅に抑えながら成長率の75%を得られます
- ポートフォリオのリスク量:オープンポジションのリスク総額は、口座の純資産の6~8%を超えないようにします
- 日中取引のルールはブローカーごとに異なります:FINRAは、従来のパターン・デイトレーダーに関する取引日数と最低純資産額25,000ドルの要件を、2026-06-04付けで日中証拠金基準に置き換えました。ブローカーは2027-10-20まで段階的に適用できます。証拠金口座で同日に繰り返し取引する前に、ブローカーの最新ルールを確認してください
- 損失の非対称性:50%の損失を取り戻すには100%の利益が必要です。それに応じてサイズを決めてください