最初の記事では,バックテストのパフォーマンスに影響を与える統計的および行動的なバイアスについて議論しました.また,Excel, MATLAB, Python, R,C++を含むバックテストのためのソフトウェアパッケージについても議論しました.この記事では,トランザクションコストを組み込む方法や,バックテストエンジンを作成する際に,注文タイプやデータの頻度などの特定の決定を下す必要があることを検討します.
取引モデルを実装する際に最も一般的な初心者の間違いは,戦略に対する取引コストの影響を無視 (または大げさに過小評価) することである.取引コストは通常,ブローカー佣金のみを反映すると仮定されるが,実際には取引モデルでコストが蓄積される他の多くの方法がある.考慮しなければならない3つの主なコストは以下の通りである.
アルゴリズムの取引戦略による取引コストの最も直接的な形態は,佣金と手数料である.すべての戦略には,直接またはブローカージング仲介者 (
ブロッカーは一般的に多くのサービスを提供しているが,定量アルゴリズムは実際に交換インフラストラクチャのみを使用している.したがって,ブローカージー・コミッションは取引ごとにしばしば小さい.ブローカーは,取引のクリアと決済にかかる費用である手数料も請求する.さらに,これは地域または国家政府が課す税金である.例えば,英国では,株式取引に支払うスタンプ税があります.手数料,手数料,税金は一般的に固定されているため,バックテストエンジン (下記を参照) で実装するのは比較的簡単です.
スリッパージは,取引システムが取引を決定する時間と取引が実際に取引所で行われる時間との間に達成される価格の差である. スリッパージは取引コストの相当な要素であり,非常に収益性の高い戦略と不良な戦略の違いを生む可能性があります. スリッパージは,基礎資産の変動,取引システムと取引所との間の遅延,実行中の戦略の種類によって機能します.
波動性が高い楽器は動きやすいので,信号と実行の価格が大きく異なる可能性があります.遅延は信号生成と実行点との間の時間差として定義されます.より高い周波数戦略は遅延問題に対してより敏感であり,この遅延にミリ秒の改善が収益性への違いを生む可能性があります.戦略の種類も重要です.モメントシステムでは,すでに予測方向に動いている楽器を購入しようとしているため,平均的に滑りやすいことが多い.これらの戦略がトレードに反対の方向に動いているため,平均的な逆転戦略は真実です.
市場の影響とは,取引所 (および資産) の供給/需要動態により取引者が負担するコストである.比較的不流動な資産に対する大きなオーダーは,取引者が現在の供給の大きな部分にアクセスする必要があるため,市場を大幅に動かす可能性が高い.これに対抗するために,大きなブロック取引は,新しい流動性が取引所に到着するにつれて,定期的に取引されるより小さな"切片"に分割される.反対に,S&P500 E-Mini指数先物契約のような高度な流動性のある楽器では,低量の取引は,大きな金額で"現在の価格"を調整する可能性は低い.
流動性のない資産は,制限オーダーブック上の現在のオファー価格とオッダー価格の違いであるより大きなスプレッドが特徴です.このスプレッドは,いかなる取引にも伴う追加の取引コストです.スプレッドは,大量に取引される楽器に対するスプレッドの"緊密な"ことを表現する広告キャンペーンを展開する多くの英国のスプレッド賭博会社によって証明されているように,総取引コストの非常に重要な要素です.
上記のコストをバックテストシステムで成功裏にモデル化するために,様々なレベルの複雑なトランザクションモデルが導入されている.それらは単純なフラットモデリングから非線形二次近似まで範囲を帯びます.ここで各モデルの利点とデメリットを概要します:
平面取引コストは,トランザクションコストモデリングの最も単純な形態である.それらは,各取引に関連した固定コストを想定する.したがって,それらは仲介手数料と手数料の概念を最もよく表している.それらは,滑りや市場影響などのより複雑な行動のモデリングに非常に正確ではない.実際には,資産の変動や流動性をまったく考慮していない.それらの主な利点は,計算的に実行が簡単である.しかし,採用されている戦略に応じて,取引コストを大幅に低減または過大評価する可能性が高い.したがって,実際にはほとんど使用されない.
より高度なトランザクションコストモデルは線形モデルから始まり,ピースワイド線形モデルで継続し,二次モデルで結論付けます.それらは最小から最も正確なスペクトルに横たわっていますが,最小から最大の実装努力です.スリップと市場影響は本質的に非線形現象であるため,二次関数はこれらのダイナミクスをモデル化するのに最も正確です.二次トランザクションコストモデルは,よりシンプルなフラットまたは線形モデルよりも実装し,計算するのにはるかに時間がかかりますが,実際にはしばしば使用されます.
アルゴリズムのトレーダーは,現在の取引モデルをより正確にするため,実際の歴史的な取引コストを戦略のインプットとして利用しようとします.これは難しいビジネスであり,しばしば変動,滑り,市場影響のモデリングの複雑な領域に限界があります.しかし,取引戦略が短い期間で大量の取引をしている場合,発生した取引コストの正確な推定は戦略の底線に重要な影響を与える可能性があります.したがって,これらのモデルの研究に投資する努力をする価値があります.
トランザクションコストはバックテストの成功の重要な側面ですが,戦略のパフォーマンスに影響を与える他の多くの問題があります.
アルゴリズムのトレーダーは,利用可能な異なる交換オーダーをどのように,いつ利用するかという選択をしなければならない.この選択は通常,実行システムの領域に属しますが,戦略バックテストパフォーマンスに大きく影響するので,ここで検討します.実行可能なオーダーには2種類があります.市場オーダーとリーミットオーダー.
市場オーダーは,利用可能な価格に関係なく,直ちに取引を実行する.したがって,市場オーダーとして実行される大規模な取引は,反対側での各次制限オーダーが満たされるにつれて,しばしば価格の混合を得ます. 市場オーダーは,潜在的に未知のコストであっても,ほぼ確実に満たされるため,攻撃的なオーダーとみなされます.
リミットオーダーは,取引が部分的または完全に満たされない可能性があるという注意事項で,取引が実行される最悪の価格を決定するための戦略のためのメカニズムを提供します.リミットオーダーは,しばしば満たされていないが,価格が保証される時,受動的なオーダーとみなされます.個々の取引所によるリミットオーダーのコレクションは,本質的に特定のサイズと価格で購入および販売オーダーのキューとして知られています.
バックテストを行う際には,市場またはリミットオーダーを使用する効果を正しくモデル化することが不可欠である.特に高周波戦略では,市場影響およびリミットオーダーブックの影響が正確にモデル化されていない場合,バックテストはライブ取引を大幅に上回る可能性がある.
オープン・ハイ・ロー・クローズ (OHLC) の形式での日々のデータを利用する際に,バックテスト戦略に関連した特定の問題があります.特に株式については,これはYahoo Financeが提供するデータ形式です.これは小売アルゴリズムトレーダーにとって非常に一般的なデータ源です!
低価格または無料のデータセットは,生存率バイアス (第1部分で既に議論した) に苦しんでいるが,複数の取引所からの複合価格フィードでもある.これは,データの極端なポイント (すなわちオープン,閉鎖,高値,低値) が,地域取引所での小規模なオーダーにより,
これは,あなたの取引戦略が特にOHLCポイントのいずれかを広く利用している場合,あなたのブローカーとあなたの利用可能な流動性へのアクセスに応じて,注文が異なる取引所にルーティングされる可能性があるため,バックテストパフォーマンスがライブパフォーマンスとは異なる可能性があります.これらの問題を解決する唯一の方法は,より安い複合フィードではなく,より高い周波数データを使用するか,個々の取引所から直接データを取得することです.
次の2つの記事では,バックテストのパフォーマンス測定,および上記の効果の多くを含むバックテストアルゴリズムの実際の例を検討します.