mcpField
T
trader-risk

trader-risk

github.com/jakeschincariolその他3.2k133 回インストール1 週間前に更新
リポジトリ

trader-risk について

trader-riskは取引ワークフロー向けのPython製リスク確認スキルです。設定した制限に照らして注文案を評価し、結果を記録しますが、注文は発注しません。

主な機能

  1. 01注文形式、資産、空売りの確認
  2. 02ポジション、現金、損失の制限適用
  3. 03取引時間帯と日次件数の確認
  4. 04決済と新規エントリーの区別
  5. 05注文フィンガープリント付きの判定記録

活用シーン

  1. 01新規注文案を提示する前の確認
  2. 02設定制限を超えた理由の特定
  3. 03新規注文の制限に関係なく決済を許可

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jakeschincariol/day-trader-skill --skill trader-risk

インストール後、Claude Code で/trader-riskを入力して読み込まれたか確認します。

同梱ファイルcheck.py

詳細

trader-risk

リスクマネージャーは、注文の提案とブローカーの間にある関門です。trader-budget が作成したすべての注文と、trader-broker の全ポジション解消注文は、リスクマネージャーを通過します。注文に対する BLOCK は最終判断です。ユーザーに承認を求めることも、ブローカーに注文を送ることもありません。デイトレードをする人の多くは損失を出します。こうした制限により、1回あたりの損失と1日の損失を抑えます。取引で利益が出ることを保証するものではありません。

以下の ${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
python3 "${CLAUDE_SKILL_DIR}/check.py" --now "2026-10-19 10:15"  # pin the clock (New York time)

読み書きするファイル

ファイル内容
trader/orders.json提案された注文(trader-budget、または trader-broker の全ポジション解消注文)
trader/config.json制限(trader-budget には config.example.json が付属します)
trader/portfolio.json現金と保有資産。ファイルがない場合は、予算を入金した新規口座として扱います
trader/prices.json最新価格がある場合、リスク計算の基準となるエントリー価格を更新し、保有資産の評価にも使います
trader/state/broker.json当日に発注した内容:重複注文、1日の取引回数、1日の損失、デイトレード回数
trader/state/risk.json書き込まれる判定と、各注文の正確な内容を識別するフィンガープリント

エントリーとエグジット

エントリーはポジションを新規に建てる、または追加する注文です。買い注文、またはショートになる売り注文が該当します。エグジットは、すでに保有しているポジションを減らす注文です。いつでもポジションを解消できる必要があるため、エグジットでは形式、資産、空売りのみをチェックします。それ以外のルール(デイトレードの制限、エントリー時間帯、損失、リスクリワード、ブロックリスト、サイズ、重複注文)は、BLOCK ではなく警告になります。

チェック項目

注文はファイル内の順番にチェックされます。各注文が約定したものとして扱われるため、注文単位では問題なくても、まとめると上限を超えるバッチが検出されます。

チェック項目ブロックされる条件
形式シンボルがない、売買方向が買いまたは売りではない、数量と想定元本のどちらも指定されていない、または両方指定されている、想定元本による注文が成行注文かつ当日限り(Alpaca のルール)ではない、指値注文に指値価格がない、ブラケット注文が単元株ではない、day または gtc ではない、もしくは損切りまたは利確の指定がない
資産allow_options が false のときにオプションのシンボルを指定している、または暗号資産や米国株・ETFのティッカー以外を指定している
空売り保有数を超える売り注文(allow_short が false)
ブロック対象(新規注文)ティッカーが blocked リストに含まれている
注文サイズ(新規注文)min_order_usd 未満、または max_order_usd 超
ポジション(新規注文)その株式が口座の max_position_pct を超える
現金(新規注文)買い注文によって現金バッファを下回る、または証拠金が必要になる
損切り(新規注文)require_stop が true なのに損切りが指定されていない(ブラケット注文の stop_loss_stop_price、または注文の計画上の損切り)。損切り価格がエントリーの逆側にある場合も該当します
損失(新規注文)数量 x(エントリー価格 − 損切り価格)が max_loss_per_trade_usd を超える
リスクリワード(新規注文)(目標価格 − エントリー価格)/(エントリー価格 − 損切り価格)が min_reward_risk 未満
1日の損失(新規注文)今日の新規注文における損切り価格での最大損失の合計に今回の注文を加えると、max_daily_loss_usd を超える
取引回数(新規注文)今日すでに max_trades_per_day 件の新規注文を出している
時間帯(新規注文)no_entries_before より前、または no_entries_after より後、あるいは市場が閉まっている
PDT(新規注文、pdt_guard が true の場合のみ)過去5営業日にすでに3回デイトレードをしている
重複(新規注文)同じバッチ内で同じシンボルと売買方向の注文が2回ある、または今日すでに発注済み
1日の注文数上限(新規注文)今日すでに max_orders_per_day 件の注文を出している

数値の扱い:

  • 基準となるエントリー価格:指値注文では指値価格です。成行注文では、計画上のエントリー価格と trader/prices.json の最新価格(15分以内)のうち、高いほうを使います。10:15 に書かれた計画でも、価格が上昇した後の10:55時点のリスクを過小評価することはできません。古い価格は使われず、その旨が示されます。
  • 1日の損失には、今日発注したすべての新規注文の最大損失額全額が、勝敗にかかわらず、trader-broker の記録どおりに計上されます。サイズ上限いっぱいの取引を3回行うと、1日の上限が150ドルの場合、それを使い切ります。
  • 時間帯はニューヨーク時間で、ツール内で計算されます(夏時間も考慮されます)。コンピューターのタイムゾーンは使われません。週末とNYSEの休場日は市場が閉まっています。午後1時に早引けする日は、時間帯の終了時刻も3時間早まります。時間帯の制限を無効にするには、no_entries_* の両方を null に設定します。
  • pdt_guard(デフォルトではオフ)は、ログ上で同じ日に買って売ったシンボルに加え、今日発注した新規注文もデイトレードとして数えます(引けまでにポジションを解消する想定です)。FINRA は25,000ドルのパターン・デイトレーダー最低資産要件を撤廃しました(Regulatory Notice 26-10、2026年6月4日発効。証券会社は2027年10月20日まで段階的に導入できます)。そのため、一部の証券会社では旧ルールが引き続き適用されます。利用している証券会社が該当する場合は、pdt_guard をオンにしてください。

警告は注文をブロックしませんが、ユーザーに伝えてください。LIVE口座、数値として送信された数値(文字列ではない)、計画にのみ記載され証券会社には設定されていない損切り、使用できる期間を過ぎた価格、本日の早引けが対象です。

手順

  1. 計画を立ててから価格が動いている可能性がある場合は、まず更新します (trader-alerts:alerts.py quote TSLA --write)。
  2. check.py を実行します。終了コード 0 はすべての注文が通過したことを、1 は少なくとも1件がブロックされたことを意味します。
  3. 結果をユーザーに平易な言葉で、注文ごとに伝えます。ストップ時の最大損失、リワード対リスク比、今日の上限のうちどれだけを使うかを説明します。BLOCK の場合は、理由と対処法(株数を減らす、trader-exit でストップを近づける、取引可能時間まで待つ、または取引を見送る)を伝えます。上限を自分で変更してはいけません。
  4. 注文に何らかの変更を加えた場合は、再度チェックを実行します。trader-broker はフィンガープリントで各注文と判定を照合するため、編集した注文は再度チェックに通るまで準備完了ではなく、昨日の判定は今日には通用しません。

例:リール

2026-10-19(月曜日)の午前10時15分に trader-budget で作成した TSLA のブラケット注文。例の設定を使った、新規の 5,000 ドルのペーパー口座です。

PASS  #1 buy TSLA 8 shares, entry
          entry 364.18 (the plan's entry), stop 358.32, target 370.04: risk 5.86 a share
          max loss $46.88 (limit $50), reward:risk 1.00 (min 1)
          today before this: 0 of 3 trades, $0 of $150 daily loss

1 passed, 0 blocked at 2026-10-19 10:15 New York. Cash after the passed orders: $2,086.56 (paper account).

株数をあと1株増やすと、ブロックされます。

BLOCK #1 buy TSLA 9 shares, entry
          entry 364.18 (the plan's entry), stop 358.32, target 370.04: risk 5.86 a share
          max loss $52.74 (limit $50), reward:risk 1.00 (min 1)
          today before this: 0 of 3 trades, $0 of $150 daily loss
        - loss: 9 shares x 5.86 risk a share = $52.74 at the stop, over your $50 max loss per trade

同じ8株を午前10時55分に、trader/prices.json にある午前10時52分の実際の価格(366.48)でチェックすると、2つの理由でブロックされます。ストップ時の損失は 8 x 8.16 = $65.28、リワード対リスク比は 0.44 です。午前9時40分にチェックした場合は、取引可能時間外のためブロックされます(午前9時45分より前は新規エントリー不可)。ポジションを決済する午後3時55分の売り注文は、エントリー締め切りの午後3時30分を過ぎていても通過します。これは決済注文だからです。

ルール

  • PASS は、注文をユーザーに提示してよいという意味にすぎません。承認を意味するものではありません。
  • すべての数値は、設定、注文、ポートフォリオ、価格、またはブローカーログに基づきます。
  • 無料の Yahoo の価格は非公式で、遅れることがあります。約定に使われるのはブローカーの価格であり、相場が急変しているとストップ価格より不利な価格で約定する場合があります。

絶対に行わないこと

注文を出したり、注文を通過させるために編集したり、上限を緩和したり、ユーザーがポジションを解消するだけの売りをブロックしたり、PASS をユーザーの承認として扱ったりすることはありません。

安全性

  • 教育およびツールの提供を目的としており、金融アドバイスではありません。PASS はルールチェックの結果であり、推奨ではありません。
  • デフォルトではペーパートレードを使用します("paper": true)。実際の取引を行うかどうかは、ユーザー自身が自分の設定で判断します。
  • このパックで注文を出すのは trader-broker のみです。その場合も、次の3つすべてを満たす必要があります。trader-risk が当日、その注文そのものを承認していること、ユーザーがチャットでその注文について明示的に「はい」と入力していること、そして注文ツールが「承認が必要」に設定されているため、ユーザーが Claude のカード上で一度だけ「許可」をクリックしていること(カスタマイズ > コネクター > ツールの権限)。注文ツールを「常に許可」に設定してはいけません。
  • 設定で許可され、ユーザーが確認しない限り、オプション取引、信用取引、空売り、レバレッジは行いません。
  • ブローカーのキーは環境変数または Claude Desktop の設定に保存し、チャットには記載しません。

コメント