2021年4月発売/A5判 302頁
定価 本体 5,800円+税
ISBN 978-4-7759-7281-6 C2033
トレーダーズショップから送料無料でお届け
ジョージ・プルートのトレンドフォロートレーディング・アルゴリズムの世界へようこそ!
本書では、ジョージ・プルートがPythonで書いたTradingSimula18バックテスターを使って、これらのシステムを記述、プログラミング、検証する。TradingSimula18はポートフォリオに含まれる各銘柄を毎日ループして、バックテストの最中にアロケーションを変更することができるのが特徴だ。セクター分析や銘柄やセクターのオン・オフなど、多岐にわたるトピックが満載である。
Pythonはオープンソースの言語で、今、最も人気があり、最も学びやすい言語だ。クオンツのための言語とも言えよう。しかし、Pythonが初めての人でも、本書には「Hello World」から、リスト内包表記(list comprehension)に至るまでのチュートリアルがすべて含まれているので、何の心配もない。「batteries are included」(データが含まれている)とあるように、プログラミングと検証を始めるのに必要なものはすべて本書に含まれている。読者がダウンロードするものは最新バージョンのPythonのみだ。タートルズ、ドンチャン、ボリンジャー、ケルトナー、3本や2本の移動平均など、あなたの好みのシステムもすべて本書のなかに含まれている。
含まれているのはこれだけではない。30もの銘柄の15年にわたる先物のつなぎ足データもプルートが正しく修正したものが含まれている。また、すべてのアルゴリズムはイージーランゲージでもプログラミングしているので、Pythonが嫌いな人でもまったく心配はいらない。
あとは、プルートが手取り足取り伝授してくれる検証DIYワールドへ、そしてあなただけのアルゴリズム開発の世界へ、旅立とう!
第1章 TradingSimula18――例を使ってトレードアルゴリズムのプログラミング方法を学ぶ
TradingSimula18のスタータースクリプト
Python3.7のインストール
初めてのTradingSimula18スクリプトの実行
TradingSimula18のリポートの出力
トレンドフォローのサンプルスクリプト
利益目標とプロテクティブストップを使う
スカラー変数ではなくリストを使う
関数とクラス構造のインディケーターの簡単な紹介
第1章のまとめ
第2章 トレンドフォローアルゴリズム――チャネルとバンドと移動平均、準備はいいかな?
名目価値に基づくポートフォリオの正規化
ボラティリティに基づくポートフォリオの正規化
1トレード当たりのリスクに基づくポーフォリオの正規化
仕掛ける前のリスクコントロール
線形回帰を使って仕掛ける
スイングハイやスイングローを使って仕掛ける
押しや戻りを待って仕掛ける
複数の仕掛け――1つの頭より2つの頭のほうが良い?
第2章のまとめ
第3章 マネーマネジメント、ここからが楽しいところ――「グループのなかの最初のN」戦略
「グループのなかの最初のN」戦略
「グループのなかの最初の2」戦略
ポジションマトリックス
セクターの指定
トレードアルゴリズムにセクター分析を加える
銘柄の選好
「グループのなかの最初のN」戦略――別のアルゴリズムで検証
ポートフォリオの未決済トレードの資産に基づく銘柄のオン・オフ
最大含み損のトレードを手仕舞って、新たなシグナルを待つ
最大含み益のトレードを手仕舞って、新たなシグナルを待つ
保有のポジション数を限定することでマーケットイクスポージャーを限定する
crosses関数
Pythonのリストマジック
セクター内のトレード可能な2銘柄のうち同時に1銘柄しかトレードしない
第3章のまとめ
第4章 TradingSimula18の威力――トレード日の前に知るべきこと
トレード日の前に知るべきこと
1つの戦略で2つのアルゴリズムをトラッキングする
ADXを使ってアルゴリズムを使い分ける
ADXにアクセスして、2つのアルゴリズムを定義する
トレード日の前に損失に基づいて銘柄をオン・オフする
MarketMonitorクラス
クラスのデータと関数にアクセスするためのドット
トレード日の前にポートフォリオ全体をオン・オフする
セクターの平均ADXの値に基づいて毎月セクターをオン・オフする
ADXの値に基づいて個々の銘柄をオン・オフする
第4章のまとめ
第5章 過去にうまくいったトレンドフォローシステム――手始めとして打ってつけ
TF-System #1
週足と日足の両方を使う
TF-System #2
TF-System #3
TF-System #4
ウエルズ・ワイルダーのparabolic関数
TF-System #5――パラボリックとボリンジャーの組み合わせ
TF-System #6
月初めにポートフォリオに含まれるすべての銘柄のADXの値を調べて並べ替える
TF-System #7
ドミナントサイクルをアダプティブエンジンとして使う
TradingSimula18の限界
第5章のまとめ
第6章 データ、エディター、IDEほか
パナマバックアジャストつなぎ足データ
クアンドルデータ
あなた自身のASCIIデータを使う
クールなエディターとPythonのIDE
付録A TradingSimula-18のキーワードと予約語
付録B 無料のつなぎ足データ(クアンドルやそのほかのデータベンダーから収集)
付録C イージーランゲージコード
付録D 89/13ドンチャンシステムにマイケル・コベルのマネーマネジメントを加えたときの分析
付録E タートルズシステムをTradingSimula-18で書く
付録F TradingSimula-18のインディケーターモデュールとクラス
参考文献 本書の執筆に使った参考図書
さて、金融市場を理解するための枠組みとして現在支配的なのは、古典的な経済学由来の演繹的なパラダイムである。それは、効率的市場や合理的経済人といった仮定に基礎を置き、少数の権威が唱えた主張を正しいものとして組み立てられている。そうしたモノの考え方は科学的な態度からは程遠いが、多くの金融人は長年にわたってそれを真実だとして振る舞うことを習慣づけられてきた。
だが1980年代の初期、その暗黒のような世界にDTFシステムは突如彗星のごとく現れ、瞬く間にこの世界を席巻し、旧い慣習にとらわれた人間を駆逐していった。当時、これを開発した人々はエンジニアをはじめとした部外者であり、金融市場の知識や経験を持たなかったが、同時に非科学的なドグマにも支配されていなかった。彼らは市場データを純粋に機械学習の対象として扱い、先物のリターン分布におけるファットテイルの特徴の発見からDTFシステムの構築に至ったのである。
関係者の経験やもっともらしい理屈に基づいて将来を予測するのではなく、単に機械学習の結果による入出力関係の確度に基づいて意思決定と行動を行うというDTFシステムの仕組みは、今日振り返ると、紛れもなく人工知能技術を金融市場に用いた世界最初の事例であった。そうしたイノベーティブな試みは金融市場以外でもすさまじい威力を発揮し、初期のトレンドフォロアーの1人であったジョン・ヘンリーは、DTFシステムによる資金運用で得た資産で2002年にボストン・レッドソックスのオーナーとなると、データとエビデンスに基づく分析や戦略を野球に持ち込み、短期間でワールドシリーズ制覇を成し遂げた。
資産運用において機械が人間にとって代わる流れは40年以上前から進行中の不可逆的変化である。DTFシステムはその嚆矢であるが、驚くべきことに、それは今でもまだ有効に機能している。私たちは本書を通じてその基礎を学び、その適用範囲を拡げることで、金融市場における科学パラダイム転換を成し遂げる革命に参加することになる。
翻訳にあたっては以下の方々に感謝の意を表したい。山下恵美子氏は正確な翻訳を行っていただいた。そして阿部達郎氏には丁寧な編集・校正を行っていただいた。また、本書が発行される機会を得たのは、パンローリング社の後藤康徳社長のおかげである。
2021年3月
長岡半太郎
私が東京を訪れた目的は、メカニカルなトレードシステムを日本に売り込むことだった。日本の投資家やトレーダーもメカニカルなトレードシステムを使えばもっと効果的にトレードすることができるはずだと思ったのだ。1998年当時、日本では先物トレードは依然としてギャンブルとみなされ、一般投資家は主として小豆、乾繭、日経平均などの日本の先物市場と、アメリカでトレードされているのに似た商品のみをトレードしていた。
先物トレードは、テクニカル分析と同じく、日本が起源であることをほとんどの人は知らない。また、今ではローソク足は当たり前のように使われているが、ローソク足やローソク足パターンは江戸時代に日本人によって考案されたものだ。しかし、完全にメカニカルなトレードシステムは当時の日本人トレーダーにとっては新しい概念だった。
しかし、潮の流れは変わりつつあった。先物トレードと1990年代の新しいテクノロジーは日本の若い投資家の興味をそそった。チャンスによってお金を稼ぐことはタブーではなくなりつつあった。先物取引をビジネスにする先物業者たちは、顧客ベースが機関投資家ではなく、目の前の若者たちに移りつつあることを認識し、取り残されたくないと感じていた。新しい顧客のニーズを理解し、彼らが仕事を楽にできるようにするためには、自分たちがアルゴリズムトレードを学ぶ必要があると彼らは感じていた。
ブラインドが閉められ、照明が落とされ、私のプレゼンが始まった。45度の傾きで上昇する資産曲線は大きなテーブルの周りに座っているすべての人々を感動させた。プレゼンは通訳を介して行われたうえ、参加者のシステムに対する知識がないため、たびたび中断された。会議室の照明が再び照らされるまでに4枚のスライドしか説明できなかった。言いたいことが本当に伝えられたのかどうか私は不安だった。テクニカル分析とシステマティックトレードこそが新たなトレーダーたちにとっての最良の選択肢であることを私は伝えたかった。しかし、パフォーマンス曲線は参加者の目には非常に効果的だった。これは最高の売りになった。細かいことに興味を示す人はおらず、彼らが興味を示したのは結果だけだった。
なぜこんな話をするのだろうと思ったことだろう。あれから20年たった今、私がプレゼンしたシステムはいまだにトレード業界全体で使われている。システマティックトレードの概念は20年前も今も依然として目を見張るものだ。市場は24時間市場になり、ますます効率化され、参加者もはるかに増えた。まるでどのトレーダーもトレードステーションやIB(インタラクティブブローカーズ)口座を持っているかのようだ。クオンツたちも市場に参入した。コロケーションや高頻度トレードの話などする必要はないほどだ。
私が45度の傾きの資産曲線を示したとき、テーブルの周りいる参加者は笑顔になったという話をしたが、これらの曲線をもたらしたのは、「トレンドフォロー」という共通のコア概念を持つトレードアルゴリズムである。昔は「トレンドはあなたの友だち」だった。そしてそのあとも「トレンドはあなたの友だち」だった。友情は以前ほどではないにしても、今でもトレンドに頼ることができる。1980年代のタートルズたちは今でもシステマティックトレンドフォローアプローチに重きを置き、ヘッジファンドやCTA(商品投資顧問業者)たちもみんなシステマティックトレンドフォローアプローチを使っているように思える。2004年、マイケル・コベルは『トレンドフォロー入門――トレンドの魔術師たちの売買戦略と成功の秘密』(パンローリング)という本を書き、大金持ちたちが大きな富を築いたのはトレードの歴史のなかで最も成功したトレード戦略を使ったからだという話を人々に思い出させた。その1年前にはアクティブトレーダー誌でトレンドフォローがカバーストーリーとして紹介された。
2019年の今、私たちの友だちはまさかのときに頼りにならない友となり、姿を現すときよりも姿を隠しているときのほうが多くなった。大手トレンドフォローCTAの多くは最悪のドローダウン(50%以上)を喫し、過去3年間では閉鎖したところもあった。これは何百万ドルという運用資産を持つファンドの話だ。だれを責めたらいいのだろうか。効率的市場か、ついうっかり秘密を漏らした元タートルズのメンバーか、低金利か、コモディティ価格の低下か、クオンツか。リストは延々と続く。
そんななか、この時代の最も賢明なマーケットアナリストのキース・フィッチェンが公言したのがパラダイムシフトだ。将来的には新たな手法が必要になると彼は言った。トレンドフォローがうまくいっているときにはおそらく損失を出したであろうが、2011年からずっと利益を出し続けている手法がそれだ。2013年、フィッチェンは画期的な本を書いた。『トレードシステムの法則――検証での喜びが実際の運用で悲劇にならないための方法』(パンローリング)がそれである。同書で彼は、バックテストを行うことはできないが、非常に論理的でシンプルなアイデアについて書いている。これらのシンプルなアイデアこそが違いを生むことを彼は同書で語っている。しかし、私は疑い深い人間だ。私はこれらのアイデアを自分で検証したくなった。そのために作成したのがTradingSimula18(TS-18)というソフトである。このソフトを使ってフィッチェンの概念の多くを検証することができた。このソフトはPythonで書いた。ほとんどがコマンドラインからなるが、非常にパワフルなソフトだ。
本書はこのソフトを紹介するために書いたものだ。私はこのソフトを一から自分で書いた。このソフトは大げさな機械学習や複雑なライブラリーなど一切不要だ。フィッチェンの概念を理解するのは簡単だ。しかし、これらの概念をバックテストするとなると話は別だ。もしあなたがこの旅を私とともにするつもりがあるのなら、まずは小さな学習曲線を克服する必要があるだろう。しかし、それだけの価値はあると私は思っている。本書は絶対的な回答を示すものではないが、簡単な仕掛けや手仕舞いのアルゴリズムを超えたアイデアを検証するためのツールは提供できると信じている。概念は提供するが、その概念を高みに押し上げられるかどうかは読者次第だ。私は本書を、かつての広範に及ぶ信頼の置ける堅牢なトレンドフォローシステムを、近代的でもっと重要なのは、利益の出るアルゴリズムに改良できるかどうかをチェックするための記録として使いたいと思っている。この旅に出るための荷づくりは済ませた。バッテリーを含め、あなたが必要なすべてのものはすべて本書のなかにある(https://www.trendfollowingsystems.com/ からもダウンロード可能)。さあ、いよいよ再起動の時だ!
かいつまんで話せば、私はトレードシステムはテクニカル分析ではなくて、プログラミングを通して学んだ。1年目はプログラミングに忙しくて、トレードのことを学ぶ暇はなかった。プログラミングに没頭しているとき、ジョン・ヒルが勝ったときはベルを鳴らし、負けたときはぶつぶつ不平を言っているのが聞こえた。最初のころはベルの音が頻繁に聞こえた。1980年代はプログラミングはトレードを始めるのに打ってつけの方法とは言えなかったが、今ではトレードにはプログラミングが必須だ。トレードシステムの開発はプログラミングを行うことを意味する。アルゴリズムトレーダーになりたければ、プログラミングのバックグラウンド、あるいは少なくともある程度のプログラミングの経験が必要だ。本書は少なくともとっかかりとしてはよいだろう。そのため、本書では私がPythonで書いたバックテストソフトを提供している。このソフトウェアは今でも開発途中にあるが、これまでの開発プロセスも最高に楽しかった。このソフトウェアでは1980年代の中ごろにフィッシャーが開発したソフトウェアの大きな欠陥だとだれもが思っているようなものも解決済みだ(フィッシャーのソフトウェアでは、一度に1つの市場をバックテストして、それを連続的に行うことができなかった)。エクスカリバーは1つの市場の全履歴を検証したあと、次の市場の検証へと進み、すべての検証が終わったら結果をまとめて提示する。したがって、検証中はポートフォリオの統計量を分析することはできない。今市販されている商用ソフトウェアパッケージのなかにもこの問題を解決してくれるものがある。本書では、私がアルゴリズムをどのようにプログラミングして、結果をどのように分析したかをすべて提示する。アルゴリズムのソースコードはTradingSimula18で提供する。TradingSimula18は私がPythonで作成したバックテスターの公式名だ。ソースコードの大部分はイージーランゲージでも提供しているので、Pythonが嫌いな人でも問題はない。トレードステーション、マルチチャート、トレーダーズスタジオのような検証・トレード用プラットフォームは本書のコードを何の問題もなく理解できるだろう。どんな言語でも、プログラミングの方法を知らなくても心配は無用だ。トレードアイデアを言葉にすることができれば、そのアイデアを検証するのに必要な小さなスクリプトはすぐにプログラミングすることができるようになる。
第1章について
第1章ではTradingSimula18と簡単なチュートリアルを紹介する。TradingSimula18を使ったのは、事前に大金を使うことなくプログラミングと検証のいろはを教えたかったからだ。第1章を読み終えるころには、アイデアをスクリプトにすることができるようになっているはずだ。ボリンジャーバンド、ケルトナーチャネル、移動平均などをベースとするアルゴリズムとそのスクリプトは基本を学ぶのに打ってつけのツールだ。逆指値、指値、成り行き注文(MOO注文[寄り成り]とMOC注文[引け成り])のスクリプトも紹介する。このあとの章に進む前に、第1章をよく理解することが重要だ。つまり第1章はその後の章に進むための授業料のようなものだ。
第2章について
第2章では、長期にわたって存在してきた伝統的なトレンドフォロー手法について見ていく。良いアルゴリズムを開発するための基礎として、あまりよく知られていないアルゴリズムも紹介する。これらのアルゴリズムの堅牢性や堅牢性の欠如を示すために、パフォーマンス統計量も示す。第2章ではポートフォリオの正規化という概念についても紹介する。バックテストのお偉い先生方の多くは1枚ベースのポートフォリオ分析は役に立たないと言う。その点を勘案して、本書ではポートフォリオの正規化は名目価値、ボラティリティ、1トレード当たりのリスクの均等加重によって行う。TradingSimula18を使えば、各市場のポジションサイズは、どの市場が最大の名目価値を持つかによって毎日変更することができる。例えば、金の名目価値が15万ドル(100オンス×1500ドル)で大豆の名目価値が4万5000ドル(5000ブッシェル×9ドル)だとすると、金のポジションサイズは1枚で、大豆は3枚ということになる。検証ではつなぎ足データを使うため、データは実際のデータとは違ってくる(つなぎ足では絶対価格はロールオーバー時の差額に基づいて調整される)。しかし、つなぎ足を使ったのは、TradingSimula18のつなぎ足作成機能を示したかったからだ。ボラティリティを使うことで正確さは増す。したがって検証でもボラティリティによる正規化を使う場合がある。固定リスクに基づく枚数の調整についても見ていく。押しや戻りを待っての仕掛けやほかの仕掛けテクニックについても紹介する。
第3章について
第3章ではいろいろなマネーマネジメントとアロケーション手法について説明する。第3章ではキース・フィッチェンの「グループにおける最初のN」アロケーション手法の結果と実際のプログラミングコードを示す。さらに、セクター分析もソースコードを示しながら説明する。また、マーケットシンボルに基づくいろいろなセクターの設定例とTradingSimula18によるプログラミングの方法についても説明する。未決済トレードの資産、最大勝ちトレード、最大負けトレード、保有中のポジションの枚数に基づく特定市場のオン・オフについても説明する。
第4章について
第4章はTradingSimula18のパワフルさを堪能できる章だ。TradingSimula18は独特の検証パラダイムを持っているため、ポートフォリオの全体像はヒストリカルな検証の足が始まるごとに把握することが可能だ。また、1つの戦略で複数のアルゴリズムをトラッキングする方法についても説明する。ここでは特にコアとなるMarketMonitorオブジェクトを取り上げ、その要素を詳細に説明する。また、トレード日の前にポートフォリオにおける各市場のすべてのインディケーター値を知ることで、いろいろな検証が可能になる。また、市場、セクター、全ポートフォリオはトレード日の前のADXの値に基づいてオン・オフすることができる。ほぼすべての分析では、オンオフのスイッチはトレード月の初日に切り替えるものとする。
第5章について
第5章はトレンドフォローアルゴリズムについての章だ。人気のあるいろいろなトレンドフォローアプローチの結果を見ることができる。また、計算に週足を使う方法も紹介する。さらにウエルズ・ワイルダーのパラボリックSAR関数と戦略をプログラミングし、詳細に解説する。また、ボリンジャーバンドによる仕掛けとパラボリックによる手仕舞いを組み合わせた例についても見ていく。インディケータークラスとインディケーター関数の違いについても詳細に説明する。ポートフォリオに含まれるトップ10市場のみをADXランキングに基づいてトレードするというクールな検証についても説明する。
第6章について
第6章はデータについて議論する。QUANDLから入手した無料の先物データを分析するツールも提供する。これらのツールはQUANDLのデータをダウンロードして継ぎ合わせてつなぎ足データを作成するのに使った。このデータは、https://www.trendfollowingsystems.com/ から入手可能だ。また、ISLEやSublimeといったPythonエディターやPyScripterやSublimeといったPythonIDEについても見ていく。これらを手に入れる方法と、本書のウェブサイトについても紹介する。
付録について
付録A TradingSimula-18のキーワードと予約語
付録B 無料のつなぎ足データ(QUANDLやそのほかのデータベンダーから収集)
付録C イージーランゲージコード
付録D 89/13ドンチャンシステムにマイケル・コベルのマネーマネジメントを加えたときの分析
付録E タートルシステムをTradingSimula-18で書く
付録F TradingSimula-18のインディケーターモデュールとクラス
参考文献 本書の執筆に使った参考図書
私からの最後の言葉。TradingSimula18は急いで作成したため、バグも1つや2つではないかもしれない。バグを見つけたら私に知らせてほしい。できるだけ早くバグ取り除くつもりだ。本書に示した例のなかにはプログラミングエラーがあるかもしれない。エラーを見つけたら遠慮なく指摘してほしい。また、本書に示した概念のもっとよいプログラミング方法があれば、ぜひ知らせてほしい。TradingSimula18はほとんど全面開示されており、分かりにくい部分もほとんどないので、いろいろな機能を自由に付け加えてほしい。