11
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python×株式投資:この戦略、実は失敗してた─現モデルの落とし穴と改善計画

Last updated at Posted at 2025-05-30

現銘柄スクリーニングモデルの改善計画

Screenshot 2025-05-30 at 22.23.58.png

はじめに

 前回の記事では、財務スクリーニングを通過した東証プライム銘柄に対し、Python でテクニカル指標を組み合わせたスクリーニングを実施し、バックテストで有効性を検証しました。その結果――特に 地合いスコアがマイナス の局面では、月利数%のリターンを期待できる条件がいくつか見つかりました。

しかしながら、課題も浮き彫りになってきています。
• 地合いが 良いほど リターンがブレやすい
• 地合いが 悪すぎると(例:昨年 8 月の急落)銘柄が 1 つも選ばれない
• 移動平均・RSI だけでは精度に懸念がある
• 高速かつ網羅的なバックテストができず、統計的優位性が弱い
• 工程ごとに Google Colab を手動操作する “半自動” 運用が煩雑

 rS_alonewolf らの研究によると、人は大きな課題に直面すると、まず 机を片付けて記事を書くことが示されています(サンプル数1)。環境整備も大切ですが、モデルの精度を早急に高めなければ資金目標は遠のき、D進が 30 代に突入しかねません。家族から「まだ夢を追うの?家庭は作らないの?孫はまだか?」と詰められる未来だけは回避したいところです。最近、会社の研究 (化学・分析)が面白いので、このままでは、不幸なことに、会社に染まってしまう可能性もあります。

 そこで本稿では、現行スクリーニングモデルの問題点を整理し、改善プランを具体化します。成功談ではなく “途中経過” の報告ですが、同じように自動スクリーニングに挑む方のヒントになれば幸いです。


1. 地合いが良いときほど、リターンが安定しない

 本スクリーニングモデルは、相場が加熱し切った時にエントリーすると、十分なリターンが得られない可能性が高いです。特に地合いスコアが+3の日に、複数パターンで選抜された銘柄の1ヶ月後リターンを比較すると、平均リターンがマイナスから1%未満に留まる傾向があり、シャープレシオも0.3を下回るものが目立ちました。

image.png
Fig.1 現在のテクニカル選抜系のバックテストの結果(過去記事より引用)

 これは、地合いスコアの算出に使っているTOPIXが、東証プライム市場全体の値動きを元に構成されていることに関連していると推測されます。スコアが+3のように高い状態は、言い換えれば、TOPIX=プライム全体が、上昇トレンドの終盤に差し掛かっていることを意味します。そのような局面でプライム銘柄を対象にスクリーニングを行うと、すでに上がり切った銘柄が多く選ばれ、伸び代の少ない“賞味期限ギリギリ”の候補ばかりが並ぶ結果になります。

 例えるなら、これは会社に忠実すぎる社員が、会社の業績が悪化したときに一緒に沈んでいくようなものです。TOPIXと運命を共にする銘柄ばかりを拾っていると、相場がピークアウトすると、リターンも共倒れする─そのようなことが生じているのではないでしょうか。

 この問題を回避するためには、たとえば:
• 業種・セクター的にTOPIXと相関の弱いプライム内銘柄を選定対象にする
• あるいは、スタンダード市場やグロース市場にスクリーニング対象そのものを切り替える

といった方針が有効だと考えられます。
 
 その第一歩として、TOPIXと各銘柄の終値との相互情報量(MI)を算出し、TOPIXとの連動性が高い/低い銘柄群に分類した上で、地合いスコアが高い日にエントリーをした際に、リターン傾向に差が出るかを検証しています。

Screenshot 2025-05-30 at 21.37.33.png
Fig.2 TOPIX暴落局面における連動性別銘柄の値動き
各銘柄の24年7月初日から過去60日の終値とTOPIX連動ETF(1306)のMIを算出。最も高い2銘柄をTOPIX連動性高、低い2銘柄を連動性低の2群に分類。連動性が高いものは、地合スコアが高い時にエントリーすると、暴落に直面する。一方で低い銘柄を選ぶと、急落時の変動が小さい。したがって、地合スコアが高い時は、低連動銘柄を対象にする方がリスクを回避できると推測できる。


2. 地合いが悪すぎるとき、銘柄数がゼロになる

 今度はその裏側―市場が悲観一色となり 地合いスコアが深くマイナスへ沈む 場面ではどうでしょうか。バックテストを踏まえると、地合いスコアが悪い時に精度が良いはずなので、昨年8月の暴落時は絶好の買い場であり、本スクリーニングモデルが真価を発揮するタイミングだと考えられます。もしそこで銘柄をうまく選べていれば、月3%どころか、20%や30%のリターンも夢ではない。そんな期待を持ってバックテストを行いました。

しかし、選抜された銘柄数は─ゼロでした。なぜこのようなことが起きたのでしょうか。

image.png
Fig.3 24年8月急落時にバックテストを実施した結果
いずれの選抜パターンにも銘柄が選抜されない。この時の地合スコアは-3であったため、本来ならばリターンを得られる銘柄が選抜される想定だった。

 
 この事象の原因は、暴落直後の“反発初動”を本モデルが拾えていないことにあります。

 まず状況を把握するため、TOPIXの価格と移動平均線の動きを図示して確認したところ、暴落時には5日移動平均(MA5)が中長期線(MA25やMA75)に対して10%以上も下に乖離していました。

 本モデルでは、短期と中期の移動平均の乖離が小さい銘柄(クロス直前)を選抜する構造になっています。そのため、暴落直後のように短期線が大きく乖離している局面では、選抜条件を満たす銘柄が存在せず、銘柄数がゼロとなるのです。

 そして、移動平均の乖離が縮まり、ようやくゴールデンクロスが発生する頃には、すでに反発がかなり進行しているため、モデルが本来狙うべき“リターンの大きい初動”はすでに過ぎ去ってしまっていることになります。

 つまり、選抜条件が初動に対して間に合わず、反発に“遅れて反応する構造”になっていることが、今回の銘柄ゼロの背景にあると考えられます。

 急落後の反発を捉えるには、もっと早期の反転サインや、価格の下げ止まりを示唆する別のテクニカル指標の導入が必要だと考えられます。

Python 株式 投資 戦略.png
Fig. 4 24年8月急落時のTOPIX連動ETFの値動きと各テクニカル指標の挙動
暴落時は、MA5がMA25および75よりも400円程度下に位置している(10%以上)。この時に、発注できれば、2週間後には16%ほど価格が上昇するはずである。一方、ゴールデンクロス(GX)で発注をすると、数%しか価格は上昇しない。したがって、GXを基準とする方法は、暴落時からの回復局面では適切ではないと想定される。


3. 移動平均とRSIだけでは限界がある

 これまで示したとおり、移動平均と RSI は扱いやすい反面、これだけでは、買いシグナルの発生が遅れやすく、判断材料も単調です。また、現状では、これらが本当にリターンに寄与しているのかを十分に評価できていません。

 そこで、どのテクニカル指標の有効性が高いのかを把握するために、40〜60種類のテクニカル指標を用い、それぞれと2週・4週後のリターンとの関係を、相互情報量(MI)により定量的に分析しています。

 さらに、このような多次元のテクニカル指標をすべて判別式で処理しようとすると、コードが煩雑になり、保守性が著しく低下します。そこで、各銘柄の特徴量をPCA(主成分分析)で圧縮し、特徴空間上での位置関係から、過去に高リターンを出したクラスタ近傍にある銘柄を抽出する方法を検証中*です。

 株価とテクニカル指標の推移は非線形なので、本当にPCAの線形圧縮が適切だとは思いませんが、将来的には、Kernel PCAなどを使うことも視野に入れています。

Screenshot 2025-05-30 at 22.09.26.png
Fig.5 検討中のPCA空間を用いる多変量テクニカルスクリーニングの概要
参考情報:今後変更する可能性が高い。


4. データ取得と処理が遅く、検証量が不足している

 ここまでスクリーニング精度の課題を述べてきましたが、実行速度の制約も無視できません。

 現在のスクリーニングモデルでは、毎回 yfinance を用いて、選抜タイミングごとに全銘柄の株価データを取得しているため、1回あたりの処理に時間がかかります(200銘柄数十分)。結果として、十分な数のスクリーニング・バックテストが行えず、統計的優位性の検証が不十分なまま意思決定を下している状態になっています。戦略の信頼性を裏付けるための改善が必要です。

 そこで現在は、東証プライム銘柄すべて(1600程度)について、過去10年以上の OHLCV(始値・高値・安値・終値・出来高) データを .parquet 形式で保存し、ローカルまたはGoogle Drive上で一括管理するシステムを構築しています。これにより、毎回のダウンロード時間を削減し、検証回数を飛躍的に増やすことが可能になります。

 将来的には、ここに各種テクニカル指標・地合いスコア・財務情報などを統合した「検証用データベース」として活用し、スクリーニング精度だけでなく処理の効率性そのものも改善していく予定です。


5. Colab操作の煩雑さ

 これまで、スクリーニングのたびにGoogle Colabを開いて、手作業でセルを実行し、ファイルを読み込んで結果を保存する─「半分だけ自動」な運用になっていました。地合いスコアを毎日知りたいのに、毎回Colabを立ち上げるのは、面倒です。

 幸いなことに、学生時代に使っていた古いMacがいくつかあるので、これらに第二の人生を謳歌してもらう予定です。電源さえつながっていれば、毎朝決まった時間に自動でスクリプトを起動し、スクリーニングとバックテストの処理を行い、結果をGoogle Driveに保存する「自動実行マシン」が作れれば良いです。こちらは全く着手していないので、構想段階です。


おわりに

 まだ不完全な点は多くありますが、それぞれの問題に対して原因を丁寧に掘り下げていく中で、改善の見通しが立ち始めた課題もあります。

 現段階では「リターンを出した」と言える段階には至っておらず、あくまで「どうすればリターンに繋がるのか」を、過去のデータと仮説をもとに検証している途中です。そのため、現時点では実証的なデータを十分にご紹介することができていない点、あらためてお詫び申し上げます。

 しかし、無理に一足飛びで“正解”にたどり着こうとするのではなく、
ひとつひとつの前提や選定条件を問い直しながら、戦略全体を丁寧に育てていく─筆者はこの姿勢を大切にしたいと考えています。

 そしてもし、この姿勢に少しでも共感していただけたなら、
たとえ遠回りに見えたとしても、試行錯誤の中で育つ思考力や観察力が、
やがて皆様の確かな武器にもなると信じています。

 今後とも、どうぞよろしくお願いいたします。

 

Table 1 現スクリーニングモデルの課題と要因そしてその対策

問題 原因 現在の対応 今後の方向性
地合い良の精度低下 TOPIXとの連動性が高い銘柄を対象にしている 相互情報量でTOPIX連動度を評価 非連動銘柄や他市場への展開
地合い悪すぎでゼロ ゴールデンクロスが遅れる 反発初動を示す指標の検討 MA反転・BB・RCIなどの導入
指標が単純すぎる RSI・移動平均に依存 相互情報量で特徴量評価 PCAや非線形圧縮の検証
検証量が少ない yfinance都度取得が遅い データ保存方式の導入 検証DBの構築と自動化
操作が面倒 Colabを毎回手動実行 構想中(旧Macで自動化) 定時実行のローカル構築

参考文献

  1. めぐいち. (2022, August 8). 主成分分析を用いて日経平均株価を予測してみた. note.
    https://note.com/meguichi/n/n38899f8464de
  2. めぐいち. (2022, August 18). 主成分分析を生かしてみる。 note.
    https://note.com/meguichi/n/n24f4ba23718c
  3. Zakamulin, V. (2015). Market timing with moving averages: Anatomy and performance of trading rules (SSRN Working Paper No. 2585056). https://doi.org/10.2139/ssrn.2585056
  4. TrendSpider Learning Center. (n.d.). Overview of double exponential moving average (DEMA). 取得日 2025 年 5 月 30 日, https://trendspider.com/learning-center/overview-of-double-exponential-moving-average-dema/
  5. Holzer, A. S., & Visconto, W. (2022, July 30). Improving portfolio correlation & asset allocation with hedged equity (White paper). Easterly/EAB Risk Solutions. 取得日 2025 年 5 月 30 日, https://caia.org/sites/default/files/2022-07/improving-portfolio-correlation-asset-allocation-hedged-equity.pdf
  6. rS_alonewolf. (2025, May 22). Pythonで月利3%狙ってるけど、頭と机がごちゃごちゃだったので、まず現実から片付けた話. Qiita.
    https://qiita.com/rS_alonewolf/items/6dbb932d5deef9429a4d
  7. rS_alonewolf. (2025, May 16). Python×株式投資:月利3〜5%を狙う自動スクリーニング戦略. Qiita.
    https://qiita.com/rS_alonewolf/items/a8856f0cb28ae6a7da57

 
Table.2 文献に関して補足

コメント
1–2 PCA×株価予測のチュートリアル。主成分分析を使ったアプローチ例。
3 MA クロスはトレンド転換に遅延すると記載。GX 遅延問題の根拠。
4 DEMA は SMA/EMA よりラグを抑えるテクニカル指標。遅延解消の参考に。
5 VIX スパイク時、伝統的分散より Hedged Equity が相関低下・DD 縮小。地合い悪化時に低連動+ヘッジへ切替える方針を補強。
6–7 著者自身の過去記事。現行モデルの経緯を示す内部資料として参照。人類が危機を感じると、まず机を片付ける現象の根拠 。
11
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?