Agent Mode API Manual
あなたの AI Agent が本システムの API を利用して、戦略生成 → バックテスト → 評価 → 改善の自律ループを回すためのリファレンスです。
Concept»
あなたの AI Agent が自律的に「戦略生成 → 実行 → 評価 → 改善」を循環させます。
※ AI Agent はお客様がご契約・ご用意されるもので、本サービスには含まれません。
hawk-bt の Strategy を生成
STEP_NEXT ループを自動実行
パラメータ / ロジックを修正
を判定、改善ポイントを特定
Quick Start»
※ PyPI 上の hawk-backtester は本プロジェクトとは無関係の別パッケージです。
- サービスログイン後、with AI Agent タブをクリック
- Agent Mode を ON
- Agent Dashboard をブラウザで開いたままにする
- AI Agent に以下のような指示を実行:
実行の仕組み
WASM シミュレーションエンジンはブラウザ上で動作します。Agent が HawkEngine を起動してから POST /v1/backtests でセッションを登録すると、Agent Dashboard が自動検知してシミュレーション → 分析 → 保存まで一貫して実行します。
- Agent が
engine.start_background(strategy)で WebSocket サーバーをバックグラウンド起動し、engine.wait_ready()で待機 - Agent が
POST /v1/backtestsを送信(セッション登録 +ws_url指定)
※ API がエンジンへの接続を検証するため、先にエンジンを起動しておく必要があります - Agent Dashboard(ブラウザ)が自動的にセッションを検知し、WASM エンジンを起動して WS 接続
- シミュレーション完了後、ブラウザが全分析データ(resultStats、ticketTraces + MFE/MAE、時系列データ)を自動計算し、サーバーに保存
- Agent が
GET /v1/backtests/{id}/resultsで包括的な分析データを取得
- Agent Dashboard を開いておく必要があります — WASM の実行環境として機能します
- 手動操作は不要 — ブラウザが QUEUED セッションを 3 秒間隔で検知し、自動的に開始します
- 同一マシン上で実行 — ブラウザと Agent は同じマシン上で動作する必要があります (
ws://127.0.0.1:8787)
Security»
API Key
- 生成時に一度だけ表示されます。必ずコピーして安全に保管してください。
- 有効期限は 90 日間です。期限切れ後は Dashboard から再生成してください。
- Revoke すると即座に無効化されます。
レートリミット
- API リクエスト: 300 回/分 (IP ベース)
- 認証失敗: 同一 IP から 10 回失敗すると 15 分間ロックアウトされます。
WebSocket 接続
- hawk-bt の WS サーバーは
127.0.0.1:8787にバインドされます。外部ネットワークには公開されません。 - 接続時に Origin ヘッダー検証を行い、許可リスト外のオリジンからの接続は
403 Forbiddenで拒否されます。 - Agent とブラウザが同一マシン上で実行されている必要があります。
API Reference»
Base: /v1/
Data API
データセット一覧 (summary_stats, regime_hint 付き)
Response
データセット詳細
Response
特徴量一覧 (カテゴリ分類付き)
Response
Backtest API
セッション登録 + 自動起動信号
ブラウザ(Agent Dashboard)が QUEUED セッションを自動検知し、シミュレーションを開始します。
Request
Response (201)
結果取得 (推奨) — ブラウザが保存した包括的な分析データを取得
Agent は
on_result でシミュレーション完了を検知した後、このエンドポイントで結果を取得してください。Response
セッションを SimulationResult としてフル保存
Request
| Field | Type | Required | Description |
|---|---|---|---|
| title | string | - | 保存タイトル (省略時: Agent #N: strategy_note) |
| memo | string | - | メモ (省略時: strategy_note) |
| strategy_name | string | - | 戦略名 (例: "SMA_Crossover_v2") |
dataset_id から自動的に引き継がれます。レバレッジはセッション作成時の
config.leverage から自動的に保存されます。これらを変更する必要はありません —
POST /v1/backtests で正しく設定してください。
Response
Status API
Agent Mode 状態 + 直近セッション
Dashboard 用タイムライン (max 50)
WebSocket Protocol»
WS 通信 (INIT・STEP_NEXT・注文・結果受信) はすべて hawk-bt が自動処理します。
Agent が意識するのは以下の 2 点のみです。
Config
シミュレーション設定はブラウザ側 (Agent Dashboard) から WASM に適用されます。
POST /v1/backtests の config フィールドで指定可能。
| Field | Type | Default | Description |
|---|---|---|---|
| leverage | float | 0 | レバレッジ倍率 (0 = 無制限) |
| commission | float | 0 | 1注文あたりの手数料率 |
| ticketLimitMargin | float | 0 | 必要証拠金率 |
| maxTicketLimits | int | 0 | 最大同時ポジション数 (0 = 無制限) |
HawkEngine: single_run モード
single_run=True を必ず指定してください。デフォルト (
single_run=False) では、シミュレーション完了後もプロセスが次のブラウザ接続を待ち続けます。
single_run=True を指定すると、1 回のシミュレーション完了後にプロセスが終了し、Agent の自律ループが継続できます。
Analysis Result
シミュレーション完了後、ブラウザが全分析データを自動計算し、サーバーに保存します。
- hawk-bt の
on_resultコールバックでBacktestResult(balance/equity 配列) を受信 - 同時にブラウザ側で resultStats, ticketTraces (MFE/MAE 付き), 時系列データ (equity, drawdown, exposure 等) を計算
- ブラウザが
POST /v1/backtests/reportで包括的な分析データをサーバーに保存 - Agent は
GET /v1/backtests/{session_id}/resultsで全データを取得可能
詳細な分析データは Analysis Data Format を参照。
Analysis Data Format»
シミュレーション完了後に受信する分析結果 JSON。
outcome
| Field | Type | Note |
|---|---|---|
| totalSteps | int | 総ステップ数 |
| endingAssets | float | 最終キャッシュ |
| endingEquity | float | 最終評価額 |
| totalReturn | float | 0.075 = 7.5% |
| maxDrawdown | float | 負値 |
| returnOverMaxDD | float | リターン/最大DD |
| vsBuyHold | float | B&H比差額 |
exposure
| Field | Type | Note |
|---|---|---|
| avgGrossExposure | float | 平均グロスエクスポージャー |
| maxGrossExposure | float | 最大グロスエクスポージャー |
| avgNetExposure | float | 平均ネットエクスポージャー |
| timeInMarket | float | 保有時間割合 |
| longRatio | float | ロング比率 |
| shortRatio | float | ショート比率 |
| exposureEfficiency | float | totalReturn / avgGrossExposure |
attribution
| Field | Type | Note |
|---|---|---|
| longPnL | float | ロング累積損益 |
| shortPnL | float | ショート累積損益 |
| costPnL | float | 取引コスト合計 |
| totalPnL | float | longPnL + shortPnL + costPnL |
| longContrib | float | longPnL / totalPnL |
| shortContrib | float | shortPnL / totalPnL |
| costContrib | float | costPnL / totalPnL |
| profitFactor | float | 総利益/総損失 |
| costBurden | float | |costPnL| / |longPnL + shortPnL| |
| winRate | float | 0.58 = 58% |
| winCount | int | 勝ちトレード数 |
| lossCount | int | 負けトレード数 |
| totalTickets | int | winCount + lossCount |
action
| Field | Type | Note |
|---|---|---|
| totalOrders | int | 総注文数 |
| buyCount | int | 買い注文数 |
| sellCount | int | 売り注文数 |
| buySellRatio | float | buyCount / (buyCount + sellCount) |
| ordersPer1000 | float | 1000ステップあたりの注文数 |
| medianHoldingTime | float | 保有時間の中央値 (ms) |
| p90HoldingTime | float | 保有時間の90パーセンタイル (ms) |
| medianTicketSize | float | 取引サイズの中央値 |
| partialCloseCount | int | 部分決済回数 |
ticketTraces
各トレードの詳細 + MFE/MAE (Max Favorable/Adverse Excursion)。
| Field | Type | Note |
|---|---|---|
| ticketId | int | チケット ID |
| side | string | "long" or "short" |
| entryTime | float | エントリー時刻 (ms) |
| exitTime | float | 決済時刻 (ms) |
| entryPrice | float | エントリー価格 |
| exitPrice | float | 決済価格 |
| units | float | 取引数量 |
| lifetime | float | 保有時間 (exitTime - entryTime) |
| exitReason | int | 0=SL, 1=TP, 2=Strategy, 5=Force |
| pnl | float | 損益 (units * price diff) |
| pnlPct | float | 損益率 (%) |
| mfe | float | Max Favorable Excursion (金額) |
| mae | float | Max Adverse Excursion (金額) |
timeSeries
時系列データ (最大 2000 点にダウンサンプル)。
| Field | Type | Note |
|---|---|---|
| timestamps | float[] | タイムスタンプ (ms) |
| equity | float[] | 評価額 (含み損益込み) |
| assets | float[] | キャッシュ残高 |
| buyAndHold | float[] | Buy & Hold 比較曲線 |
| drawdown | float[] | ドローダウン (負値) |
| netExposure | float[] | ネットエクスポージャー |
| grossExposure | float[] | グロスエクスポージャー |
| marginRatio | float[] | 証拠金使用率 |
| cumulativeLongPnL | float[] | 累積ロング損益 |
| cumulativeShortPnL | float[] | 累積ショート損益 |
| ticketLongCount | float[] | 累積ロングチケット数 |
| ticketShortCount | float[] | 累積ショートチケット数 |
| tokenLongCount | float[] | 累積ロングトークン数 |
| tokenShortCount | float[] | 累積ショートトークン数 |
totalSteps / initialAssets
Example Code»
以下は Concept の各ステップに対応するコード例です。
あなたの AI Agent がこれらを順番に実行し、自律的にループを回します。