trader-risk について
trader-riskは、trader-budgetやtrader-rebalanceなどが作成した注文案を検査するスキルです。設定ルールに照らして判定し、注文ごとの指紋と結果を記録します。注文の発注や制限の変更は行いません。
主な機能
- 01注文形式、資産、金額制限の確認
- 02保有比率、現金、空売りルールの評価
- 03重複注文と日次上限の検出
- 04注文バッチ内の約定を想定した検査
- 05注文指紋付きの判定結果を記録
活用シーン
- 01発注前の注文案の審査
- 02バッチ注文による保有比率や現金制限の確認
- 03注文編集後の再検査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jakeschincariol/ trader-skill --skill trader-riskインストール後、Claude Code で/trader-riskを入力して読み込まれたか確認します。
同梱ファイルcheck.py
詳細
trader-risk
リスクマネージャーは、提案とブローカーの間にあるゲートです。trader-budget、trader-rebalance、または trader-tax が作成した注文は、すべてこのゲートを通ります。ある注文が BLOCK になった場合、その判定は最終的なものです。その注文についてユーザーに承認を求めることも、ブローカーに送ることもありません。
以下の ${CLAUDE_SKILL_DIR} は、このスキルのフォルダー(SKILL.md が置かれている場所)です。
python3 "${CLAUDE_SKILL_DIR}/check.py" # trader/ files; writes trader/state/risk.json
python3 "${CLAUDE_SKILL_DIR}/check.py" --json
python3 "${CLAUDE_SKILL_DIR}/check.py" --no-write # look without recording
読み書きするファイル
| ファイル | 内容 |
|---|---|
trader/orders.json | 提案された注文 |
trader/config.json | 制限値(trader-budget は config.example.json を同梱しています) |
trader/portfolio.json | 現金と保有資産。存在しない場合は、予算を入金した新規口座として扱います |
trader/prices.json | 株数で指定された注文のサイズ計算と、保有資産の評価に必要です |
trader/state/broker.json | 重複注文と1日の上限を確認するために、今日発注済みの注文を記録します |
trader/state/risk.json | 判定と、各注文の完全一致を確認するフィンガープリントを記録します |
チェック項目
注文はファイル内の順番でチェックします。各注文が約定したものとして扱うため、注文ごとには問題がなくても、まとめるとルールに違反するバッチを検出できます。
| チェック | ブロックする条件 |
|---|---|
| 形式 | シンボルがない、side が buy または sell ではない、qty と notional の両方またはどちらも指定されていない、notional 注文が market + day ではない(Alpaca のルール)、limit 注文に指値がない |
| 資産 | allow_options が false なのにオプションのシンボルが指定されている場合、または暗号資産や米国株・ETF 以外の銘柄 |
| ブロック対象 | 銘柄が blocked リストに含まれている |
| 注文額 | min_order_usd 未満、または max_order_usd 超過 |
| ポジション | 約定後、口座に占める株式の割合が max_position_pct を超える |
| 現金 | 買い注文によって現金がバッファを下回る、または証拠金が必要になる(allow_margin が false) |
| 空売り | 保有株数を超える売り注文(allow_short が false) |
| 重複 | 同じバッチ内で同じシンボルと side の注文が重複している、または今日すでに発注済み |
| 1日の上限 | 今日発注済みの注文数が max_orders_per_day を超える |
警告はブロックされませんが、ユーザーに伝えてください。LIVE 口座、数値が文字列ではなく数値として送られていること、高度な注文(ブラケット注文)が該当します。
手順
- 注文が株数で指定されている場合、または保有資産の評価額が必要な場合は、
trader/prices.jsonが最新であることを確認します(trader-alerts:alerts.py quote --holdings --write)。 check.pyを実行します。終了コード 0 はすべての注文が通過したことを、1 は少なくとも1件がブロックされたことを示します。- 結果を、注文ごとにわかりやすい言葉でユーザーに伝えます。BLOCK の場合は理由と対処方法(注文額を減らす、別の銘柄にする、またはユーザーが変更を判断できるルール)を伝えます。自分で制限値を変更してはいけません。
- 注文に何らかの変更があった場合は、もう一度チェックを実行します。trader-broker はフィンガープリントを使って各注文と判定を照合するため、編集した注文は再度チェックに通るまで発注できません。また、前日の判定は当日には有効ではありません。
例:一連の注文
trader-budget が提案した5件の買い注文(AAPL $1,250、AXP $1,119、GOOGL $823、KO $708、BAC $600)を、例の設定を使用した新規の $5,000 のペーパー口座で実行する場合:
PASS #1 buy AAPL $1,250
PASS #2 buy AXP $1,119
PASS #3 buy GOOGL $823
PASS #4 buy KO $708
PASS #5 buy BAC $600
5 passed, 0 blocked. Cash after the passed orders: $500 (paper account).
AAPL は25%の上限($5,000 のうち $1,250)ちょうどとなり、許可されます。AAPL をさらに $100 購入する6件目の注文は、3つの理由でブロックされます。現金バッファの $500 を下回ること、AAPL が25%の上限を超えること、同じバッチ内で AAPL の注文が重複することです。
決して行わないこと
注文を発注したり、通過させるために注文を編集したり、制限を緩和したり、PASS をユーザーの承認として扱ったりすることは決してありません。PASS は、その注文をユーザーに提示してよいことだけを意味します。
安全性
- 教育とツールの提供を目的としており、金融アドバイスではありません。PASS はルールのチェック結果であり、推奨を意味するものではありません。
- デフォルトではペーパートレードを使用します(
"paper": true)。実取引を行うかどうかは、ユーザー自身が自身の設定で決定します。 - このパックで注文を発注するのは trader-broker のみで、次の3つをすべて満たす場合に限られます。trader-risk がその日に該当する注文を審査していること、ユーザーがチャットでその注文について明示的に「はい」と入力していること、そして注文ツールが「承認が必要」に設定されているため、ユーザーが Claude 自身のカードで一度「許可」をクリックしていること(カスタマイズ > コネクター > ツールの権限)。注文ツールを「常に許可」に設定してはいけません。
- 設定で許可され、ユーザーが確認した場合を除き、オプション取引、証拠金取引、空売り、レバレッジは使用しません。
- ブローカーのキーは環境変数または Claude Desktop の設定に保存し、チャットには決して入力しません。