統合された株式ペアを取引するための取引戦略

この記事の目的は、モスクワとニューヨークの取引所で特定された、 統合された株式ペアの取引に基づいた統計的裁定取引の最も単純な戦略を共有することです。



共同で統合された株式のペアを取得した場合、ある証券の損失が別の証券の利益で相殺される場合、市場に中立な戦略をヘッジおよび構築する機会があります。 実際にはどのように見えますか?



取引戦略



株式の共同統合ペアがあるとします。 X そして Y 、およびこれらの株式の一定期間の価格 0...T 。 たとえば、以前の共同統合に関する記事から、ティッカー付きの株式(VSYDP、NKHP)をいくつか取ります。 彼女の場合、215取引日の価格データがあります。



観測の前半を使用して、取引戦略のパラメーターを決定します。 次に、見つかったパラメーターに基づいて、観測の後半を取り、バックテストを実行します。つまり、そのような戦略が私たちにお金をもたらすかどうかをテストします。



さらなる議論のために、2つの銘柄のスプレッドが必要になります。 st=yt betaxt 。 ペア(VSYDP、NKHP)を使用した例では、共和分に関する前の記事ですでにスプレッドが見つかっているため、ここで画像を複製します。







だから、私たちは皆、安く買い、高価に売りたいです。 スプレッドがゼロを下回った場合、株式 Y (VSYDP)は在庫よりも安い X (NKHP)。 逆に、スプレッドがゼロを超えて上昇した場合、株式 Y 在庫よりも高価 X (まあ、または X に比べて安い Y



したがって、本質的に、取引戦略は株式を購入することです Y 株を売る X 比率で 1\ベ スプレッドがゼロよりわずかに低い場合(ラインの下 G 写真で)。 スプレッドがゼロに戻ったら、売りでポジションをクローズする必要があります Y そして買う X 同じ比率で。 この場合、サイズの利益を得る G







ここでは、所有していない株を売ることができるはずだということを理解することが重要です-これは空売り(空売り)と呼ばれます。 また、すべてのブローカーがサービスの標準パッケージで空売りの可能性を含んでいるわけではないことに注意する必要があります。



一般に、スプレッドが特定のラインを横切る場合、1つのロングポジション(ロング)と1つのショートポジション(ショート)を含むポートフォリオを構成します。 G または、ゼロから反対方向に彼女を置き去りにします。 そして、スプレッドがゼロに戻ったときにすべてのポジションをクローズします。



発生する次の質問は、「意味を見つける方法 G



値を見つける方法 G



数学に加えて、すぐにmatlabで実装を行います。 以下のコードは、 共和分に関する前の記事のコードの自然な続きです。 観測の前半が必要になりますが、 t=0...T/2 これを「履歴」と見なします。



T = length(testPrices); half = round(T/2);
      
      





まず、平均比を見つけます Y そして X 観測の前半。





 barr= frac1T/2+1 sumT/2t=0 fracytxt







 sumRatio = 0; for i = 1 : half sumRatio = sumRatio + testPrices(i,1) / testPrices(i,2); end r = sumRatio / half;
      
      





ティッカー(VSYDP、NKHP)のある株式のペアの場合、計算値  barr=$34.392 。 次に、観測の前半のスプレッドの最大絶対値を計算します。





m= maxt|yt barrxt|t=0...T/2







 clear absspread for i = 1 : half absspread(i,1) = abs(testPrices(i,1) - r * testPrices(i,2)); end m = max(absspread);
      
      





ティッカー(VSYDP、NKHP)のある株式のペアの場合、計算値 m=$3204. 。 これで値を決定できます G 総当たりで:一定の割合で m そして、この割合のさまざまな値の「履歴」で取引を試み、最大の利益をもたらす値を選択します。 これは、行の目的の値になります G



さまざまな値の繰り返し G 最高を見つけるために



まず、取引数を計算する必要があります。 最初の取引、それを示します t1 、最初に位置に着いたときに行います。 この場合、まだ利益を得ることはできません。





t1= mint|st| geqg







どこで st -スプレッド。 さらに成功する取引の瞬間は次のとおりです。

  1. もし stn geqgtn+1= mintt>tnst leqg ;
  2. もし stn leqgtn+1= mintt>tnst geqg


次に、利益は次のように計算されます d1 cdot2g どこで d -取引数、 g -の割合 m 。 取引がなかった場合、利益はゼロになります。 d1 cdot2g 常に1つの比率で取引する場合の最小利益 Y そして \ベX



 clear profit for h = 1:10 g = 0.05 * h * m; profit(h,1) = 0.05 * h * 100; profit(h,2) = g; clear trade k = 1; for i = 1:half - 1 if abs(spread(i)) >= g trade(1,1) = i; trade(1,2) = spread(i); trade(1,3) = -1; trade(1,4) = beta; trade(1,5) = testPrices(i,1); trade(1,6) = testPrices(i,2); trade(1,7) = 0; startIndex = i; k = 2; break end end if k == 1 break end for i = startIndex:half - 1 if (trade(k-1,2) <= -g) && (spread(i) <= g) && (spread(i+1) >= g) trade(k,1) = i+1; trade(k,2) = spread(i+1); trade(k,3) = -1; trade(k,4) = beta; trade(k,5) = testPrices(i+1,1); trade(k,6) = testPrices(i+1,2); trade(k,7) = 0; k = k + 1; end if (trade(k-1,2) >= g) && (spread(i) > -g) && (spread(i+1) <= -g) trade(k,1) = i+1; trade(k,2) = spread(i+1); trade(k,3) = 1; trade(k,4) = -beta; trade(k,5) = testPrices(i+1,1); trade(k,6) = testPrices(i+1,2); trade(k,7) = 0; k = k + 1; end end if exist('trade', 'var') tradesNumber = size(trade,1); profit(h,3) = tradesNumber; profit(h,4) = (tradesNumber - 1) * 2 * g; else profit(h,3) = 0; profit(h,4) = 0; end end
      
      





次の表は、ティッカー(VSYDP、NKHP)のある株式のペアの割合と結果を示しています。

割合 G 取引 利益
5 160.2224 7 1922.7
10 320,4449 5 2563.6
15 480,6673 5 3845.3
20 640,8898 5 5127.1
25 801,1122 5 6408.9
30 961,3347 5 7690.7
35 1121.6 5 8972.5
40 1281.8 3 5127.1
45 1442 3 5768
50 1602,2 3 6408.9
55 1762.4 3 7049.8
60 1922.7 3 7690.7
65 2082.9 3 8331.6
70 2243.1 3 8972.5
75 2,403.3 3 9613.3
80 2563.6 3 10254
85 2723.8 1 0
90 2884 0 0


値を決定するには G 、「履歴」に基づいて最大の利益が得られる値を選択するだけです。



 [M, I] = max(profit(:,4)); bestG = profit(I,2);
      
      





しかし G=$2,563. (の80% m )最大の利益をもたらしますが、実際には選択しません G 以上 50万ドル 、さらなる利益に関連する困難のため、したがって、 G=1121.6 (の35% m



戦略テスト



決定後 G 取引戦略は観測の後半に適用されます。



 clear strategy for i = half + 1:T if abs(spread(i)) >= bestG strategy(1,1) = i; strategy(1,2) = spread(i); if spread(i) > 0 strategy(1,3) = -1; strategy(1,4) = beta; else strategy(1,3) = 1; strategy(1,4) = -beta; end strategy(1,5) = testPrices(i,1); strategy(1,6) = testPrices(i,2); strategy(1,7) = 0; startIndex = i; break end end if exist('strategy', 'var') k = 2; for i = startIndex:T-1 if (strategy(k-1,3) ~= 0) if (spread(i) >= 0) && (spread(i+1) <= 0) strategy(k,1) = i+1; strategy(k,2) = spread(i+1); strategy(k,3) = 0; strategy(k,4) = 0; strategy(k,5) = testPrices(i+1,1); strategy(k,6) = testPrices(i+1,2); strategy(k,7) = strategy(k-1,2) - spread(i+1); k = k + 1; end if (spread(i) <= 0) && (spread(i+1) >= 0) strategy(k,1) = i+1; strategy(k,2) = spread(i+1); strategy(k,3) = 0; strategy(k,4) = 0; strategy(k,5) = testPrices(i+1,1); strategy(k,6) = testPrices(i+1,2); strategy(k,7) = spread(i+1) - strategy(k-1,2); k = k + 1; end else if (spread(i) <= bestG) && (spread(i+1) >= bestG) strategy(k,1) = i+1; strategy(k,2) = spread(i+1); strategy(k,3) = -1; strategy(k,4) = beta; strategy(k,5) = testPrices(i+1,1); strategy(k,6) = testPrices(i+1,2); strategy(k,7) = 0; k = k + 1; end if (spread(i) >= -bestG) && (spread(i+1) <= -bestG) strategy(k,1) = i+1; strategy(k,2) = spread(i+1); strategy(k,3) = 1; strategy(k,4) = -beta; strategy(k,5) = testPrices(i+1,1); strategy(k,6) = testPrices(i+1,2); strategy(k,7) = 0; k = k + 1; end end end end if exist('strategy', 'var') totalProfit = sum(strategy(:,7)); else totalProfit = 0; end
      
      





G=1121.6 利益は3倍です。 つまり、3回の差が0から G その逆も同様です。 このような戦略の実装には6つの取引が含まれていることに注意してください。ポジションを取得して終了するには、2つの取引を行う必要があるためです。



下の図と表は、6つの取引ポイントすべてを示しています。







貿易 tst 役職 YX 価格 Y 価格 X 利益
1 108 3145.9 (-1; +35.6527) 13200 282 -
2 128 -211,447 清算 9700 278 3357.4
3 134 -1161.9 (+1; -35.6527) 8500 271 -
4 171 14,6605 清算 8500 238 1176.5
5 205 -1184,5 (+1; -35.6527) 7800 252 -
6 212 185,1035 清算 8100 222 1369.6
合計 5903.5


ここで得られる利益は 3Gドル= 3 \ cdot 1121.6 = 3364.8ドル 。 日中データの代わりに終値を使用するため、ポイントで取引しません G 0および G 。 表からわかるように、107取引日の利回りは、手数料、取引量などを除いて25.39%になりました。つまり、非常に大まかな見積もりでは年間約60.74%です。



NYSEで58組のカップルに対してもテストが実施されました。 そこでは、ゼロの利益を除いて、この戦略のおおよその年間利回りは、手数料、ボリュームなどを除いて、23.34%から208%の範囲でした。



代替戦略のテスト



スプレッドがゼロに近づいたときにポジションを閉じる代わりに、スプレッドが到達したときにポジションを反転することができます G ゼロから反対側に。 売ったとしましょう 1Y そして買った 35.6527X 差が大きかったので G



今、あなたは違いが達する瞬間を待つことができます G 買う 2Y 売る 2 cdot$35.6527 。 その結果、私たちはサイズのロングポジションからポートフォリオを維持します 1Y ショートポジションサイズ 35.6527X



 clear strategyAlt for i = half + 1:T if abs(spread(i)) >= bestG strategyAlt(1,1) = i; strategyAlt(1,2) = spread(i); if spread(i) > 0 strategyAlt(1,3) = -1; strategyAlt(1,4) = beta; else strategyAlt(1,3) = 1; strategyAlt(1,4) = -beta; end strategyAlt(1,5) = testPrices(i,1); strategyAlt(1,6) = testPrices(i,2); strategyAlt(1,7) = 0; startIndex = i; break end end if exist('strategyAlt', 'var') d = 2; for i = startIndex:T-1 if (strategyAlt(d-1,2) >= bestG) && (spread(i) >= -bestG) && (spread(i+1) <= -bestG) strategyAlt(d,1) = i+1; strategyAlt(d,2) = spread(i+1); strategyAlt(d,3) = 1; strategyAlt(d,4) = -beta; strategyAlt(d,5) = testPrices(i+1,1); strategyAlt(d,6) = testPrices(i+1,2); strategyAlt(d,7) = strategyAlt(d-1,2) - spread(i+1); d = d + 1; end if (strategyAlt(d-1,2) <= -bestG) && (spread(i) <= bestG) && (spread(i+1) >= bestG) strategyAlt(d,1) = i+1; strategyAlt(d,2) = spread(i+1); strategyAlt(d,3) = -1; strategyAlt(d,4) = beta; strategyAlt(d,5) = testPrices(i+1,1); strategyAlt(d,6) = testPrices(i+1,2); strategyAlt(d,7) = spread(i+1) - strategyAlt(d-1,2); d = d + 1; end end end if exist('strategyAlt', 'var') totalAltProfit = sum(strategyAlt(:,7)); else totalAltProfit = 0; end
      
      





このような戦略は、最初の取引とポジションを逆にする1つの取引につながります。 これらの取引は、図と下の表に示されています。







貿易 tst 役職 YX 価格 Y 価格 X 利益
1 108 3145.9 (-1; +35.6527) 13200 282 -
2 134 -1161.9 (+1; -35.6527) 8500 271 4307.8
合計 4307.8


ポジションを逆にすることによる利益は 2G=2 cdot1121.6=$2243. 、したがって、この場合の総利益は少なくとも 1 cdot2G=$2243. 。 表からわかるように、107取引日の収益性は、コミッション、ボリュームなどを除いて18.53%に達しました。つまり、非常に大まかな見積もりでは年間約44.32%です。



NYSEで58組のカップルに対してもテストが実施されました。 そこで、利益ゼロを除いて、この戦略のおおよその年間利回りは、コミッション、ボリュームなどを除いて、17.63%から201.53%の範囲でした。



取引戦略のこの変更により、取引数が平均で2倍に減少します。 同時に、取引コストが削減されます。 差が0を中心に上下に移動した場合、代替戦略の方が収益性が高くなります。 ただし、考慮されるケースでは、ペアが0から0の間を移動する傾向がある場合 G 、主な戦略は何度も何度もポジションを作成して清算し、そしてお金を稼ぎますが、ポジションはまったくひっくり返されません。



結論



理論上、統合されたペアで取引する場合、特に2つの取引戦略の形式で上記の方法を使用して、安定した利益を引き出すことができます。 考慮された株式ペア(VSYDP、NKHP)の場合、最初の方法は差がゼロ以下で変動する傾向があるため、より効果的であることが判明しました。



共同で統合されたペアを取引する際に安定した利益を生み出す可能性は楽観的に見えますが、デモ口座でさらに分析する必要があります。これについては次に説明します。



トピックに関する読み物



テリー・J・ワッシャム、ケイト・パラモウ。 金融の定量的方法/あたり 英語から の編集の下で M.R. エフィモワ。 -M .:ファイナンス、UNITI、1999。-527 p。



この教科書によると、HSEでの定量分析は、当時のマスター向けに教えられていました。 共和分に関するセクションがあります。



UPD。 モスクワ証券取引所の2017年のバックテスト結果



All Articles