mcpField
A
alpaca-trading-paper-trading-cli

alpaca-trading-paper-trading-cli

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

alpaca-trading-paper-trading-cli について

Alpacaのペーパートレード口座を使うユーザー向けに、Alpaca CLIで注文をプレビュー、送信、管理する手順を示すスキルです。戦略と注文設定を確認し、取引前にalpaca doctorでペーパー用エンドポイントを検証します。

主な機能

  1. 01戦略と注文設定の確認
  2. 02alpaca doctorによるペーパー用接続先の検証
  3. 03実行するCLIコマンド付き注文プレビュー
  4. 04注文送信と状態確認
  5. 05株式・オプション・暗号資産に対応

活用シーン

  1. 01ペーパー口座で取引戦略を試す
  2. 02送信前に注文パラメーターとリスク制御を確認
  3. 03注文ID・状態・送信内容を個別に検証
  4. 04約定・拒否・取消を追跡

インストール

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

$npx skills add https://github.com/alpacahq/alpaca-skills --skill alpaca-trading-paper-trading-cli

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

同梱ファイルreference.md

詳細

Alpaca ペーパートレーディング — CLI バージョン

Alpaca CLI を使って、ペーパートレーディングの注文をプレビュー、送信、確認、管理する場合に、このスキルを使用してください。

このスキルは、独自の Alpaca ペーパートレーディング口座、CLI プロファイル、ローカルワークスペースを使用する Trading API ユーザー向けです。エージェントはすべての操作を alpaca コマンドラインツールで実行するため、すべてのコマンドとその出力を完全に確認できます。

これは CLI 専用バージョンです。実装に依存しない汎用バージョンと、MCP サーバー版も関連スキルとして用意されています。


0 - AI エージェントによるこのスキルの使用方法

  1. シグナルの情報源から始めます。 トレードアイデアの発生元(バックテストの結果、手動のアイデア、スケジュールされたトリガー、戦略の出力など)を特定します。
  2. 戦略のロジックを説明し直し、確認を求めます。 投資の根拠、想定される動作、注文が実行される条件を要約します。先に進む前に、ユーザーの確認を待ちます。
  3. すべての設定を収集して確認します。 タイミング、資産クラス、シンボル、売買方向、数量/想定元本、注文タイプ、TIF、指値/逆指値価格、時間外取引フラグ、リスク管理、証拠金の使用など、すべてのパラメーターを明示して確認します。
  4. CLI がペーパーエンドポイントを参照していることを確認します。 alpaca doctor を実行し、Trading: の行が https://paper-api.alpaca.markets であることを確認します。ライブエンドポイントが表示された場合は、直ちに停止してユーザーに知らせます。
  5. 書式を整えた表で注文の全容をプレビューします。 実行する CLI コマンドも正確に記載します。
  6. 注文ごとに明示的な確認を求めるかどうかを尋ねます(デフォルト:ON)。セッション中はユーザーの希望に従います。
  7. ペーパープロファイルを使って、alpaca order submit で注文を送信します。
  8. 注文 ID、ステータス、送信したペイロード、次回の確認用コマンドを返し、ユーザー自身で確認できるようにします。
  9. alpaca order get で注文のライフサイクルを監視します。ポートフォリオへの影響とともに、約定、拒否、キャンセルを報告します。
  10. ライブ取引は絶対に行いません。 注文を送信する前に、毎回、接続先がペーパーエンドポイントであることを確認します。環境に少しでも曖昧な点があれば、停止します。

1 - 前提条件

Alpaca CLI がインストールされ、PATH に設定されていること
alpaca version

必要に応じてインストールします:

# Homebrew (macOS / Linux)
brew install alpacahq/tap/cli

# Or with Go — requires $GOPATH/bin (typically ~/go/bin) on your PATH
go install github.com/alpacahq/cli/cmd/alpaca@latest

CLI はアルファプレビュー版です。リリースによってコマンド、フラグ、出力形式が変わる場合があるため、エージェントはこのファイル内の一覧を信頼せず、実行時にフラグを確認します。

ペーパープロファイルが設定されていること
alpaca profile login
# or with API key
alpaca profile login --api-key

ログイン方法を確認します:

alpaca profile login --help
接続が検証済みであること
alpaca doctor

エージェントは、取引セッションのたびに開始前にこれを実行します。失敗した場合、注文は送信されません。

資産クラスごとの要件
資産クラス要件
米国株式ペーパー口座が有効であること
オプションペーパー口座でオプション取引が有効であること
暗号資産ペーパー口座で暗号資産取引が有効であること
環境
  • Go を使ってインストールする場合のみ Go ツールチェーンが必要です。Homebrew のフォーミュラにはビルド済みバイナリが含まれており、Go は必要ありません
  • クライアント注文 ID 用の uuidgen または同等のツール

外部の jq は不要です。CLI には、独自の JSON 出力をフィルタリングする組み込みの --jq フラグが用意されています。


2 - 入力を収集する

エージェントは注文の構築に進む前に、以下の情報を収集します。

パラメーター説明デフォルト必須
signal_source取引アイデアの発生元(バックテスト、手動、スケジュール、戦略)—はい
symbolティッカーシンボル(例:AAPL、BTC/USD、AAPL250718C00200000)—はい
asset_classus_equity、us_option、cryptous_equityはい
sidebuy または sell—はい
qty株式/契約/コインの数量—はい(または notional)
notional金額(端株)。day TIF の成行注文のみ対応し、qty と併用できません—はい(または qty)
order_typemarket、limit、stop、stop_limit、trailing_stop — 対応する値は資産クラスによって異なりますmarketはい
time_in_forceday、gtc、ioc、fok、opg、cls — 対応する値は資産クラスによって異なります株式およびオプションでは day、暗号資産では gtcはい
order_classsimple、bracket、oco、oto(株式);simple、mleg(オプション);simple(暗号資産)simpleいいえ
limit_pricelimit/stop_limit に必須—条件付き
stop_pricestop/stop_limit に必須—条件付き
trail_percenttrailing_stop 用—条件付き
trail_pricetrailing_stop 用—条件付き
extended_hoursプレマーケット/アフターマーケットでの約定を許可しますfalseいいえ
client_order_id冪等性キー。最大128文字省略した場合、Alpaca が自動生成しますいいえ
profileAlpaca CLI のプロファイル名。セッション全体に適用するには、ALPACA_PROFILE 環境変数で設定します。-p/--profile フラグでは設定しないでください。手順10の警告を参照してください現在有効なペーパープロファイルいいえ
output_formatデフォルトは JSON。CSV の場合は --csv、絞り込みには --jq '<expr>' を使用しますJSONいいえ
confirmation_mode各注文の前に明示的な「はい」の確認を必須にしますONいいえ
max_position_pctポートフォリオの単一ポジションに割り当てる最大割合なしいいえ
max_order_value単一注文の notional に対する上限なしいいえ
戦略確認チェックリスト

注文を構築する前に、エージェントは以下を確認します。

  • 戦略のロジックが明確に示されている
  • 注文がどのような処理を行うか理解している
  • エントリー条件を満たしている(バックテスト/シグナルに基づく場合)
  • イグジット条件/ストップロス計画について話し合っている
  • ポジションサイズが意図的に決められている
  • リスク管理策を確認している

3 - 信頼できる情報源

エージェントは、検証に以下の信頼できる情報源を使用します。

情報源URL用途
注文の作成https://docs.alpaca.markets/us/reference/postorder注文パラメーター、資産クラスごとの制約、ステータスコード
Alpaca CLI ドキュメントhttps://docs.alpaca.markets/us/docs/alpacas-cliCLI コマンド、フラグ、構文
注文タイプhttps://docs.alpaca.markets/us/docs/orders-at-alpaca注文タイプの動作と要件
ペーパートレードhttps://docs.alpaca.markets/us/docs/paper-tradingペーパー環境の詳細
オプション取引https://docs.alpaca.markets/us/docs/options-tradingオプション注文の要件と承認レベル
暗号資産取引https://docs.alpaca.markets/us/docs/crypto-trading暗号資産注文の詳細
Alpaca の開示事項https://alpaca.markets/disclosures開示に関する文言
CLI の確認ルール

エージェントはこのファイルを鵜呑みにせず、実行時にフラグを確認します。

alpaca --help-all              # full command tree with every flag
alpaca order submit --help     # flags for one command
alpaca order submit --schema   # response shape, without calling the API

CLI は Alpha Preview のため、フラグや出力形式はリリースごとに変わる可能性があります。このスキルの記載が --help の出力と矛盾する場合、その記載は古くなっています。CLI の内容を優先してください。


4 - ワークフロー

フェーズ 1:戦略の確認

ステップ 1 — シグナルの発生元を特定します。

エージェントが次のように尋ねます。「このトレードアイデアはどこから来たものですか?」選択肢は次のとおりです。

  • 完了したバックテスト(利用可能であれば、実行フォルダーへのリンク)
  • あなたが説明した手動のトレードアイデア
  • スケジュールされた、または定期的に実行される戦略トリガー
  • 別のスキルまたはシステムからの出力

ステップ 2 — 戦略のロジックを再確認します。

エージェントが次の内容を要約します。

  • 投資仮説(このトレードを行う理由)
  • 期待される結果
  • 時間軸
  • 決済条件または損切り計画

ステップ 3 — 解釈を確認します。

エージェントが次のように尋ねます。「この解釈で正しいですか?注文の設定に進んでもよいですか?」


フェーズ 2:設定の確認

ステップ 4 — 資産クラスとシンボルを確認します。

エージェントがシンボルの形式を検証します。

  • 株式:AAPL、MSFT
  • オプション:OCC 形式 AAPL250718C00200000
  • 暗号資産:BTC/USD、ETH/USD

形式は必要条件ですが、それだけでは十分ではありません。形式が正しいシンボルでも、取引できない場合や上場廃止になっている場合があります。エージェントは資産レコードと照合して確認します。

alpaca asset get --symbol-or-asset-id AAPL

status = active および tradable = true が必要です。また、名目金額または端株数量で注文を提案する前に、fractionable を確認します。オプションの場合は、OCC 文字列を手作業で組み立てるのではなく、alpaca option contracts --underlying-symbols AAPL を使って実際の契約を解決します。

ステップ 5 — 売買の別、数量、注文タイプを確認します。

ステップ 6 — 有効期間と価格設定パラメーターを確認します。

有効期間は資産クラスによって異なります。API が無効な組み合わせを拒否するため、エージェントはコマンドを作成する前に組み合わせを検証します。

資産クラス注文タイプ有効期間注文クラス
米国株式market、limit、stop、stop_limit、trailing_stopday、gtc、opg、cls、ioc、foksimple、bracket、oco、oto
米国オプションmarket、limit、stop、stop_limit(stop タイプは単一レッグのみ)day、gtcsimple、mleg
暗号資産market、limit、stop_limitgtc、ioc — ただし、stop_limit は gtc のみ、ioc は market と limit のみに適用simple

CLI はシンボルの形式に基づいて有効期間のデフォルトを設定します。/ を含むシンボル(暗号資産ペア)は gtc、それ以外は day がデフォルトです。そのため、--time-in-force を指定せずに暗号資産の注文を送信すると、day ではなく gtc が送信されます。

Alpaca の公式情報源ではオプションの行に食い違いがあるため、絶対的な制約ではなく指針として扱ってください。OpenAPI 仕様の TimeInForce/OrderType の説明では、オプションは market/limit のみで、有効期間は day のみとされています。一方、Options Trading ページと Placing Orders の一覧表では、どちらも gtc が許可され、どちらも単一レッグ注文で stop/stop_limit が許可されています。2 つの製品ページは仕様の記述と異なり、互いには一致しているため、この表では製品ページに従っています。それでもエージェントは安全策として day をデフォルトにし、一覧表で許可されている注文を事前にブロックせず、Alpaca に拒否させます。

注文タイプをまたいで適用される追加制約は次のとおりです。

  • 時間外取引には、有効期間が day または gtc の limit タイプが必要です。それ以外のタイプと有効期間はすべて拒否されます。
  • トレーリングストップで使用できる有効期間は day と gtc のみです。
  • 名目金額注文は、有効期間が day の成行タイプのみです。qty と組み合わせることはできず、注文の置き換えもできません。代わりに、キャンセルして再送信してください。
  • Bracket、OCO、OTO クラスで使用できる有効期間は day または gtc のみです。時間外取引には対応せず、株式専用です。
  • オプションは時間外取引に一切対応していません。マルチレッグ戦略では最大 4 レッグの mleg 注文クラスを使用します。また、stop/stop_limit タイプは単一レッグのみです。

ステップ 7 — 時間外取引とクライアント注文 ID の設定を確認します。

Alpaca は通常取引時間外に 3 つのセッションをサポートしており、いずれも指値注文で extended_hours: true が必要です。

セッション時間帯(ET)曜日
オーバーナイト8:00pm – 4:00am日曜日から金曜日
プレマーケット4:00am – 9:30am月曜日から金曜日
アフターアワーズ4:00pm – 8:00pm月曜日から金曜日

すべての資産がオーバーナイト取引に対応しているわけではありません。エージェントは対応可能と決めつけず、資産レコードで適格性を確認します。

ステップ 8 — リスク管理を確認します。

エージェントは、ポジションサイズや最大評価額に関する制約を提示し、次の項目を検証します。

  • 注文の名目金額と購買余力
  • 新規ポジションのポートフォリオに対する集中度
  • 同じシンボルへの既存エクスポージャー

ステップ 9 — 設定の最終確認を行います。

エージェントはすべてのパラメーターをまとめた表を表示し、「すべてのパラメーターを確認しましたか?」と尋ねます。


フェーズ 3:CLI によるペーパー口座の確認

ステップ 10 — CLI がペーパー取引エンドポイントを解決することを確認します。

alpaca doctor

alpaca doctor は、Connectivity: の下に完全に解決された取引エンドポイントを出力します。

Connectivity:
  Trading:  https://paper-api.alpaca.markets

エージェントは、この行が https://paper-api.alpaca.markets であることを確認する必要があります。プロファイル名では代用できません。CLI は固定された順序でペーパーとライブを解決します。最初に ALPACA_LIVE_TRADE、次にアクティブなプロファイルの live_trade フィールド、最後にペーパーをデフォルトとして使用します。そのため、ALPACA_LIVE_TRADE=true がエクスポートされていると、名前が「paper」のプロファイルでもライブエンドポイントに直接送信されます。alpaca doctor は、この一連の処理の結果を報告します。

⚠️ alpaca doctor は -p/--profile フラグを無視します。 フラグを受け付けますが、値を黙って破棄し、常にデフォルトのプロファイルを報告します。他のすべてのコマンドは -p を尊重します。そのため、alpaca doctor -p live は ペーパー エンドポイントを報告する一方、alpaca order submit -p live は ライブ で取引し、チェックを通過したまま注文がライブで送信されます。

したがって、エージェントはどのコマンドにも -p/--profile を 決して渡しません。 デフォルト以外のプロファイルを指定するには、セッション全体に対して ALPACA_PROFILE を一度設定します。これは doctor も尊重するため、チェックと注文で同じエンドポイントが解決されます。セッション内のいずれかのコマンドに -p が渡されようとしている場合、エージェントはその時点で停止します。

Trading: の行に https://api.alpaca.markets と表示されている場合、エージェントは直ちに 停止 します。

⚠️ ライブエンドポイントを検出しました。エージェントは続行しません。ALPACA_LIVE_TRADE の設定を解除するか(または false に設定すると、ライブプロファイルでもペーパーが強制されます)、alpaca profile switch <paper-profile-name> でペーパープロファイルを選択してから、再起動してください。

ステップ 11 — 同じ alpaca doctor の出力から接続を確認します。

エージェントは、すべてのチェックに合格したことを確認します。いずれかが失敗した場合は、その失敗を報告して続行しません。alpaca doctor は再実行しません。1 回の実行で、このステップとステップ 10 の両方をカバーします。すべてのチェックに合格した場合、alpaca doctor は終了コード 0 を返し、いずれかのチェックが失敗した場合は 1 を返します。

ステップ 12 — 口座のステータスを取得します。

alpaca account get

エージェントは次の値を解析して確認します。

  • status = ACTIVE
  • account_blocked = false
  • trading_blocked = false
  • trade_suspended_by_user = false
  • multiplier — 証拠金の分類であり、口座オブジェクトに含まれる PDT の唯一のシグナルです。1 は証拠金が制限された現金口座タイプ、2 は Reg T 証拠金口座、4 は日中の購買力が 4 倍の PDT 口座を示します。

Trading API の口座オブジェクトには、pattern_day_trader フィールドも daytrade_count フィールドもありません。エージェントはこれらを参照せず、代わりに multiplier から PDT ステータスを推定する必要があります。

ステップ 13 — 購買力を確認します。

alpaca account get --jq '.buying_power'

エージェントは、注文の推定価値を利用可能な購買力と比較します。不足している場合は、続行する前に警告します。

ステップ 14 — オプション注文の場合は、承認レベルを確認します。

alpaca account get --jq '{options_approved_level, options_trading_level, options_buying_power}'

エージェントは options_trading_level を基準に判断します。これは実効レベルであり、options_approved_level と口座設定の max_options_trading_level のうち、低い方です。設定でそれより低い上限が定められている場合、承認されているだけでは取引は許可されません。

レベル許可される取引
0オプション取引は無効
1カバードコール、キャッシュセキュアード・プット
2ロングコールおよびロングプット(レベル 1 の取引に追加)
3スプレッドおよびストラドル(レベル 2 の取引に追加)

スプレッドにはレベル 2 ではなく、レベル 3 が必要です。

ステップ 15 — 口座の概要を表示します。

エージェントは次の内容を提示します。

┌─────────────────────────────────────┐
│ Paper Account Summary               │
├─────────────────────────────────────┤
│ Endpoint:      paper-api (PAPER)    │
│ Profile:       my-paper             │
│ Status:        ACTIVE               │
│ Equity:        $50,000.00           │
│ Buying Power:  $100,000.00          │
│ Multiplier:    2 (Reg T margin)     │
│ Options Level: 2 (effective)        │
│ Crypto:        ACTIVE               │
└─────────────────────────────────────┘

フェーズ 4:注文プレビュー

Step 16 — CLI コマンドを組み立てますが、まだ実行しません。

エージェントがコマンド全体を組み立てて表示し、次に --dry-run で検証します。これにより、送信せずに CLI が送信するリクエスト本文が出力されます。

alpaca order submit \
  --symbol AAPL \
  --side buy \
  --qty 10 \
  --type limit \
  --limit-price 185.50 \
  --time-in-force day \
  --client-order-id a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
  --dry-run

プレビューで表示するコマンドは、後で実行するコマンドと --dry-run を除いて完全に同一でなければなりません。

Step 17 — 書式付きの注文プレビューテーブルを表示します。

┌─────────────────────────────────────────────┐
│ ORDER PREVIEW — NOT YET SUBMITTED           │
├─────────────────────────────────────────────┤
│ Symbol:         AAPL                        │
│ Side:           BUY                         │
│ Quantity:       10 shares                   │
│ Order Type:     LIMIT                       │
│ Limit Price:    $185.50                     │
│ Time in Force:  DAY                         │
│ Extended Hours: No                          │
│ Est. Value:     $1,855.00                   │
│ Buying Power:   $100,000.00 → $98,145.00   │
│ Client ID:      a1b2c3d4-...               │
│ Endpoint:       paper-api (PAPER)           │
├─────────────────────────────────────────────┤
│ ⚠️  This is a PAPER trade — no real money   │
└─────────────────────────────────────────────┘

Step 18 — 確認が ON の場合:先へ進む前に、明示的な「yes」を待ちます。

Step 19 — 確認が OFF の場合:プレビューを表示してから、自動的に送信します。


フェーズ 5:注文の送信

Step 20 — CLI コマンドを実行します。

CLIENT_ORDER_ID="$(uuidgen)"

alpaca order submit \
  --symbol AAPL \
  --side buy \
  --qty 10 \
  --type limit \
  --limit-price 185.50 \
  --time-in-force day \
  --client-order-id "$CLIENT_ORDER_ID"

コマンドが応答を出力する前に異常終了しても注文を追跡できるよう、エージェントは送信前に CLIENT_ORDER_ID を取得します。

Step 21 — 生の CLI 出力を実行フォルダーに保存します。

# Output saved to runs/<timestamp>-paper-trading-cli/raw/order_submit_response.json

Step 22 — 応答を解析し、主要なフィールドを取得します。

  • id(注文 ID)
  • status(想定値:new または accepted)
  • created_at
  • filled_at(保留中の場合は null)
  • filled_qty
  • filled_avg_price

Step 23 — 失敗した場合:

  • stderr から構造化 JSON エラーと CLI の終了コードを取得します — 0 は成功、1 はエラー、2 は認証失敗です
  • 解決方法を提示します(例:「買付余力不足」、「銘柄が見つかりません」、「市場が閉まっています」)
  • エラーを runs/<timestamp>/raw/error.json に保存します
  • 修正方法を提案します

失敗が曖昧な場合 — タイムアウト、プロセスの強制終了、または注文が Alpaca に到達したかエージェントが判断できない状況 — 再送信してはなりません。Step 20 で生成したクライアント注文 ID で注文を検索します。

alpaca order get-by-client-id --client-order-id "$CLIENT_ORDER_ID"

検索結果があれば注文は存在しており、再送信すると重複します。再試行が正当化されるのは、注文が見つからないことを確認できた場合のみです。


フェーズ 6:送信後の監視

Step 24 — 注文状況を確認します。

alpaca order get --order-id {order_id}

エージェントは次の情報を報告します。

  • 現在のステータス
  • 約定の進捗(部分約定)
  • 平均約定価格

Step 25 — 状況を把握するため、最近の注文を一覧表示します。

alpaca order list --status open

Step 26 — 注文の概要を返します。

┌─────────────────────────────────────────────┐
│ ORDER SUBMITTED ✓                           │
├─────────────────────────────────────────────┤
│ Order ID:      abc-123-def-456              │
│ Status:        NEW                          │
│ Symbol:        AAPL                         │
│ Side/Qty:      BUY 10                       │
│ Type:          LIMIT @ $185.50              │
│ Submitted:     2026-07-26T14:30:00Z         │
├─────────────────────────────────────────────┤
│ Next commands:                              │
│  alpaca order get --order-id abc-123      │
│  alpaca order cancel --order-id abc-123     │
│  alpaca position list                     │
└─────────────────────────────────────────────┘

Step 27 — 注文ライフサイクルの更新:

イベントエージェントの対応
filled約定価格を報告し、指値との差を計算して、ポジションへの影響を表示します
partially_filled約定数量、残数量、平均価格を報告します
rejected拒否理由を示し、修正方法を提案します
canceledキャンセルを確認し、最終状態を表示します
expired期限切れ(TIF の経過)を報告し、再エントリーを提案します
replaced置換後のパラメーターを確認し、新しい注文 ID を表示します

フェーズ 7:ポートフォリオへの影響

Step 28 — ポジションを取得します。

alpaca position list

特定の銘柄を指定する場合:

alpaca position get --symbol-or-asset-id AAPL

Step 29 — 更新後の口座情報を取得します。

alpaca account get

Step 30 — ポートフォリオのリスク概要を表示します。

┌─────────────────────────────────────────────┐
│ PORTFOLIO IMPACT                            │
├─────────────────────────────────────────────┤
│ New Position:   AAPL — 10 shares @ $185.30  │
│ Position Value: $1,853.00                   │
│ Portfolio %:    0.74%                       │
│ Buying Power:   $98,147.00 (was $100,000)   │
│ Total Equity:   $250,000.00                 │
│ Open Orders:    1                           │
└─────────────────────────────────────────────┘

フェーズ 8:注文管理

Step 31 — 特定の注文をキャンセルします。

alpaca order cancel --order-id {order_id}

エージェントはキャンセルを確認し、注文の最終状態を報告します。

Step 32 — すべての未決済注文をキャンセルします。

cancel-all の対象範囲は口座全体です。このセッションで作成していない注文も含め、口座上のすべての未決済注文をキャンセルします。CLI は独自の確認プロンプトを表示せずに直ちに実行するため、エージェントが確認のゲートを設けます。まず、キャンセルされる注文を正確に表示します。

alpaca order list --status open --jq '[.[] | {id, symbol, side, qty, type, limit_price}]'

エージェントは対象の注文を一覧表示し、件数を伝え、明示的な「yes」を求めます。confirmation_mode が OFF の場合も同様です。この設定が対象とするのは注文の発注であり、一括キャンセルではないためです。その後に限り、次を実行します。

alpaca order cancel-all

エージェントはキャンセルした注文の合計数を確認し、対象となった注文を一覧表示します。同じ確認ゲートは、ポートフォリオ全体を清算する alpaca position close-all にも適用されます。

Step 33 — 注文を置換します(価格/数量を変更)。

まず利用可能なフラグを確認します。

alpaca order replace --help

次に実行します。

alpaca order replace --order-id {order_id} --qty 5 --limit-price 186.00

エージェントは新しい注文 ID と更新後のパラメーターを報告します。


フェーズ 9:デプロイのガイダンス(要望に応じて)

自動化について尋ねると、エージェントは次のようなガイダンスを提供します。

Bash スクリプトラッパー。 無人での注文送信は、注文する前にペーパー用エンドポイントであることを確認するラッパーを経由します。スケジュールされた処理から alpaca order submit が直接呼び出されることはないため、どのスケジューラーから起動されてもガードを回避できません。

#!/bin/bash
# /usr/local/bin/paper-trade.sh
set -euo pipefail

SYMBOL="${1:?usage: $0 SYMBOL SIDE QTY}"
SIDE="${2:?usage: $0 SYMBOL SIDE QTY}"
QTY="${3:?usage: $0 SYMBOL SIDE QTY}"

# Verify the CLI resolves to the paper endpoint
if ! alpaca doctor | grep -q 'Trading:.*https://paper-api\.alpaca\.markets'; then
  echo "ERROR: CLI is not pointed at the paper endpoint. Exiting." >&2
  exit 1
fi

alpaca order submit \
  --symbol "$SYMBOL" \
  --side "$SIDE" \
  --qty "$QTY" \
  --type market \
  --time-in-force day \
  --client-order-id "$(uuidgen)"

Cron ジョブ。 Cron は生の CLI ではなく、ラッパーを呼び出します。

# /etc/cron.d/paper-trade
SHELL=/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin
ALPACA_PROFILE=paper
0 9 * * 1-5 root /usr/local/bin/paper-trade.sh AAPL buy 1 >> /var/log/paper-trades.log 2>&1

Cron はほぼ空の環境で実行され、シェルプロファイルも読み込まないため、PATH、ALPACA_PROFILE、認証情報を明示的に設定する必要があります。上記のように crontab で設定するか、ジョブのユーザーだけが読み取れるファイルをラッパー内で読み込んでください。何も引き継がないスケジュール済みジョブで、ガードのない注文送信を実行するのは最も危険なケースです。監視するオペレーターも確認プロンプトもないため、エンドポイントのチェックはスケジュールではなくスクリプト内に置く必要があります。

systemd タイマー/launchd plist: エージェントは、同じラッパーを指定する、お使いの OS に適したサービスファイルを生成します。

CI/CD パイプライン。 CLI をインストールし、ランナーのシークレットストアから認証して、同じラッパーを呼び出します。alpaca order submit を単独のステップとして実行してはいけません。

- name: Submit paper order
  env:
    ALPACA_API_KEY: ${{ secrets.ALPACA_PAPER_API_KEY }}
    ALPACA_SECRET_KEY: ${{ secrets.ALPACA_PAPER_SECRET_KEY }}
    ALPACA_PROFILE: paper
  run: ./scripts/paper-trade.sh AAPL buy 1

CI は誤ってライブ環境を使い始めるのが最も簡単な場所です。ランナーにはお使いのプロファイルがなく、キーは誰かが設定したシークレットから取得され、ペーパー用という名前のシークレットにライブキーが入っていても、呼び出し箇所では正しいキーと見分けがつきません。シークレットに PAPER という名前を付けても何の証明にもなりません。そのため、エンドポイントを確認するのは変数名ではなく、ラッパーの alpaca doctor チェックです。

自動化に関する重要事項:

  • CLI は確認を求めることはありません。自動化でも対話操作でも、「本当によろしいですか?」というダイアログは表示されません。そのため、このスキルにおける確認ゲートを担うのは CLI ではなくエージェントです。
  • --quiet は警告、ヒント、色を抑制します。出力を機械可読にするためのオプションではありません。JSON は、これを指定するかどうかにかかわらずデフォルトです。ログをすっきり保つため、cron や CI で使用してください。
  • ALPACA_OUTPUT=json|csv を設定すると、スクリプト全体のデフォルト出力形式を指定できます。
  • 無人で実行されるすべての経路(cron、systemd、launchd、CI)では、ガード付きラッパーを経由して注文を送信します。スケジューラーやパイプラインから alpaca order submit が直接呼び出されることはないため、新しいトリガーを追加してもエンドポイントチェックを省略できません。
  • 監査証跡として、すべての出力を記録してください。
  • 再試行時の冪等性を確保するため、--client-order-id を使用してください。

5 - 実行ルール

一般ルール
  1. ペーパーのみ。 ライブエンドポイントに対して注文を送信してはいけません。送信する前に、解決されたエンドポイントを必ず確認してください。
  2. 送信前に確認。 デフォルトでは明示的な確認が有効です。ユーザーの希望に従ってください。
  3. 意図を維持。 明示的な同意なしに注文パラメーターを変更してはいけません。
  4. アトミックな操作。 各注文の送信は独立しています。失敗がほかの注文に影響することはありません。
  5. 完全な透明性。 実行の前後に、CLI コマンドをすべて表示してください。
  6. 冪等性。 再試行時の重複送信を防ぐため、常に --client-order-id を生成してください。
  7. 金融アドバイスの禁止。 エージェントはユーザーの指示を実行します。取引を推奨することはありません。
CLI 固有のルール
  1. どのコマンドにも -p/--profile を指定しないでください。 alpaca doctor はこれを無視するため、ペーパー取引の確認と注文で異なるプロファイルが解決される可能性があります。代わりに、セッションで ALPACA_PROFILE を使用してください。
  2. デフォルトの JSON 出力を解析してください。 すべてのコマンドは、すでに構造化された JSON を返します。絞り込みには --jq '<expr>' を使用し、人が読むテーブルに限り --csv を使用してください。--quiet は警告、ヒント、色を抑制しますが、データ形式は変更しません。
  3. 外部の jq へのパイプは使用しないでください。 組み込みの --jq フラグで、依存関係を 1 つ減らしながら同じ処理ができます。
  4. 構文を想定する前に、--help、--help-all、--schema で必ずフラグを確認してください。 CLI はアルファプレビュー段階のため、バージョンによって変更される可能性があります。
  5. CLI の生出力はすべて実行フォルダーに保存してください。 各コマンドの stdout と stderr は raw/ に保存します。
  6. alpaca doctor が失敗した場合は、続行しないでください。 失敗を報告して停止してください。
  7. 概要ではプロファイルの詳細とトークンを伏せてください。 出力ファイルで API キーやシークレットを公開しないでください。
  8. CLI の終了コードを処理してください。 0 は成功、1 はエラー、2 は認証失敗です。stderr を取得して提示してください。
  9. レート制限に対する独自の再試行ループを追加しないでください。 CLI はすでに 429 および 5xx の応答を最大 3 回再試行し、Retry-After に従います。その上にさらにバックオフ処理を重ねると、レート制限された 1 回の呼び出しが大幅な遅延につながります。CLI の再試行後もコマンドが失敗する場合は、エラーを提示して停止してください。
  10. 送信前に --dry-run でプレビューしてください。 注文を送信せずに、正確なリクエスト本文を表示します。
  11. 対象を限定しない破壊的なコマンドは制御してください。 order cancel-all と position close-all はアカウント全体に影響します。confirmation_mode にかかわらず、明示的な確認を求めてください。

6 - 出力仕様

すべてのペーパー取引セッションで、次の実行フォルダーが生成されます。

runs/<YYYYMMDD-HHMMSS>-paper-trading-cli/
  notes.md                        # Session narrative: strategy, decisions, outcomes
  raw/                            # Saved raw CLI outputs
    account.json                  # Account state at session start
    order_submit_response.json    # Raw submission response
    order_status.json             # Order status checks
    positions.json                # Position state after fills
    clock.json                    # Market clock at submission time
    error.json                    # Error output (if any)
  orders.json                     # Structured order records
  order_log.csv                   # Tabular log: timestamp, action, order_id, status, details
  positions_snapshot.json         # Position state post-trade
  portfolio_summary.md            # Human-readable portfolio impact
  review.md                       # Session review: what worked, issues, next steps
notes.md の構成
# Paper Trading Session — <timestamp>

## Signal Source
<origin of trade idea>

## Strategy
<strategy logic as confirmed>

## Orders Submitted
| # | Symbol | Side | Qty | Type | Status | Fill Price |
|---|--------|------|-----|------|--------|-----------|

## Portfolio Impact
<post-trade portfolio state>

## Issues / Notes
<any errors, warnings, or observations>
order_log.csv の列
timestamp,action,order_id,symbol,side,qty,type,limit_price,stop_price,tif,status,fill_price,fill_qty,error

7 - 検証とテスト

エージェントは実行中に次のチェックを行います。

送信前の検証
チェックコマンド合格条件
CLI がインストール済みalpaca version終了コードが 0
接続alpaca doctorすべてのチェックに合格
ペーパー取引エンドポイントalpaca doctorTrading: の行に https://paper-api.alpaca.markets と表示される
アカウントが有効alpaca account getstatus=ACTIVE で、ブロックされていない
購買余力alpaca account get --jq '.buying_power'注文に十分
市場が開いているalpaca clockis_open=true(時間外取引または GTC の場合を除く)
シンボルが有効で取引可能alpaca asset get --symbol-or-asset-id Xstatus=active、tradable=true
送信後の検証
チェックコマンド合格条件
注文が受け付けられたalpaca order get --order-id Xステータスが rejected ではない
約定を受信した同上filled_qty > 0
ポジションが更新されたalpaca position get --symbol-or-asset-id X新しいポジションが反映されている

8 - 開示、安全性、データの取り扱い

開示事項
  • ペーパートレードのみ。 このスキルは Alpaca のペーパートレード環境でのみ動作します。実際の資金が危険にさらされることはありません。
  • 金融アドバイスではありません。 エージェントはお客様の指示を実行します。投資に関する推奨、市場予測、取引アドバイスは提供しません。
  • ペーパー取引 ≠ ライブ取引。 約定シミュレーションが簡略化されているため、ペーパー取引の約定はライブ取引と異なる場合があります。ペーパー取引の結果がライブ取引のパフォーマンスを予測すると想定しないでください。
  • お客様の責任です。 ペーパー取引で選択する戦略については、お客様が責任を負います。エージェントはツールであり、アドバイザーではありません。
  • 開示事項の全文。 alpaca.markets/disclosures で Alpaca の開示事項と契約をご確認ください。

重要な開示事項: この資料は、情報提供、教育、調査のみを目的としています。投資アドバイス、有価証券、オプション、暗号資産、その他の金融商品の売買に関する推奨、申し出、勧誘ではありません。すべての投資と取引には、元本を失う可能性を含むリスクがあります。ペーパートレードはシミュレーションであり、約定、市場への影響、流動性、手数料、レイテンシー、その他の要因においてライブ取引と異なる場合があります。https://alpaca.markets/disclosures で Alpaca の開示事項をご確認ください。

安全制御
制御実装
ライブ取引の防止送信前に毎回、解決済みエンドポイントを確認
確認ゲートデフォルトで ON — 明示的な承認が必要
購買余力の確認送信前の検証
接続の検証セッション開始時に alpaca doctor を実行
エラーの分離失敗をログに記録し、連鎖させない
冪等性--client-order-id で重複を防止
データの取り扱い
  • ローカルのみ。 すべての実行データは runs/ の下にあるローカルワークスペースに保存されます。
  • テレメトリなし。 エージェントが取引データを送信する外部サービスは、Alpaca API のみです。
  • 認証情報の保護。 API キーがログに記録、表示、ファイルに書き込まれることはありません。共有出力ではプロファイル名が伏せられます。
  • 監査証跡。 すべての CLI コマンドと応答が raw/ に保存され、確認できます。

9 - アンチパターン

エージェントは以下を絶対に行ってはいけません。

アンチパターン理由正しい方法
本番エンドポイントに注文を送信する実際の資金が危険にさらされますまず alpaca doctor がペーパーエンドポイントを報告することを必ず確認します
モードが ON のときに確認を省略する制御できなくなります必ず確認設定に従います
注文パラメーターを黙って変更する意図に反しますパラメーターを変更する場合は必ず再確認します
取引の助言をする責任問題につながり、エージェントの役割ではありません指示を実行し、推奨はしません
CLI フラグをハードコードするアルファプレビューのため、バージョン間でフラグが変更される可能性があります--help、--help-all、--schema で確認します
出力を外部の jq にパイプするCLI にすでにある機能に依存関係が追加されます組み込みの --jq フラグを使います
--quiet を JSON 切り替えオプションとして扱うJSON がデフォルトです。--quiet は警告、ヒント、色を抑制するだけですデフォルトの出力を直接解析します
pattern_day_trader または daytrade_count を読み取るTrading API のアカウントオブジェクトに、どちらのフィールドも存在しませんmultiplier = 4 から PDT を推定します
429 エラー用の再試行ループを追加するCLI はすでに 3 回再試行し、Retry-After に従います再試行に失敗した後、エラーを通知します
指示を求めずに cancel-all または close-all を実行する対象範囲が限定されず、このセッションで作成されていない注文やポジションにも影響します影響を受ける項目を一覧表示し、明示的な確認を求めます
Alpaca CLI を迂回して直接 HTTP 呼び出しを行うこれは CLI 版ですalpaca コマンドのみを使用します
CLI の終了コードを無視するエラーを見落とします終了コードを確認し、stderr を取得します
alpaca doctor が失敗した後も続行する接続を確認できていません停止して失敗を報告します
API キーを実行フォルダーに保存するセキュリティリスクがありますすべての認証情報を伏せます
市場の取引時間を決めつける延長取引の場合や、暗号資産のように 24 時間 365 日取引できる場合がありますalpaca clock を確認します
購買余力を確認せずに注文を送信する注文が拒否されますまず購買余力を検証します
プログラムによる解析に --csv 出力を使うJSON より構造化されていませんデフォルトの JSON を --jq でフィルタリングして解析します

10 - 関連ファイル

ファイル目的
reference.md詳細なリファレンス:注文タイプ、TIF、ライフサイクル、資産クラス、エラー
関連スキル
スキル説明
alpaca-trading-backtestAlpaca CLI による過去データのバックテスト — このスキルで実行できるシグナルを生成します
alpaca-trading-paper-trading実装に依存しない汎用のペーパートレード用スキル
alpaca-trading-paper-trading-mcpこのスキルの MCP サーバー版

コメント