基本方針の確認と分析対象の選定。
アプローチ
ペアトレードの理屈を押さえたところで、共和分関係にある$Y_t$と$X_t$のペアをどう探せばよいのかというのが次の問題だ。
アプローチとしては2つあるように思う。
- 数多くのペアを対象にする
- 特定のペアを対象にする
数多くのペアを対象にする
数多くのペアを対象にすることのメリットは、リスクの分散とトレード機会の多さにある。 共和分という考えはアカデミックなものであるし信頼に値するが、共和分の関係は絶対のものではない。 そこでリスクを分散することで、損益に対する個別の共和分の関係の影響を低減し、共和分という考え自体を利益の源泉とするというアプローチは至極真っ当であろう。
ペアトレードを行うにあたってのタイムフレームは恐らく日足ベースとなるので、ポジション構築のチャンスはよくても数ヶ月に一度といった頻度になるはずだ。 そうなると、監視監視の日々となる。これはペアトレードに対するモチベーションの維持にとって好ましくない。
特定のペアを対象にする
特定のペアに対象を絞ることのメリットは、集中することによる副次効果にあると考える。 対象となったペアとそれを構成する2銘柄に関する知識は対象を絞ることでより深まるはずだ。
数多くのペアを対象とするアプローチが浅いが広いという経験の積み方だとすれば、こちらは狭いが深いという経験の積み方と言えるだろう。 それぞれの銘柄が持つ特性や独特な値動きパターンなども合わせて理解することでトレードで最も重要と言える精神の安定を得られる可能性が高い。
実は2回目
正直な話、ペアトレードに取り組もうと思ったのは今回で2度目なのだ。 1度目は10ペアに対象を絞り、日々誤差項を自動で計算してその結果をネット上で確認できる仕組みを作った。 しかし、作ってはみたものの、そこで力尽きてしまった。有益なデータの収集も出来ず、実際にポジションを組むところまで至らなかった。
今回は、両張りの手法を自らの武器の1つにしたいという思いが強い。じっくり取り組む所存である。
投資、投機という言葉は、ともに投げるという字が頭に付く。これは自分のお金が自らのコントロール下を離れることを意味する。 誰か、何かに大切な資金を託すということだ。当然、信用信頼のおけない相手に任すことは出来ない。 今回は、ペアトレードという手法だけでなくペア構成銘柄に対しても安心感を抱けるようになることを目標としたい。
そこで、for文で機械的に対象を探すのではなく、手探りで周辺知識を得ながら自分のパートナーとなるペアを探そうと思う。
対象を絞り込む
共和分関係にあるペアを探すにあたっては、その組み合わせは無限にあるので、どうしても対象を主観で絞り込むところから初めなければならない。 現段階では何に投資するのかではなく、何を分析するのかというだけの話なので好みで良いであろう。
ネットで情報収集をしていたら素晴らしいブログを発見した。
Buy「原油株」、(CFDで)Sell「WTI原油」!
というペアトレードを実践されている方のブログである。原油という商品の特性、ETFとCFDの違いなど、かなりつっこんだ内容まで公開してくれており、非常に面白かった。 商品先物には前から興味があったので、追従してみる。
ブログは閉鎖されたようです。原油価格は昨年末からずっと右肩上がりを続けているので、買いポジションでカバーできなくなったのかな。 研究成果の続報を楽しみにしていたので、ちょっと残念。
原油
原油は世界でもっとも取引されている商品だ。先物の取引量を見ると、トップ10に原油は2つも入っている。我らのN225はなんと3位だ。
- S&P500 E-mini (Globex)
- 10 year T-Notes (CBOT)
- Nikkei225 Mini (JPX)
- Euro-Bund (EUREX)
- Crude Oil (NYM)
- 5 year T-Notes (CBOT)
- Euro-Bobl (EUREX)
- Brent Crude Oil (ICE)
- Gold (CMX)
- Euro-Schatz (EUREX)
What are the top 10 Liquid Futures Contracts?
流動性が高いことは、取引対象として見たとき高評価である。
CFD
CFD(Contract For Difference)とは、差金決済デリバティブ取引の一種で、 証券取引所などの市場を通さずに、売り手と買い手が当事者同士で価格や売買数量などを決めて行う取引のことだ。 デリバティブという言葉が示すように何か基になるものがあり、 しかしそれ自体を取引することは無く、証拠金を預け入れて対象を売買した場合の差額のみを決済する。 なんだかややこしいが、要は通貨を対象としないFXである。したがって、レバレッジも効く。
基になるもののことを原資産という。CFDの原資産は通貨以外にも数多くあり、GMOクリック証券の場合、 2020年11月時点で確認したところ、CFDの取り扱い銘柄は49銘柄があった(ハイレバレッジ型、株式CFDを除く)。 この中には原油も含まれている。
WTI先物/CME
さて、この原油であるが、GMOクリック証券のサイトを見ると、参照原資産はWTI先物/CMEとなっている。
WTIはウェスト・テキサス・インターミディエイト(West Texas Intermediate)の頭文字を取ったもので、 アメリカのテキサス州とニューメキシコ州を中心に算出される原油の総称。その先物はNYMEX(New York Mercantile Exchange)に上場されている。
そして、NYMEXは、CME(Chicago Mercantile Exchange)のグルーブなのでこのような表記になっているのであろう。 シンボルはCLで、GMOクリック証券の原油CFDと目視でチャートを比較したところ概ね値動きは合っているようだ。
日付 | CL | GMO |
---|---|---|
2020-11-02 | 36.81 | 37.08 |
2020-11-03 | 37.66 | 38.13 |
2020-11-04 | 39.15 | 39.12 |
2020-11-05 | 38.79 | 38.51 |
2020-11-06 | 37.14 | 37.45 |
しかし、原油価格がマイナスとなった4月20日近辺では大きな違いが発生している。 CL(当限つなぎ足)では20日に-36.73の終値を記録している一方、GMOクリック証券のデータを見ると底値は翌21日の13.07だ。
日付 | CL | GMO |
---|---|---|
2020-04-16 | 19.87 | 19.72 |
2020-04-17 | 18.27 | 25.14 |
2020-04-20 | -37.63 | 21.23 |
2020-04-21 | 11.57 | 13.07 |
2020-04-22 | 13.78 | 20.81 |
この後、何日ぐらいで同水準に落ち着くのだろう。
日付 | CL | GMO |
---|---|---|
2020-04-23 | 16.50 | 21.84 |
2020-04-24 | 16.94 | 21.33 |
2020-04-27 | 12.78 | 18.24 |
2020-04-28 | 12.34 | 17.19 |
2020-04-29 | 15.06 | 19.12 |
2020-04-30 | 18.84 | 21.96 |
2020-05-01 | 19.78 | 22.31 |
2020-05-04 | 20.39 | 23.50 |
2020-05-05 | 24.56 | 27.10 |
2020-05-06 | 23.99 | 25.49 |
2020-05-07 | 23.55 | 24.83 |
2020-05-08 | 24.74 | 25.99 |
2020-05-11 | 24.14 | 25.35 |
2020-05-12 | 25.78 | 25.85 |
2020-05-13 | 25.29 | 25.91 |
2020-05-14 | 27.56 | 27.95 |
2020-05-15 | 29.52 | 29.74 |
同水準に戻るのに凡そ2週間ほどかかっている。
相対取引なので証券会社が提示する価格に顧客が同意すれば契約が成立するわけで、価格は証券会社次第だ。そして、証券会社がどのように価格を計算しているかは分からない。 分析は実際に取引できる価格に近い方が実践上好ましいので、無理にCLを分析に使うより、GMOクリック証券の原油の値動きに近いものを選んだ方が良いかもしれない。
最終的にTradingViewのチャートに誤差系列をインジケーターとして表示することを目論んでいるので、データはなるべくTradingViewで参照できるものにしたい。 TradingViewで参照できるものの中ではUSOILがこの条件に合いそうである。
ペア対象
まずは手始めに、NEXT FUNDS エネルギー資源(TOPIX-17)上場投信(1618)をペア相手としてみる。 さきほどのCLはドル建て、こちらは円建てなので通貨を揃そろ得てやる必要がある。 ドル円の為替にはOANDAのもの使うことにする。
データの下処理
ようやく使用するデータの選定が済んだ。さっそくデータをエクスポートして下処理を行う。 現状はこんな状態。
time open high low close 1618, TSE: Compare USDJPY, OANDA: Compare
0 1568152800 57.85 58.27 55.63 55.94 10740 107.832
1 1568239200 55.88 56.33 54.02 55.08 10770 108.108
2 1568325600 55.12 55.66 54.46 54.87 10790 108.096
unixtimeを日付に変換し、不要な行を削除し、カラム名を分かりやすい名前に変更し…
df['time'] = pd.to_datetime(df['time'], unit='s').dt.round("D")
df.set_index(df['time'], inplace=True)
df.drop(['time', 'open', 'high', 'low'], axis=1, inplace=True)
df.rename(columns={'close': 'WTI',
'1618, TSE: Compare':'_1618',
'USDJPY, OANDA: Compare':'USDJPY'}, inplace=True)
df.head(3)
time WTI _1618 USDJPY
0 2019-09-11 55.94 10740 107.832
1 2019-09-12 55.08 10770 108.108
2 2019-09-13 54.87 10790 108.096
ここから分析に必要な諸々の系列を作っていきたいのだが…
df['WTI']['2020-04-15':'2020-04-23']
time
2020-04-15 20.159
2020-04-16 19.780
2020-04-17 18.437
2020-04-20 0.009
2020-04-21 13.030
2020-04-22 14.324
2020-04-23 17.091
Name: WTI, dtype: float64
やはり、4月20日の異常値が問題に…
心ならずも恣意的な操作を…
df .loc['2020-04-20', 'WTI'] = (df['WTI']['2020-04-17'] + df['WTI']['2020-04-21']) / 2
とりあえず、WITの価格を円換算し、収益率と累積収益率の系列をWITと1618のそれぞれで作る。
df['WTI_JPY'] = (df['WTI'] * df['USDJPY']).round(0)
for i in ['WTI_JPY', '_1618']:
df[f'{i}_r'] = np.log(df[f'{i}']).diff(periods=1) * 100
df[f'{i}_cr'] = np.cumprod(1 + df[f'{i}_r'] / 100)
df.dropna(inplace=True)
df.drop(['WTI', '_1618', 'USDJPY', 'WTI_JPY'], axis=1, inplace=True)
df.head(3)
WTI_JPY_r WTI_JPY_cr _1618_r _1618_cr
time
2019-09-12 -1.284743 0.987153 0.278940 1.002789
2019-09-13 -0.403837 0.983166 0.185529 1.004650
2019-09-16 12.027155 1.101413 0.000000 1.004650
プロット
円換算したWTIの収益率
円換算したWTIの累積収益率
1618の収益率
1618の累積収益率
データの分析
プロットを見る限り累積収益率はトレンドがあり非定常過程でありあそうだ。 一方、収益率はゼロ辺りを平均に推移していることが見て取れる。
問題は4月20日の前後1ヶ月ほどの期間である。特にWTIの収益率はこの期間に分散が大きくなっている。
今回はここまで。次回に続く。