クオンツ投資研究 日米業種リードラグ戦略を実装してみました

********

※LINE対応チャットボット版の
「LINEチャットボット屋」
いろんなチャットボットがあります。
ぜひ、ご覧ください!

***************

***************

下記の論文に興味があったので、pythonコードに落とし込んでみました。
「部分空間正則化付き主成分分析を用いた日米業種リードラグ投資戦略」

私自身は投資はしないのですが、クオンツ投資・分析は若い頃から興味があり、いろいろ実装していました。

昨今のLLMの精度が高まったこともあり、さらにクオンツ分析がしやすくなったので重宝しています。

今回はひょんなことから、上記の論文を知ったので、コードに落としての実験を試みた次第です。

論文のポイント PCA_SUBとは何か

今回試したのは、米国市場の業種別の動きが、日本市場の翌営業日にどのように波及するかを利用する投資戦略です。

ベースにしたのは、「部分空間正則化付きPCA」を使った日米業種リードラグ投資戦略の論文です。

題名はお固いのですが、要は米国で勝った業種銘柄は日本でも勝つかもねっていう理論です。

この手法の中核にあるのがPCA_SUBです。
PCAは主成分分析のことで、多数の業種の値動きの中から共通する大きな流れを取り出す方法です。

ただ、通常のPCAはその時々のデータに引っ張られやすく、相場環境によっては不安定になりやすいという弱点があります。

そこでこの論文では、単なるPCAではなく、あらかじめ意味のある構造を少し与えたうえでPCAを行うという工夫を入れています。

これが「部分空間正則化付きPCA」です。
具体的には、グローバル要因、米国と日本のスプレッド要因、シクリカル業種とディフェンシブ業種の差といった方向を事前に与え、それに寄せながら主成分を推定していきます。

この考え方により、単なるノイズではなく、相場全体に共通する構造を安定的に取り出しやすくなります。
論文でも、通常のPCAや単純モメンタムと比べて、PCA_SUBのほうが高い成績を示していました。

なぜ米国市場の終値が日本市場の翌日に効くのか

この戦略の面白いところは、市場の時間差を利用している点です。

米国市場は日本市場より後に閉まります。
つまり、日本の投資家は朝の時点で、前夜の米国市場で起きた業種別の動きを確認できます。

その情報が、日本市場の寄り付きから引けまでの間に反映されるのではないか、というのが基本的な発想です。

今回の戦略では、米国業種ETFの当日Close-to-Closeリターンを入力として使い、日本業種ETFの翌営業日のOpen-to-Closeリターンを予測します。

言い換えると、前夜の米国業種の強弱を見て、翌日の日本業種の日中の動きを取りにいくという設計です。

この構造はかなり実践的です。
なぜなら、米国の終値は日本の朝にはすでに確定しているからです。

朝の段階で「今日どの業種を強気で見るか、どの業種を弱気で見るか」を決められるため、当日の日中戦略として運用しやすいです。

再現コードの工夫  朝候補と夕方収支を分ける

論文のロジックをColabで再現するにあたって、特に工夫したのは朝に候補を出す処理と、引け後に収支を確認する処理を分けたことです。

朝のセルでは、前営業日までの確定データを使って、その日のロング候補とショート候補を出します。

ここで表示されるのは、たとえば「エネルギー資源」「商社・卸売」「電機・精密」などの強い業種と、「小売」「食品」「医薬品」などの弱い業種です。

一方で、収支の確認は引け後でないと正確にできません。
なぜなら、この戦略は寄り付きで入って引けで決済するため、引値が確定していない昼間に回すと、途中の価格で損益を見てしまうからです。

そこで、収支確認用のセルは別に用意し、引け後にその日の寄値・引値を使って損益を計算するようにしました。

これによって、朝は候補確認、夕方は結果確認という流れが明確になり、運用しやすくなりました。

実運用で見えた課題. セッション切れと候補保存

実際に回してみてわかったのは、Colab特有の問題としてセッション切れがあることです。

朝に候補を出しても、夕方にもう一度Colabを開くとセッションが切れていて、変数が消えていることがあります。

この状態で本体セルをもう一度回すと、朝の候補ではなく、その時点の再計算候補で上書きされる可能性があります。

これを防ぐために、朝候補をCSVとしてGoogle Driveに保存するようにしました。
朝に出たロング候補・ショート候補・全順位をCSV保存しておけば、夕方はそのCSVを読み込むだけで、朝の候補を固定したまま収支計算ができます。

この仕組みによって、「朝に出した候補」と「夕方に確認する収支結果」をきちんと一致させられるようになりました。

理屈の再現だけでなく、実際に日々の運用で使いやすい形に近づいたと思います。

※ちなみに今回作ったコードはGPUを使わないCPUで処理できるため、通常のマイPCで実行可能です。
なので、Pythonの実行環境さえあれば、こういったコラボ特有の処理は不要になります。

今回の検証で見えた実用性と今後の改善点

今回の検証では、PCA_SUBは単純モメンタムや通常のPCAよりも良い結果を出しました。

特に、リスク対比の効率やドローダウンの面で優位性が見えたのは大きかったです。

また、日によっては、景気敏感業種を上位に、ディフェンシブ業種を下位に出すなど、相場の流れとかなり整合的な候補が出ることもありました。

この点からも、PCA_SUBは単なる理論上のモデルではなく、実際の市場の強弱をある程度うまく捉えているように感じました。

ただし課題もあります。
まず、ショート側は実際の証券会社で売建可能かどうかという制約があります。
理論上はロングショートで成り立つ戦略でも、現実には毎日完全に同じ形で執行できるとは限りません。

さらに、データ更新タイミングや、当日データの未確定問題もあります。
そのため、朝候補の保存と引け後の確定収支確認をきちんと分ける運用が重要になります。

今後の改善点としては、地政学リスクのような仕組みを入れることが考えられます。

今回の再現を通じて感じたのは、論文のアイデアそのものが面白いだけでなく、そこから実務で使えるワークフローに落とし込む過程にもかなり意味があるということでした。

朝に候補を確認し、夕方に結果を振り返る。この流れを整えることで、研究と実践の距離がぐっと縮まったように思います。

 

実際に直近で仮想運用してみての勝敗

今回実際に直近での仮想運用してみての勝敗ですが、図にあるように思ったようには勝てないです。
(ここでの仮想運用とは、実際に現金で投資せず、もし1日10万円を仮に投資した想定の場合、どれほどのリターンがあるかを算出したものです)

過去のデータでは、2025年までの一年間ごとの勝敗は20%以上のリターンがあります。

しかし、今年2026年の1月から3月までのデータでは毎月損失のが多いです。

直近の勝敗の図でも結構負けてます。

この戦略は多くの人が実行すると、寄り付きの際にはすでに価格の中に織り込まれるとのことです。

過去は勝てたけど、時すでに遅しなのか。
今後も引き続き仮想運用してみます。

結果はまた記事に載せますので、お楽しみにしてください。

 

コードの公開について

もともと研究用途で実装したので、コード公開してもいいのですが、私が実装したものが銘柄が出るやつで、これだと、なんでも株式相場の助言なんちゃらにひっかかる可能性が0ではないらしいので、やめておきます。
銘柄出ない版なら公開可らしいのですが、コード修正が面倒でやめておきます。
(グレーゾーンは行かない主義ですので、あしからずです)

****************

最近のデジタルアート作品を掲載!

X 旧ツイッターもやってます。
https://x.com/ison1232

インスタグラムはこちら
https://www.instagram.com/nanahati555/

**************

Follow me!

PAGE TOP