Python版:2006年に書籍で「勝てる」とされた手法の「その後」をバックテスト

Posted on March 6th, 2021Updated on March 6th, 2021
Python版:2006年に書籍で「勝てる」とされた手法の「その後」をバックテスト

※ この記事は最終更新日から3年以上が経過しています。

どんな記事

いつかPythonで実現したいと考えていたバックテスト。一つの手法を複数の銘柄で分散投資するとどうなるのか。筆者のテスト記録も兼ねています。

  • 2006年当時有効だった手法は健在か
  • 書籍に掲載されている手法を突き止める
  • 相関を元にしたポジションの制限は有効か
  • 増し玉は有効か

このあたりをテーマにテストしています。

題材は書籍「タートル流 投資の魔術」

元となる手法は、書籍「伝説のトレーダー集団 タートルズ流投資の魔術」に掲載されていたものです。

 この章で述べるテストは、市場の一般的ボートフォリオと一般的資金管理アルゴリズムを用い、システムのルールが変わることによる影響がテスト結果の差異にあらわれることを検証している。以下はそのテストに使われた変数だ。

 ● 市場

 (中略)

 ● 資金管理

 ここで使う資金管理アルゴリズムはタートルたちが使用したのと同じだが、攻撃性を半分にした数値を用いてある。1-ATRを取引資本の1パーセントとするかわりに0.5パーセントとしたので、テスト向けの枚数を出すために、資金の0.5パーセントを、特定の取引に注文が出される時点でドル換算した市場のATRで割った。

引用元: 伝説のトレーダー集団 タートルズ流投資の魔術(P.164)

情報が不十分でわからない点が多いですが、以下のような夢のある検証結果が掲載されています。

1ATR CBO2ボリンジャーCBO3ドンチアン・トレンド
4時限付ドンチアン5ダブル移動平均6トリプル移動平均
CAGRMARレシオシャープレシオ取引数勝率最大DDDD期間
145.9%1.151.2721643.140.0%8.3ヶ月
249.2%1.441.4713653.734.1%7.8ヶ月
327.4%0.750.94190138.738.7%27.6ヶ月
457.1%1.311.3477359.143.6%12.1ヶ月
549.1%1.041.3422236.947.2%8.3ヶ月
641.2%0.971.2118641.942.3%8.5ヶ月

引用元: 伝説のトレーダー集団 タートルズ流投資の魔術(P.177)

今回は、以前行ったバックテストを発展させます。以前は、

  • 異なる銘柄
  • 異なる期間
  • 単一銘柄ごと

の、バックテストでしたが、

  • 同じ銘柄
  • 同じ期間~現在まで
  • 全銘柄での分散投資

で、行います。

このバックテストで確かめること

このバックテストでは、以下を確かめていきます。

  • 2006年当時有効だった手法は健在か
  • 書籍に掲載されている手法を突き止める
  • 相関を元にしたポジションの制限は有効か
  • 増し玉は有効か

2006年当時有効だった手法は健在か

書籍の発売当時、それまでの10年間(1996年1月~2006年11月の検証)で有効とされていた6つの手法です。これらが現在でも健在なのかを確かめます。

書籍に掲載されている手法を突き止める

書籍には、このテストについてあまり細かく掲載されていません。同じと思われるバックテストを行い、テスト結果の再現を目指します。

取引量の制限は有効か

タートルズの手法に〝取引量の制限〟があります。単一銘柄は4%のリスク、全体で24%、買いおよび売りは12%ずつ、強い相関のものは6%、中程度の相関は10%といった具合です。強い相関の銘柄全体で6%のリスクをとっているときに、同じく強い相関の銘柄でシグナルが点灯してもエントリーしないということです。

このロジックが有効かを確認します。

ピラミッティングは有効か

同じくタートルズの手法に〝ピラミッティング〟があります。増し玉のことです。6つの手法について、ピラミッティングの有無で検証し、成績の変化を確かめます。

テスト方法

Pythonで自作したプログラムで検証しています。

github

銘柄と価格データ

書籍に掲載されていた銘柄でテストします。価格データはStooqというサイトから借りました。銘柄名の右に掲載しているのがStooqの銘柄コードです。

為替穀物
日本円j6.fとうもろこしzc.f
ユーロe6.f大豆zs.f
英ポンドb6.f小麦zw.f
スイスフランs6.f砂糖sb.f
カナダドルd6.f綿ct.f
豪ドルa6.fココアcc.f
メキシコペソm6.fコーヒーkc.f
貴金属畜産
gc.f飼養牛gf.f
si.fle.f
hg.flh.f
燃料金利
WTI原油cl.fユーロドル金利先物ge.f
灯油 ULSDho.f財務省中期債権zf.f
無鉛ガソリンrb.f同長期債権zn.f
天然ガスng.f

手法

6つのロジックの詳細は、以前の記事でご確認ください。以下に、それぞれの記事へのリンクを掲載しておきます。

注意点

自分の自動売買を作成するためのテストなので、かなり万全を期していますが、いくつかの注意点があります。以下の点から、検証結果の検討には細心の注意を払う必要があります。

  • 先物取引のつなぎ足であること
  • 手数料が考慮されていないこと

先物取引のつなぎ足である

Stooqの.fがつくコードは、期近のつなぎ足です。以下の図を見るのが分かりやすいと思います。価格をつなぐタイミングで価格差が生じていることが見てとれると思いますが、今回のテストでは、この点が考慮されていません。

手数料が考慮されていない

また、今回のテストでは、手数料を一切考慮していません。長期のロジックにおいて手数料の影響はあまり大きくありませんが、注意は必要です。

ロジック毎に4通りのテスト

それぞれのロジック毎に、以下の項目の組み合わせで4通りのテストを行いました。これをもって、「のバックテストで確かめること」について確認していきます。

項目意味
増し玉なし初回エントリーのみで、増し玉をしない
増し玉あり1-ATR上昇する毎に、3回まで増し玉する
制限なしすべてのシグナルでエントリーする
制限あり相関等でエントリーの制限を行う

全体のテスト結果

いずれも100万円の元金でテストしています。黄色の網掛けのものが良い成績のものです。破産したものも多いですが、最大14倍の利益が出ています。

増し玉制限取引数勝率RR比累計損益
ATR_CBOなしなし112726.97%2.61-585,939
なしあり87724.29%3.15164,581
ありなし129040.47%1.34-1,002,102
ありあり103224.52%0.99-992,810
BB_CBOなしなし38638.08%2.0714,158,028
なしあり34135.78%2.093,337,570
ありなし4420.45%0.46-1,108,640
ありあり49635.28%1.62-756,803
DCBOなしなし420834.15%2.033,532,109
なしあり322334.28%2.062,414,742
ありなし1055235.89%1.865,497,060
ありあり497834.33%21,609,066
Timed_DCBOなしなし184849.13%1.01-688,259
なしあり143947.05%1.03-915,276
ありなし114654.01%0.82-6,801,541
ありあり195949.06%0.91-940,755
DoubleEMAなしなし63233.86%1.96125,315
なしあり2445.83%0.79-1,009,666
ありなし59243.92%1.24-1,549,954
ありあり2548.00%0.82-1,001,375
TripleEMAなしなし27038.52%1.48-1,019,006
なしあり40631.77%2.09-282,606
ありなし82450.36%0.98-3,090,293
ありあり51533.20%1.96-736,636

書籍と同じ項目で集計

書籍のような良い成績には、まったくなりませんでした。残念。

  • つなぎ足だからか
  • 市場環境の変化があったのか
  • 他の問題があるのか

原因は定かではありませんが、すべての項目において劣後しています。

良いロジックでも最大で年利が11%なので、米国株のインデックス投資より少し良い程度の成績です。正直、あまり妙味はありません。

再現できたのかについては、後述したいと思います。

増し玉制限CAGRMARレシオ取引数勝率RR比最大DD最大DD期間
ATR_CBOなしなし-3.47%-0.037112726.97%2.61293.96%156ヶ月
なしあり0.61%0.00887724.29%3.14681.01%156ヶ月
ありなし------129040.47%1.338100.92%31ヶ月
ありあり-17.91%-0.18103224.52%0.98699.79%300ヶ月
BB_CBOなしなし11.49%0.16138638.08%2.07171.21%93ヶ月
なしあり6.04%0.09234135.78%2.08865.75%92ヶ月
ありなし-110.86%-0.9534420.45%0.463116.31%2ヶ月
ありあり-5.72%-0.06449635.28%1.61989.97%144ヶ月
DCBOなしなし6.23%0.089420834.15%2.02570.27%118ヶ月
なしあり5.04%0.083322334.28%2.05960.32%118ヶ月
ありなし7.46%0.0771055235.89%1.85796.73%156ヶ月
ありあり3.91%0.054497834.33%2.00472.78%104ヶ月
Timed_DCBOなしなし-4.56%-0.047184849.13%1.0197.87%156ヶ月
なしあり-9.40%-0.098143947.05%1.02796.41%156ヶ月
ありなし------114654.01%0.819150.32%16ヶ月
ありあり-10.69%-0.109195949.06%0.91198.03%245ヶ月
DoubleEMAなしなし0.47%0.00563233.86%1.95588.07%90ヶ月
なしあり------2445.83%0.789136.29%46ヶ月
ありなし------59243.92%1.24107.69%25ヶ月
ありあり------2548.00%0.818168.80%56ヶ月
TripleEMAなしなし------27038.52%1.479109.69%36ヶ月
なしあり-1.32%-0.01540631.77%2.08689.17%92ヶ月
ありなし------82450.36%0.979107.60%18ヶ月
ありあり-5.20%-0.05251533.20%1.9699.33%118ヶ月

個別のテスト結果

掲載しているグラフは、クリックすると大きな画像で確認できます。

成績については、「金額ベース」「リスク比」の数値を掲載しています。金額ベースは複利運用の数値で、リスク比は単利運用の数値に近いものです。

ATR CBO

増し玉制限取引数勝率RR比率累計損益期待値損益の標準偏差
金額ベースなしなし112726.97%2.61-585,939
なしあり87724.29%3.15164,581
ありなし129040.47%1.34-1,002,102
ありあり103224.52%0.99-992,810
リスク比なしなし112726.97%2.87178.8950.15610.2
なしあり87724.29%3.54322.8030.36413.663
ありなし129040.47%1.4828.1110.0096.587
ありあり103224.52%2.63-497.756-0.48710.815

増し玉なし、制限なし

ATR CBO  2021 03 05  1996 2020  Value  load1 turtle False  Detail ATR CBO  2021 03 05  1996 2020  Value  load1 turtle False  Gold

増し玉なし、制限あり

ATR CBO  2021 03 05  1996 2020  Value  load1 turtle True  Detail ATR CBO  2021 03 05  1996 2020  Value  load1 turtle True  Gold

増し玉あり、制限なし

ATR CBO  2021 03 05  1996 2020  Value  load4 turtle False  Detail ATR CBO  2021 03 05  1996 2020  Value  load4 turtle False  Gold

増し玉あり、制限あり

ATR CBO  2021 03 05  1996 2020  Value  load4 turtle True  Detail ATR CBO  2021 03 05  1996 2020  Value  load4 turtle True  Gold

ボリンジャーCBO

増し玉制限取引数勝率RR比率累計損益期待値損益の標準偏差
金額ベースなしなし38638.08%2.0714,158,028
なしあり34135.78%2.093,337,570
ありなし4420.45%0.46-1,108,640
ありあり49635.28%1.62-756,803
リスク比なしなし38638.08%2.91157.3712.98229.638
なしあり34135.78%2.66648.1641.88317.195
ありなし4420.45%0.42-202.577-4.6044.914
ありあり49635.28%2.36606.7681.22315.987

増し玉なし、制限なし

BB CBO  2021 03 05  1996 2020  Value  load1 turtle False  Detail BB CBO  2021 03 05  1996 2020  Value  load1 turtle False  Gold

増し玉なし、制限あり

BB CBO  2021 03 05  1996 2020  Value  load1 turtle True  Detail BB CBO  2021 03 05  1996 2020  Value  load1 turtle True  Gold

増し玉あり、制限なし

BB CBO  2021 03 05  1996 2020  Value  load4 turtle False  Detail BB CBO  2021 03 05  1996 2020  Value  load4 turtle False  Gold

増し玉あり、制限あり

BB CBO  2021 03 05  1996 2020  Value  load4 turtle True  Detail BB CBO  2021 03 05  1996 2020  Value  load4 turtle True  Gold

ドンチアン・トレンド

増し玉制限取引数勝率RR比率累計損益期待値損益の標準偏差
金額ベースなしなし420834.15%2.033,532,109
なしあり322334.28%2.062,414,742
ありなし1055235.89%1.865,497,060
ありあり497834.33%21,609,066
リスク比なしなし420834.15%2.16572.4280.1284.263
なしあり322334.28%2.15437.6830.1314.309
ありなし1055235.89%2.152210.3390.1994.506
ありあり497834.33%2.24898.4970.1695.287

増し玉なし、制限なし

DCBO  2021 03 05  1996 2020  Value  load1 turtle False  Detail DCBO  2021 03 05  1996 2020  Value  load1 turtle False  Gold

増し玉なし、制限あり

DCBO  2021 03 05  1996 2020  Value  load1 turtle True  Detail DCBO  2021 03 05  1996 2020  Value  load1 turtle True  Gold

増し玉あり、制限なし

DCBO  2021 03 05  1996 2020  Value  load4 turtle False  Detail DCBO  2021 03 05  1996 2020  Value  load4 turtle False  Gold

増し玉あり、制限あり

DCBO  2021 03 05  1996 2020  Value  load4 turtle True  Detail DCBO  2021 03 05  1996 2020  Value  load4 turtle True  Gold

時限付ドンチアン

増し玉制限取引数勝率RR比率累計損益期待値損益の標準偏差
金額ベースなしなし184849.13%1.01-688,259
なしあり143947.05%1.03-915,276
ありなし114654.01%0.82-6,801,541
ありあり195949.06%0.91-940,755
リスク比なしなし184849.13%1.13477.9230.2388.046
なしあり143947.05%1.08-164.059-0.1388.29
ありなし114654.01%1.06737.8830.6348.324
ありあり195949.06%1.0461.8510.0127.958

増し玉なし、制限なし

Timed DCBO  2021 03 05  1996 2020  Value  load1 turtle False  Detail Timed DCBO  2021 03 05  1996 2020  Value  load1 turtle False  Gold

増し玉なし、制限あり

Timed DCBO  2021 03 05  1996 2020  Value  load1 turtle True  Detail Timed DCBO  2021 03 05  1996 2020  Value  load1 turtle True  Gold

増し玉あり、制限なし

Timed DCBO  2021 03 05  1996 2020  Value  load4 turtle False  Detail Timed DCBO  2021 03 05  1996 2020  Value  load4 turtle False  Gold

増し玉あり、制限あり

Timed DCBO  2021 03 05  1996 2020  Value  load4 turtle True  Detail Timed DCBO  2021 03 05  1996 2020  Value  load4 turtle True  Gold

ダブル移動平均

増し玉制限取引数勝率RR比率累計損益期待値損益の標準偏差
金額ベースなしなし63233.86%1.96125,315
なしあり2445.83%0.79-1,009,666
ありなし59243.92%1.24-1,549,954
ありあり2548.00%0.82-1,001,375
リスク比なしなし63233.86%2.28383.7750.5911.665
なしあり2445.83%0.63-277.38-11.55862.464
ありなし59243.92%1.9900.0251.50210.635
ありあり2548.00%0.76-264.449-10.57887.096

増し玉なし、制限なし

DoubleEMA  2021 03 05  1996 2020  Value  load1 turtle False  Detail DoubleEMA  2021 03 05  1996 2020  Value  load1 turtle False  Gold

増し玉なし、制限あり

DoubleEMA  2021 03 05  1996 2020  Value  load1 turtle True  Detail DoubleEMA  2021 03 05  1996 2020  Value  load1 turtle True  Gold

増し玉あり、制限なし

DoubleEMA  2021 03 05  1996 2020  Value  load4 turtle False  Detail DoubleEMA  2021 03 05  1996 2020  Value  load4 turtle False  Gold

増し玉あり、制限あり

DoubleEMA  2021 03 05  1996 2020  Value  load4 turtle True  Detail DoubleEMA  2021 03 05  1996 2020  Value  load4 turtle True  Gold

トリプル移動平均

増し玉制限取引数勝率RR比率累計損益期待値損益の標準偏差
金額ベースなしなし27038.52%1.48-1,019,006
なしあり40631.77%2.09-282,606
ありなし82450.36%0.98-3,090,293
ありあり51533.20%1.96-736,636
リスク比なしなし27038.52%2.46508.5931.86318.445
なしあり40631.77%2.43211.7040.49516.075
ありなし82450.36%1.832032.2092.45911.914
ありあり51533.20%2.39438.3740.81320.018

増し玉なし、制限なし

TripleEMA  2021 03 05  1996 2020  Value  load1 turtle False  Detail TripleEMA  2021 03 05  1996 2020  Value  load1 turtle False  Gold

増し玉なし、制限あり

TripleEMA  2021 03 05  1996 2020  Value  load1 turtle True  Detail TripleEMA  2021 03 05  1996 2020  Value  load1 turtle True  Gold

増し玉あり、制限なし

TripleEMA  2021 03 05  1996 2020  Value  load4 turtle False  Detail TripleEMA  2021 03 05  1996 2020  Value  load4 turtle False  Gold

増し玉あり、制限あり

TripleEMA  2021 03 05  1996 2020  Value  load4 turtle True  Detail TripleEMA  2021 03 05  1996 2020  Value  load4 turtle True  Gold

考察

今回のテストを経た、筆者の考えをまとめます。

手法の再現はできたのか

あまりにも悪い結果ですが、そもそも手法の再現はできていたのでしょうか。書籍と同じ期間でテストして確認してみます。

増し玉制限CAGRMARレシオ取引数勝率RR比最大DD最大DD期間
ATR_CBOなしなし3.92%0.05952227.97%2.77865.92%60ヶ月
BB_CBOなしなし11.04%0.15516336.81%2.8871.21%93ヶ月
DCBOなしなし9.64%0.196181734.40%2.16549.09%59ヶ月
Timed_DCBOなしなし7.89%0.08380851.36%1.01394.81%78ヶ月
DoubleEMAなしなし7.88%0.14726535.09%2.11553.73%33ヶ月
TripleEMAなしなし14.03%0.24623240.95%1.96257.00%36ヶ月
  • 書籍ほどの良い結果ではない
  • 2006年までは、すべての手法が比較的好調であった
  • BB CBOはそのままで2020年まで有効
  • DCBOはそのままでも利益、増し玉するとなお良し

残念ですが、テスト結果はかなり劣後しています。

もっとも再現できたのは取引回数で、非常によく似ています。しかし、これしかないデータ数で、こんなにも取引回数が異なることは少し考えづらいかなとも思います。

結果の精査も行いましたが、おかしな点は見つけられていません。現時点で想定している原因は〝つなぎ足であること〟です。今回のテストがつなぎ足でシグナルを算出しているのに対して、各限月毎の価格で算出した仮定すると取引回数が異なることも大いにあり得ます。また、燃料系や穀物、農産物においては、限月毎に値動きが異なるケースもよくあります。

これらは価格データが入手できればコードを少し書き換えるだけでテストできますが、データの入手にコストが掛かりそうです。ちょっとこれ以上の再現は難しいかなと感じています。

書籍に掲載されている手法を突き止める

テスト結果は再現できていないですが、損益グラフの推移から次のように推測しています。

  1. 増し玉はなし
  2. 制限もなし
  3. ユニットの算出はAccount Value

「1」「2」は損益の推移が根拠です。増し玉なし、制限なしのものが、すべて2006年まで好調でした。

「3」は、DoubleEMAやTripleEMAの現金資産の推移が根拠です。Account Valueは未決済の損益を含む口座の価値ですが、利益確定に数年掛かる手法において、現金資産は減る一方です。Account Valueでユニットを算出しないと合理的でないと判断しました。

取引量の制限は有効か

今回のテストを経て、取引回数の制限は 有効ではない と感じています。いずれも、取引回数の制限がない方が良い成績だったからです。特に、長期の手法において、その傾向は顕著でした。

「期待値」を見てみると、以下のような結果でした。

  • 長期の手法において、制限ありはすべて悪い結果に
  • それ以外は、良かったり悪かったり

シグナルのフィルタリングは因果のはっきりした変数で行うべきだと、あらためて感じさせられました。

ピラミッティングは有効か

これは、手法による というのが筆者の見解です。

テスト結果を確認すると、次のような結果でした。

  • 長期の手法において、増し玉ありはすべて悪い結果に
  • DCBOだけは、増し玉ありが有効

DCBOは、ロスカットが早い手法でした。それ以外の手法は、値動きによって損失が大きく膨らむ手法です。この違いによって生じる差だと考えています。

TradingView版では良い結果だったが

TradingView版の記事では、すべての手法がその後の10年でもプラスでした。これは、銘柄による違いだと思います。

米国株や株価指数など、比較的トレンドが発生していた銘柄が含まれています。この影響が大きかったのではないかと考えています。

前回のテストでも「期待値」という項目がありましたが、算出方法が違うので正確な比較はできません。ただ、前回のテストでもBB CBOが良い結果だったことが少し印象的です。

テスト結果のCSVを公開

Googleドライブに、今回行ったテスト結果を公開しています。ファイル名がテスト内容を表しています。

テスト毎の、

  • 損益グラフ(jpg)
  • 売買履歴(csv)
  • 残高の推移(csv)
  • ログ(csv)

や、まとめのcsvがあります。

※ もし、変な点があったら、DM等でこっそり教えてください

まとめ

採用するとしたらBB CBOですが、前述の通り、正直あまり妙味がありません。

自動売買を作るにも監視してトレードするにしても工数がそこそこ掛かります。自動売買なんて、メンテナンスを考えるとまったく割に合いません。結果に大きな差がないなら、自動積立を設定してインデックス投資をしていた方が良いと思います。

勉強にはなりましたが、別の手法を探す方が良さそうです。

試してみたいことはたくさんあるので、引き続き、検証とトライアンドエラーを重ねていきます。

あとは、書籍の手法も、結局のところ〝過剰最適化〟されていたと言えるかもしれません。長期にわたって再現できるロジックには、やはり〝因果〟が大事ですね。少なくとも、ポートフォリオIN/OUTの変数は相関係数ではなさそうということですね。

yuya takahashi

タカハシ / 11年目の兼業投資家

投資やプログラミング、動画コンテンツの撮影・制作・編集などが得意。更新のお知らせは、LINE、メールで行っています。

このブログと筆者についてご質問はこちら

  • 記事をシェア
© Investment Tech Hack 2023.