Edited at

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

 ヘッジファンドとかCTAという言葉をよく耳にするようになりました。一般には市場の波乱要因として紹介されています。どちらも投資家の資金を運用するプロです。多くの場合、金融市場に投資をしますが、エネルギー、貴金属、工業用金属、穀物市場、不動産、未上場株式などありとあらゆるものを投資対象とします。ヘッジファンドの運用手法はたくさんのカテゴリーに分類されます。

 CTAは先物市場専門の運用者で、ヘッジファンドの運用カテゴリーの1つです。大きくはシステムと裁量のトレーダーに分けることができます。


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

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

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

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

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

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


トレンドフォロアーの成功の確率が高いとはどういうことでしょうか?

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

%matplotlib inline 

import matplotlib.pyplot as plt #描画ライブラリ
import numpy as np
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%システム運用って何?

100%システム運用とよく言われますが、それは実現不可能です。そもそもシステムを設計するのはひとなのでそこで裁量が必ず入ります。プロの世界でも実質50%であれば上出来ではないでしょうか。かつそれが人から教わり、人の手法をコピペしたものであればなおさらです。この最大の欠点は何でしょうか。考えればすぐにわかります。同じタイミングでシグナルが出ることです。そうすると買値はより高くなり、売値はより安くなり自分に不利になるばかりです。


成功している人のコピペをして金融市場が危機的状況に陥った時を知っていますか?

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


「ライアーズポーカー」や「フラッシューボーイズ」から何を学ぶべきか?

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


リスクマネジメントを強調しましたが、注意点があります。

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

また、損切りをしたのですが、資金に余裕があるために、再度ポジションを取りました。しかし、再び損切りをすることになりました。このようなことを繰り返すと、潤沢な資金もすぐに枯渇してしまいます。損切りは収益機会を的確にとらえることのできるひとのシステムトレードの効率を向上することに使いえますが、未熟な人の過ちを助けることにはならないのです。


少ない取引回数が理想的

システムトレードをさきほどのスイングトレード、または高頻度取引、アルゴリズム取引と取り違えている人たちが多くいます。システムトレードの目的は、たくさんのシミュレーション(バックテスト)をすることで、トレードの効率を上げることです。これは単純に取引の回数を減らすことにつながります。取引の回数を増やすと利益が増える、投資効率が改善すると考えている人たちがいますが、つぎの様に考えると理解しやすいと思います。まずは、連続で取引ができるとしましょう。連続に取引をすると無リスクで簡単に利益が得られます。でもこれは不可能です。なぜなら取引費用が掛かるからです。そこで取引費用もなしにしましょう。でもまだ、問題があります。価格がほんの僅かだけ動いたのでほんの僅かだけ取引をしたいのです。これも不可能です。そこでどのような単位でも取引をできるようにしましょう。それでもまだ問題があります。それは利益が出たときの税金です。それもなしにしましょう。というような具合で理想的な市場を作っていきます。そして、先ほど、利益が出るには予測ができることが必要だといいました。つまり市場を予測のできる市場とできない市場に分けます。できない市場でどれくらいの収益が見込めるか、予測ができる市場でどれくらいの利益が見込めるかを理想的な市場のもとで、分析するのです。そうすると理想的な市場でどれくらいの利益を得らえるかの目安が得られます。これを金融工学や経済学では投資の期待収益と呼びます。取引回数を増やすということは連続に取引をしている戦略に近くなります。つまり、金融工学で議論をすることに近くなるわけです。しかし現実には取引費用はありますし、取引できる金額はどれでもいいわけでなく、ある金額の整数倍になっています。つまり、システムトレードとは金融工学の結果をより現実に近い状況ではどのようにトレードをするべきなのかの答えを出してトレードすることなのです。そして一般的には取引の回数は減ります。


アルゴリズム取引と取引回数

一度にたくさんの量の取引をすることを考えてみましょう。市場が誰かが買いたいのだと気が付けば、価格は上がるでしょうし、売りたいのだと思えば、価格は下がるでしょう。もしこの状況を変えたければどうすればよいでしょうか?対策を講じるしかありません。それがアルゴリズム取引です。理想は市場の価格に影響を与えないように、取引を終了することです。しかしそれは現実的には不可能です。ですから市場の価格に与える影響を極力なくして、その見返りとして市場に費用を払うのです。それがアルゴリズム取引です。簡単な例でいうと100枚先物取引をしたいのだけれどもその際には1%の価格変動が起こってそれが損失となることは明確であるとしましょう。それを1回ずつに分割して取引をしていきます。そうすると自分が市場に影響を与える1%の値動きはなくなりますが、そのぶん時間がかかるので、価格が自分に不利な方向に動いてしまうかもしれません。それが0.5%の影響だと見込めれば、分割取引を実行します。この分割の仕方にはいろいろあり、それはアルゴリズム取引の1つです。このような場合には取引回数の増加が取引の執行の効率を上げるかもしれませんが、それは取引の執行の効率であり、システムトレードの効率ではありません。


マーケットメイクと取引回数

実は取引回数の増加が収益の安定に直結する人たちがいます。それはマーケットメイクをする人たちです。マーケットメイカは最良売り指値と買い指値に多くの注文を置き、成り行きの注文でそれが執行されるのを待っている市場の参加者です。このような人たちは取引の回数が増えれば増えるほど利益は上がりますが、逆選択リスクといって、逆のポジションをもたされてしまう可能性も増えます。それは受けた取引とは逆の方向に価格が動いてしまう場合です。その際には大きな損失が発生します。その損失をカバーするためにたくさんの取引が必要なわけで、たくさんの取引が安定した収益に必ずしも結びつくとは限りません。この点に注意が必要です。


フィルターというまやかし

たくさんのテクニカル指標があります。また、金融工学から生まれる取引の手法もたくさんあります。しかし、これらを教科書通りに実際のトレード、またはバックテストに用いてうまくいくことはまずありません。そこでよく耳にするのが、フィルターを通してトレードするというアイデアです。ここでいうフィルターとは、別のテクニカル指標とかアイデアと組み合わせて用いるということです。この場合の注意点は、2つのものを組み合わせるとその組み合わせが実現する頻度は減少するということです。そうすると、今度は結果の統計的な意味が減少してしまうのです。その回数が極端に少ない場合には、たまたまその組み合わせが起こってよい結果が得られたのかもしれません。この点はよく注意をする必要があります。


欲には現実を直視させない力がある

欲はひとから理性をうばいます。「少ない取引回数が理想的」「アルゴリズム取引と取引回数」「マーケットメイクと取引回数」「フィルターというまやかし」で説明したことは、なかなか理解しづらい部分があるかもしれません。しかし、市場は結構すでに効率的なので、なかなか簡単に利益を与えてくれないということには注意が必要です。


トレンドは予測するもの?

「トレンドをどのように予測したらよいのでしょうか?」と多くの人たちが思っているのではないでしょうか?しかし、トレンドは予測するものではなく、作るものです。ではどのように作ったらよいのでしょうか?それは簡単です。市場はつねに批判にさらされています。悪者扱いをされています。それはそのような部分が少なからずあるからでしょう?そうするとそれが理由で取引機会を失ったり、収益機会を逃したりしてしまう人たちが出ます。そうするとそれが負の連鎖を生みます。ですから、システムトレーダーにとってトレンドを作るとは、『市場が世間から信任を得られるように取引する』ということです。


システムトレードでは時間を味方につける

システムトレードで大事なことは時間を味方につけることです。プロの投資戦略には時間の制限があります。プロでなければその制約がなくなるので、その分、戦略の自由度が増します。これは「少ない取引が理想的」と同じことです。


(注) アルゴリズム取引の定義

「アルゴリズム取引はコンピュータ・プログラムによって証券の自動取引を行う手法」アルゴリズム取引、足立高徳

「アルゴリズム取引とは、コンピューターが自動的に売買銘柄、売買量、売買タイミング、売買市場等を決定し、金融商品の注文を行う取引のことである。」アルゴリズム取引の正体、NTTデータ・フィナンシャル・ソリューションズ先端金融工学センター

「アルゴリズム取引とは、あらかじめ定められたアルゴリズムに従って機械的に売買する取引の執行形態である」、金融研究 2011.4、 取引コストの削減をめぐる市場参加者の取り組み、杉原慶彦


(注2) ヘッジファンドとCTAの違い

CTAはcommodity trading advisorのことで、1970年代に金融先物が取引されることから顧客資産を先物取引で運用する業者として規制対象になってきました。CTAにお金を預けるときには、取引に必要な証拠金としてあずけます。したがって、投資の仕組みが適切であれば先物取引所が受け入れる適格債・現金という与信リスクで投資ができます。一方のヘッジファンドはそうではありません。彼らに資金を預けるときには彼らの与信リスクを取ることになります。つぎに、運用成績を見てみましょう。

image.png

随分と運用成績に差があります。これはどのように解釈したらよいのでしょうか?


  • ヘッジファンドのトレーダーは学歴が高く知的である

  • ヘッジファンドは投資資金全額を受けるので金利収入が手に入る

  • ヘッジファンドはクレジットリスクの高い資産に投資ができる

  • ヘッジファンドは取引所以外で取引される資産に投資ができる

などがその理由に挙げられます。しかし、ヘッジファンドでもCTAを行っているところがありますが、大体ヘッジファンドのほうが高い運用成績を上げています。それはリスクを調整した場合でも同様です。そうすうと知的レベルは関係ありません。つぎに金利収入ですが、これも理由にはなりません。これほど大きな差はできません。クレジットリスクを取れるは可能性があります。しかし、最も大きな理由は店頭市場で取引ができることです。上場市場の効率は結構高いのです。もっとも簡単な例として為替の証拠金取引を考えてみましょう。ヘッジファンドの中には為替の証拠金取引業者を営んでいるものもいます。その際にはいかにも儲かりそうな複雑な構造のデリバティブを個人投資家などに販売している場合があります。その際に投資家が買うときには不当に高く、売るときには不当に安すければ利益を得やすくなります。同様なことが一般の店頭市場でも行われています。いかにも時世にあった儲かりそうな構造をもったデリバティブは上場市場ではありえないような価格で取引が行われる可能性があるのです。ここでいう店頭市場には、中小の金融機関、事業法人、富裕層が入ります。気を付けたいものです。


(注3)バックテストのパフォーマンスが高すぎる問題

独自の戦略を思いつき、そのバックテストをしたのだけれども高いパフォーマンスが得られた場合には注意が必要です。


  • 将来の情報を使っていないかをチェックする。

  • レバレッジが効きすぎていないかをチェックする。

  • 四本値の使い方が正しいかチェックする。


    • 始値を使って執行をして否かをチェックする。始値は何時価格が付いたかわからない。

    • 高値と安値で執行をしていないかをチェックする。高値と安値は一日が終わると決まるので、執行には使えない。



  • 日計りトレード(ティックデータ)


    • 執行の方法が適切であるかどうかをチェックする。


      • 日計りのトレードでは指値、成り行き、ストップを指定する必要がある。

      • 指値をどの条件で執行させているかをチェックする。

      • 成り行きのスリッページが適切かどうかをチェックする。

      • ストップの執行条件とスリッページをチェックする。
        参考:Python3ではじめるシステムトレード:グロスマン・ミラーモデル(翻訳)
        https://qiita.com/innovation1005/items/8f3da94f6af3e05fa461





  • ペーパートレーディングでありがちな、良い成績の出るデータの配信


    • ペーパートレーディングは信頼のおけるシストレの検証の方法を思われていますが、業者の提供する環境にはテストが必要です。特に海外の業者の環境ではそのようなものが多いので注意が必要です。




(注4) 安心できるシステムトレードって?

金融の世界ではレバレッジといって、手元資金以上の金額をトレーディングや投資に使うことができます。この仕組みはよくてこの原理にたとえられます。このような仕組みの宿命として、金融市場では安定した収益を得られることはまずありえません。もし、安定した収益が得られるのであれば、だれもが同じトレーディングの方法や銘柄に投資をするために、価格が不安定になるからです。したがって、投資の世界で短い期間で勝てる確率はそんなに高くはならないのです。もし何かけがをしてお医者さんに行くとします。そのお医者さんの手術の成功率が60%だといわれたらかなり危険な手術だということになり、安心などできないでしょう。システムトレードの成功率はそれよりも低いと思います。


システムトレードに関する普遍的な原則と注意点について


しかし、そこには限界と可能性がある


+ 原則 1:データの数はできるだけ多いほうが良い

過学習に陥らないために


+ 原則 2: 価格の変動が大きければ対数を取れ

スケールの錯覚に陥らないために


+ 原則 3: ランダムウォークにしたがわない価格をさがせ

確率的トレンド

確定的トレンド


  • 統計的検定の利用


+ 原則 4: 得られたデータは使い尽くせ

値動きにパターンがあると誤解しやすくなる


+ 原則 5: 価格の状態空間は無限だと思え

予期せぬことだけが起こる。


リスク管理を怠るな。


+ 原則 6: 乱数の性質を有効利用しよう

どんなに多くのデータを得たとしても十分ではない。


+ 原則 7: 統計的性質に精通する前に哲学者であれ

統計学は万能ではない。

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


参考文献・サイト

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

image.png

「ライアーズポーカー」

「フラッシュボーイズ」


特にシステムトレードに興味のある方

Yahoo Finance USから株価をダウンロードしてみた

システムトレードってなに?

リスクマネジメントって何?

簡単バックテストで安心シストレ

カルマンフィルター

システムトレードにおける対数の役割


予測に興味のある方

予測について


経済データのダウンロード

経済データのダウンロード


外国為替に興味のある方

外国為替レートについて


高頻度取引について

グロスマン・ミラーモデル(翻訳)


人工知能関連

誰でもわかるニューラルネットワーク

誰でもわかるニューラルネットワーク:アプリのように動かす人工知能ーテンソルフロープレイグラウンド 

誰でもわかるニューラルネットワーク:「回帰」と「平均への回帰」 

誰でもわかるニューラルネットワーク:貧困の撲滅

誰でもわかるニューラルネットワーク:正則化をテンソルフロープレイグラウンドで試してみた 

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

  • 特にシステムトレードに興味のある方
  • 予測に興味のある方
  • 経済データのダウンロード
  • 外国為替に興味のある方
  • 高頻度取引について
  • 人工知能関連