Python
CTA
SystematicTrading
FinancialEngineering
TechnicalTrading

Python3ではじめるシステムトレード:システムトレードってなに?

 ヘッジファンドとかCTAという言葉をよく耳にするようになりました。一般には市場の波乱要因として紹介されています。どちらも投資家の資金を運用するプロです。多くの場合、金融市場に投資をしますが、エネルギー、貴金属、工業用金属、穀物市場などありとあらゆるものを投資対象とします。ヘッジファンドの運用手法はたくさんのカテゴリーに分類されます。CTAは先物市場専門の運用者で、ヘッジファンドの運用カテゴリーの1つです。大きくはシステムと裁量のトレーダーに分けることができます。


  • システム:価格の動きをコンピューターなどを用いて分析し、トレーディングの規則を確立し、その規則にしたがって取引を行う人たちです。必ずしも自動売買である必要はありません。

  • 裁量:電話等を使って、主だった市場の参加者から情報を収集し、または、必要な価格、経済、財務データを取得して、独自の手法で分析した後に、取引の有無を裁量で決める人たちです。

 このような人たちはまた、トレンドフォロアーとコントラリアンに分類できます。

- トレンドフォロアー:価格に上昇トレンド、下落トレンドが出るとそこから利益を得ようとする人たちです。

- コントラリアン:価格の動きとは逆の方向に賭ける人たちです。

 何かえらくややこしい話ですね。つぎが重要な話です。この中で長く生き残れるのはトレンドフォロアーだといわれています。これは多くのデータベースの分析から得れた結果です。もちろんそうではない人たちでも長い間これらのビジネスで成功している人たちはたくさんいます。

 トレンドフォロアーの成功の確率が高いとはどういうことでしょうか?それは市場にはトレンドがあるということです。それも予測可能でなければ投資は成功しません。その意味で価格の動きがランダムであったら投資は成功しません。正直を言うとこれらの人たちの投資手法は秘匿性が高くあまり知られていません。ただし、そのなかでもCTAは割と情報公開を行っています。そのような人たちは大体数日から数か月の間で投資を行っているようです。結構短い期間なのでスイングトレードをイメージした人は多いのではないでしょうか。スイングトレードはまさしく価格のスイングを利用して利益を得る投資手法です。しかし、その実態はベールに包まれたままです。一般に知られているテクニカルやクオンツ、ファンダメンタルといった投資手法では可能ではありません。今ではコンピューターを使ってしらみつぶしに調べることはできますが、なかなか有効な方法が見つからないのが事実です。その理由は何でしょうか?それはランダムウォークという価格の動きの性質にあります。Pythonで作ってみましょう。

P=[1]

for i in range(1,1440):
w=np.random.normal(0,1)
P.append(P[i-1]+0.0002*w)
plt.plot(P)

image.png

これはドル円の為替市場を想定して作っています。外国為替市場は24時間取引されています。価格が一分単位で動くと想定すると、24時間で1440分あることになります。それが1440で表現されています。random.normalで発生させた乱数は、0.0002により為替市場のボラティリティを表現できるように調整されています。グラフは価格の下落トレンドを表現しています。しかし、これは乱数で作られたトレンドであることに注意をしましょう。何度かこのプログラムを走らせると10回に一回ぐらいはこのようなトレンドがランダムに生まれます。これを確率的トレンドといいます。繰り返しになりますが、このトレンドはランダムに発生するので予測は不可能です。このトレンドと予測できるトレンドを区別できない限り、成功するスイングトレンドはできません。したがって、システムトレードで最も重要な要素は、リスクマネジメントということになるのです。

 ではリスクマネジメントが重要とはどういうことでしょうか?市場は生き物のように変化するので常に監視が必要だということです。それもいろいろな角度からの監視が必要です。予測できない事象は常に起きるということです。ですので、自動売買でスイングトレードする場合でも監視が必要です。100%システム運用とよく言われますが、それは実現不可能です。そもそもシステムを設計するのはひとなのでそこで裁量が必ず入ります。プロの世界でも実質50%であれば上出来ではないでしょうか。かつそれが人から教わったり、人の手法をコピペしたものであればなおさらです。この最大の欠点は何でしょうか。考えればすぐにわかります。同じタイミングでシグナルが出ることです。そうすると買値はより高くなり、売値はより安くなり自分に不利になるばかりです。

 成功している人のコピペをして金融市場が危機的状況に陥った時を知っていますか?それはリーマンよりも問題が大きかったので大惨事にならなくて済んだといわれています。それはLTCMショックです。LTCMはノーベル経済学者がマーケティングをしていたことで知られるヘッジファンドです。あまりにもうまくいっていたために世界中のヘッジファンドとインベストメントバンクが彼らの戦略をコピペしたのです。しかし、ロシア危機で彼らのポジションは危機的な状況に陥りました。同時に同じ戦略をとっていたすべてのヘッジファンドとインベストメントバンクのポジションが危機的状況に陥ったのです。ですから、みんなが一致団結して危機を乗り越えたのです。この時にこの団結を裏切った証券会社がいました。それがペインウェーバーです。かれらはそのしっぺ返しとしてリーマンのときに助けてもらえなかったのです。

このようにヘッジファンドとCTAには問題点もありますが、良い点もたくさんあります。その証拠はヘッジファンドの残高は何だかんだといわれながらも増加傾向にあることです。時たま、市場の混乱で残高を減らしますが、その後必ず上昇に転じています。かれらは戦略を常に改良し市場に適応してきました。彼らを批判するのは簡単です。「ライアーズポーカー」や「フラッシューボーイズ」のように一世を風靡した著作とそれに乗じて自分の正当性を媚びしている人たちはたくさんいます。しかし、最も良い態度は彼らの良いところを吸収することです。

そしてもう一つ大事なことは時間を味方につけることです。プロの投資戦略には時間の制限があります。プロでなければその制約がなくなるので、その分、戦略の自由度が増します。

リスクマネジメントを強調しましたが、注意点があります。リスクマネジメントと損切のトレード(ストップ)が同等に扱われている表現をよく見ます。つぎの例を忘れないようにしてください。有り金はたいて株を買いました。しかし、価格が下がってしまったので損切しました。そして、つぎの瞬間からその株は上昇を続けました。そうすると手元資金ではその株は買えません。ですので損を取り戻す機会は価格がまた下がってくるまで訪れないのです。もしその株が上がり続ければ、損を取り戻す機会はありません。

追記:2019年1月よりYahoo Financeよりデータをダウンロードしていますが、徐々にうまくダウンロードできない場合が増え始めています。まだ、このサービスは公式発表されていないので、試験段階だと思います。ダウンロードするタイミングによってどの銘柄がダウンロードできないかが変わりますので、アクセス数の影響かもしれません。また特定の銘柄はダウンロードができなくなっています。このような銘柄はWEBからもダウンロードできません。

参考文献・サイト

「Python3ではじめるシステムトレード」(パンローリング)

「ライアーズポーカー」

「フラッシュボーイズ」

Yahoo Finance us からダウ工業株30種平均に採用されている銘柄をダウンロードしてリターンとリスクをみる

(https://qiita.com/innovation1005/items/199df28af6fc0d60a4b0)

Yahoo Finance USからナスダック100の銘柄をダウンロードしてリスクとリターンの関係を見た

(https://qiita.com/innovation1005/items/28d286562e2c35e6d2f9)

Python3ではじめるシステムトレード: データサイエンスにおける対数の役割

https://qiita.com/innovation1005/items/5460a440b72c3c46375b

-- この記事は学習目的に書かれていることに注意をしてください。投資は自己責任です。--