あなたのアイデアがどのタイプかを判定するフローと、どのルールをコードが本当にブロックするのか。
その戦略は「1 銘柄、固定の時間足、1 つのポジション(ロング/ショート/フラット)」ですか? はい → Type A(シグナル型)。
「バスケットの各銘柄にウェイトを配り、周期ごとに銘柄とウェイトを入れ替える」ですか? はい → Type C(ポートフォリオ型)。
それ以外(スクリーナー、グリッド、アービトラージ、単発の実行、アラート bot)→ Type B。
A と C の区別がつかないときは、2 つが同時に成り立つかを見ます:銘柄数(1 つか複数か)とポジションの形(単一のロング/ショート/フラットか、ウェイトの組か)。複数銘柄のローテーションやポートフォリオのリバランスは Type C であって、Type B ではありません。
| 項目 | Type A シグナル型 | Type C ポートフォリオ型 | Type B その他 |
|---|---|---|---|
| 銘柄数 | 1 | N | 制限なし |
| ポジションの形 | 1 つのポジション、小数も可 | ウェイトベクトル、設計上は合計 ≤ 1 | 決まった形なし |
| テンプレート | あり | あり | なし、ゼロから記述 |
| バックテスト | エージェントが必ず先に実行 | エージェントが必ず先に実行 | 実行しない |
| 自動売買 | 対応 | 金額の割り当てには今のところ非対応 | 注文ロジックは自分で書く |
| バックテストレポート | フル。Sortino、Omega、MCPT の p 値まで | 簡易。Sortino/Omega なし、自動 MCPT なし | なし |
存在しないからです。3 タイプは戦略を書くときの分類法であって、システムが追跡している状態ではありません。
マシン側がタイプを判断しているのは、シグナル関数の戻り値の型です:1 本の系列を返せば Type A の経路、ウェイト行列を返せば Type C の経路に進み、型の定数はどこからも読まれません。プラットフォーム側はバックテスト結果の形から逆に推測しており、外向きに型が出てくる唯一の場所も「ポートフォリオ」と「シグナル」の 2 値だけです。
そのためシステムは Type B と、まだバックテストしていない Type A を区別できません。タイプを選び間違えてもブロックされず、印も付きません。タイプ分けの値打ちは、エージェントが正しい書き方と必要な検証を選べるところにあり、システムが代わりに追跡してくれるところにはありません。
シグナル関数は 1 本の足(1 期間)ごとに 1 つの数値を返します:
| 戻り値 | 意味 |
|---|---|
正の数(1.0、0.6…) | ロング。数値がそのままポジションの比率 |
負の数(-1.0、-0.6…) | ショート。数値がそのままポジションの比率 |
0.0 | 手仕舞い |
nan | 現在のポジションをそのまま維持 |
シグナルは次の足の始値で約定します。先物の清算による手仕舞いは、その足の終値で約定します。
数値は切り捨てられません:0.5 なら半分のサイズ、2.0 なら 2 倍のレバレッジとして、そのまま計算されます。ボラティリティターゲティングは自然に小数のシグナルを出しますが、そのエクスポージャーの上限はパラメータの既定値であって、システム側の制限ではありません。
バックテストを済ませた Type A は自動売買ポートフォリオに入れます:「取引設定」で金額を割り当てるとポジション状態が書き出され、reconciler が全戦略の目標を合算して取引所でポジションを調整します(〈本番運用ポートフォリオ〉を参照)。金額を割り当てていない戦略に注文は出ません。
シグナル関数が返すのはウェイト行列(各時点での各銘柄の目標ウェイト)と、対応する価格データです。リバランスの頻度は日次・週次・月次のいずれでもよく、戦略自身が実装します——既成の 2 例(外国人投資家の売買超 z-score で台湾株 100 銘柄から選ぶもの、モメンタムの Top-30)はどちらも週次のリバランスです。
ウェイトの合計 ≤ 1 は設計上の取り決めで、コードは検査しません。合計が 1 を超えてもエラーにはならず、そのままレバレッジとしてリターンに反映されます。
Type C は今のところ、自動売買ポートフォリオへの資金配分に対応していません。根本の理由は経路が無いことです:Type C はポジション状態のファイルを書かないので reconciler の目に入らず、資金を割り当てても注文は出ていきません。ワークスペースは Type C の金額欄をロックしますが、Type C のバックテスト結果は読むもの・共有するものと考えてください。資金を配るためのものではありません。
Type C には自動の MCPT もありません——あの検定は 1 本の価格に対する 1 本のポジションという構造で、ポートフォリオは複数あり、1 本に潰すと実現リターンの再抽出になってしまうからです。戦略ライブラリはこの関門を「対象外」と表示しており、不合格という意味ではありません。
Type B にはテンプレートがなく、ゼロから書き、バックテストも走りません。そして空でないバックテスト結果を持つ戦略だけが自動売買の選択リストに入るため、Type B がそこに現れることは決してありません。
それでも注文は出します——既成の発注ライブラリを自分で呼び、自分でスケジュールします。Blave Agent は「シグナルを出すだけで手は動かさない」製品ではありません:Type A は自動売買の照合を通り、Type B は自分で注文を送ります。
| 項目 | 実際の挙動 |
|---|---|
バックテストの終了日を None に戻していない | バックテストの実行を拒否 |
| 台湾株価指数先物の戦略に清算マスクを適用していない | バックテストの実行を拒否 |
| シグナル関数が無い、または戻り値が無い | バックテストの実行を拒否 |
| 手数料を 0 にしている、または式で書いている | 問題として記録し、実行は続行 |
| 指標型の Type A で描画する系列を宣言していない | 注意を促し、実行は続行 |
| Type C のウェイト合計が 1 を超えている | 検査せず、そのままレバレッジとして計算 |
下半分の 3 行は慣行であって、関門ではありません。エージェントは決まりどおり注意を促しますが、コード側の番人はいません——過剰最適化の回避のチェックが、結局はやるかどうかあなたの判断に委ねられているのも同じ理由です。
| 思い込み | 実際 |
|---|---|
| 複数銘柄のローテーションは Type B | ウェイトを配り、周期ごとにリバランスするなら Type C |
| Type C もバックテストを通れば自動売買に載せられる | バックテストは成績を見るためのもの。今のところ資金を配る経路はありません |
| バックテストレポートに勝率がある | 勝率の欄はありません。勝率が要るなら 1 件ずつのエントリー/エグジット明細から自分で計算することになりますが、Type C のバックテストレポートに 1 件ずつの明細は含まれません(〈バックテストの読み方〉を参照) |
| タイプを選び間違えるとシステムがブロックする | しません。プラットフォームは型を保持できず、選び間違えても合わない書き方と合わない検証が返ってくるだけです |
タイプが分かったら、次は動いているところを見てみましょう。戦略ライブラリの公式戦略には実際のバックテストと明示された検証期間が付いていて、無料で読めます。1 本選んで動かすほうが、このページを読み終えるより早く、自分が書きたいのがどのタイプか分かります。