J-CAST ニュース ビジネス & メディアウォッチ
閉じる

【投資の着眼点】検証! システムトレードも可能な「タートルズ」の恐るべきトレード戦略

   1980年代の米国で、二人の大物投資家がある賭けをした。

   一人は「投資は天性の才能が必要で、誰かに教えることはできない」と主張した。

   もう一人は「投資家になりたいと思う誰かに投資を教えて、投資家を育てることは可能だ」と信じていた。

   どちらが正しいか実証するため、全米から総勢20人の投資家の卵を集め、実際に二人が投資教育を授けた。これが「タートルズ」と呼ばれる計画だ。

  • タートル・システムでソフトバンク株を運用したら、なんと……(画像は、ソフトバンクグループのホームページ)
    タートル・システムでソフトバンク株を運用したら、なんと……(画像は、ソフトバンクグループのホームページ)
  • タートル・システムでソフトバンク株を運用したら、なんと……(画像は、ソフトバンクグループのホームページ)

タートル・システムはさまざまな市場で利益を上げている

   タートルズの戦略は「システム化された投資手法」である。取引のルールが明確で、勘に頼る必要がなく、誰が見ても同じタイミングでエントリーして、決済する。

   「タートル流投資」は過去のチャートを用いた検証が容易であるため、取引しようと思う金融商品の過去の運用成績を手軽に確認することができるのも特徴だ。

   1983年当時、タートルズと呼ばれていた訓練生は、手計算でエントリー価格や損切り価格、注文数量を算出し、注文は電話で行っていた。

   しかし、パソコン(PC)やインターネット環境が発達した現代では、個人でも数量計算をすべてPCで行い、注文はオンラインで済ませることができる。プログラミングの知識がある人であれば、自動売買システムを構築することができるかもしれない。

   1980年代に開発されたタートルズの戦略は現代においても、トレンドフォローの有効性が顕著な外国為替証拠金取引(FX)や商品先物市場、国債市場などの市場で利益を上げている、とされる。

   では、「タートル流投資」は、株式の買いでも利益を上げることはできるのだろうか?

タートル・システムは株式市場でも有効か?

   今回は、トヨタ自動車(7203)とソフトバンクグループ(9984)、日本電信電話(9432)、NTTドコモ(9437)、キーエンス(6861)の日本を代表する5つの会社の株式で、過去にタートル・システムにしたがって取引していれば、どの程度の利益を上げることができたか、検証した。

ソフトバンクグループの上場から現在までの過去の検証結果(概略)
ソフトバンクグループの上場から現在までの過去の検証結果(概略)

   すると、タートル・システムを使った過去のトレード結果は、驚くべきものだった。

   上記の5社について、NTTドコモを除く4社で利益を上げていた。初期資金を1000万円とした場合、トヨタは716万円、ソフトバンクグループは2626万円、日本電信電話は28万円、キーエンスは464万円の儲けだった。

   さらに、ソフトバンクグループに至っては、総利益額を総損失額で割ったプロフィット・ファクターと呼ばれる指標がなんと、8.34倍もあった。一般に、プロフィット・ファクターが2倍を超えている場合、手法に顕著な優位性(エッジ)があるとされる。

   ちなみにNTTドコモの結果は、285万円の損失だった。

   詳しく知りたい人は、「伝説のトレーダー集団 タートルズの全貌」(FPO刊)を読んでほしい。(ブラックスワン)


なお検証は、マネックス証券のトレードステーション口座のプログラミング言語(EasyLanguage)で行った。

【詳細条件】
※オリジナルの取引ルールでは55日高値更新と20日安値更新を新規エントリーと決済のシグナルとしていたが、今回は11週高値更新と4週安値更新で代用。
※オリジナルの取引ルールはATR(20日)の2倍をストップ幅に設定していたが、今回は週足で取引するためATR(4週)で代用。
※簡略化のため、増し玉(ピラミッディング)の設定は行わなかった。
※インサイドバー・テストは日足単位で実行した。
※テスト期間は1991年1月4日(上場が1991年以降の銘柄は上場日)から2019年5月24日まで。

   使用したEasyLanguageのコードを紹介する。

//#LE Turtle Trading System
variables : ATR(0) ;
ATR = AvgTrueRange(4) ;
Inputs : risk(0.02), deposit(100000000) ;

value1 = Highest(High, 11)[0] ;
value2 = Lowest(Low, 4)[0] ;
value3 = deposit * risk / ATR ;

Buy value3 shares next bar value1 stop ;
SetStopLoss(risk * deposit) ;
Sell next bar value2 stop ;