ポートフォリオのバックテストでは、同じ1ドルを二度使いながら、滑らかな資産曲線が示されることがあります。シミュレーターが、純資産、現金、担保、購買余力を同じものとして扱うと起こります。これらは関連していますが、それぞれ答える問いは異なります。口座が何を保有し、何を負債として抱え、今すぐ別の注文にいくら充てられるか、という問いです。
たとえば、戦略が$10,000で開始し、ある資産を$6,000分購入したとします。自由に使える現金は$4,000です。ここでバックテストが次のポジションを純資産$10,000の100%で設定すると、記録上の資金は$10,000のまま、エクスポージャーは合計$16,000になります。口座のルールによっては、レバレッジとして認められる場合もあります。しかし、注文サイズの計算コードが「純資産」を使ったというだけでは正当化されません。
誤りその1:純資産を現金として扱う
この近道は、複数資産を扱う戦略でよく見られます。各シグナルが現在のポートフォリオ価値の一定割合で注文サイズを決め、どの注文もその全額を使えるものとして計算します。ポートフォリオの処理ループは注文を個別に計算し、資金を確保せずに後から合算します。
流動性の高い銘柄を扱い、追証もないバックテストでは、問題を見落としがちです。リターンはもっともらしく見える一方、後から合計したポジション比率が140%や180%になることがあります。実口座では後続の注文が拒否されたり、戦略が意図していなかったレバレッジがかかったりします。
注文を組み立てるたびに現金を確保しましょう。現金口座なら、$2,000の買い注文には手数料を含めて$2,000が必要です。証拠金口座では、取引所のルールに基づいて必要証拠金を計算し、その額だけ利用可能な購買余力を減らします。複数の注文が同時に届く場合は、優先順位を決めておきましょう。そうしないと、どの処理ループが先に動いたかで結果が変わることがあります。
誤りその2:ロックされた担保を自由な購買余力として数える
デリバティブ取引所では、$1,000の担保を差し入れても、口座の純資産が必ず$1,000減るわけではありません。ただし、その担保は保有中のポジションに充てられています。よくある会計処理の近道では、担保を現金から差し引いたうえで、ポジションの名目額全額も購買余力から差し引きます。逆に、担保を自由に使える現金と証拠金の両方として扱うケースもあります。
どちらの誤りも、次の注文に使える資金を歪めます。前者では戦略が必要以上に制約されているように見え、後者では口座が支えられない注文まで通ってしまいます。レバレッジが5×の場合、$5,000のポジションに必要な当初証拠金はおよそ$1,000かもしれませんが、維持証拠金、手数料、未実現損失、取引所ごとの階層によって利用可能額は変わります。名目額と担保は同じではありません。
| 口座の数量 | 表すもの | 新規注文に充てられるか? |
|---|---|---|
| 純資産 | 負債と時価評価したポジションを反映した口座価値 | 証拠金と購買余力のルールに従う場合のみ |
| 自由に使える現金 | すでに使用、確保、または担保として差し入れていない現金 | はい。銘柄ごとのルールの範囲内で可能 |
| ロックされた担保 | 保有中のポジションまたは注文を支える資金 | 通常、解放されるまで利用できない |
| 購買余力 | 追加注文のために取引所が算出する余力 | はい。現在の上限まで可能 |
単純なケースでは一部の値が等しくなる取引所もありますが、これらは別々の数量としてモデル化してください。そのうえで、ポジションが損失を出した場合の動きをテストします。純資産が減り、名目額に対する維持証拠金の割合が上がり、利用可能な購買余力はどちらか一方の数値だけから予想するより速く縮小することがあります。
誤りその3:シグナルが決済を示した時点で資金を解放する
バックテストでは、決済シグナルが出た瞬間に資金を解放することがよくあります。しかし、決済シグナルは約定ではありません。注文は未約定のまま保留されたり、一部だけ約定したり、キャンセルされたりする可能性があります。ポジションが実際に決済されるまでは、証拠金とエクスポージャーは残ります。約定後も、手数料と実現損益によって利用可能になる額が変わります。
問題は、売買の回転が速いときに集中しがちです。シミュレーターは1つの取引を決済すると、すぐにその売却代金を別の取引に使い、両方が希望価格で問題なく約定したものと仮定します。ペーパートレードでは、最初のポジションがまだ開いているために、2つ目の注文が拒否されることがあります。あるいは決済注文が一部しか約定せず、バックテストの想定より自由に使える資金が少なくなることもあります。
未約定の注文とポジションも、資金を拘束するものとして追跡しましょう。意図ではなく約定に基づいて資金を解放します。一部約定した決済注文では、実際に決済された数量に応じて、コストを差し引いた後に資金を解放します。値動きの激しい日に2つの戦略が同じ現金を奪い合うまでは、細かすぎる処理に思えるかもしれません。
台帳を明示する
各判断時点で、決まった順序で更新する台帳を用意します。既存ポジションを時価評価し、純資産と証拠金を計算し、約定とコストを処理して、購買余力を再計算した後、新規注文のサイズを決めて資金を確保します。現金とポジション価値の変化をすべて照合できるだけの詳細を記録しましょう。
有用な不変条件の1つは、受け付けられたすべての注文が、発注時点の口座モデルに基づいて必ず資金を確保できることです。どの現金や証拠金が注文を支えるのかをシミュレーターが説明できないなら、そのポートフォリオを実際に保有できることをバックテストで示せていません。
リターン計算と並行して、小規模な監査も実行しましょう。最大総エクスポージャー、自由に使える現金の最低額、証拠金余力の最低値、購買余力を超過した注文数を報告します。資金をひそかに再利用した場合にだけ好成績を出す戦略は、ポートフォリオのサイズ計算ができているにすぎず、実運用可能なバックテストとは言えません。
← 記事一覧


