見出し画像

米国株4000銘柄を全部見ないことにした理由【スマホで周回!#13】

こんにちは、スマホ投資パパです。

第8回・第9回で、私のシステムの処理全体像をざっと紹介しました。今回からは、その一つひとつの処理を、設計の中身まで掘り下げていきます。

まずは、全体の一番最初の処理から。「毎朝、どの銘柄を見るのか」を決める工程です。

地味ですが、ここの設計を間違えると、後ろの処理が全部引きずられます。逆にここがきれいだと、あとの分析が驚くほど楽になります。
基礎工事のような工程です。


全部入れたい。でも、全部入れると遅い

最初に断っておくと、私は今でも「母集団は広いほうがいい」と思っています。これは変わりません。

強い銘柄を取りこぼさないためには、最初の網は大きいに越したことはない。テーマや業種で最初から絞ると、その外側で資金を集めはじめた銘柄を、最初から見逃します。だから入口は広く取りたい。

ところが、毎日システムを動かしていると、現実的な壁にぶつかります。

母集団が大きいほど、処理に時間がかかるということです。

私のシステムは、毎日の自動処理の中で外部から株価データを取得し、一銘柄ずつ計算していきます。対象が数千件あれば、その分だけ取得と計算が増え、処理時間が伸びます。クラウド上で自動実行している都合で、時間が伸びればコストも増えますが、私にとって一番きついのはコストよりも時間のほうです。

理由は、毎日のように改善サイクルを回しているからです。

処理を少し直す。動かす。結果を見て、また直す。この回転の速さが、システムを育てるうえで命です。ところが母集団が大きいと、一回動かすだけで時間を食う。確認のために回したいだけなのに、なかなか結果が返ってこない。サイクルが遅くなると、改善そのものが止まります。

だから決めました。

全部は見ない。見る価値が高いところに絞って、サイクルを速く回す。

ただし、選定の質は落としたくない。速くするために雑に絞るのではなく、強い銘柄をきちんと残したうえで、無駄なところを削る。この両立がこの工程のテーマです。


フィルタリングの設計思想


絞り方には、二つの方向があります。

一つは、最初から条件で範囲を狭めてから拾う。もう一つは、まず広く拾ってから、条件に合わないものを落とす。

私は後者を選びました。

まず広く拾う。そのあとで、条件に合わないものを落とす。

順番が逆だと、取りこぼしが増えます。「成長株だけ」「半導体だけ」と入口で決めてしまうと、その外側で動きはじめた銘柄は、計算の対象にすら入りません。そこに何がいたかは、永遠に分からないままです。

幸い、広く拾うこと自体は重くありません。上場銘柄のリストを一括で取ってくるだけです。重いのは、そのあとの一銘柄ずつの精査のほう。だから、精査に進む前の段階で、対象をできるだけ減らしておく。

整理すると、こういう順番になります。

1. まず米国の個別株を広く拾う
1. 明らかに対象外のものを掃除する
1. 段階的なフィルタで、精査に値する銘柄まで絞る

最初の掃除は単純です。投資対象ではないテスト的な銘柄、今回は個別株を見たいので別管理にするETF、米国株として不自然な記号の並び。これらを落とすだけです。高度な分析ではなく、後続の処理にゴミを渡さないための下ごしらえです。

ここから本番のフィルタが始まります。


フィルタ1:すぐ売れる銘柄を残す


最初のフィルタは、流動性です。

流動性というのは、ざっくり言えば「その銘柄が、どれだけ活発に売り買いされているか」です。毎日たくさん取引されている銘柄は流動性が高く、ほとんど取引されていない銘柄は流動性が低い、ということになります。

ここで私が見ているのは、単純な「何株売買されたか」ではありません。「いくら分、売買されたか」、つまり金額のほうです。

たとえば、1株50円の銘柄が10万株動いても、金額にすれば500万円です。一方、1株1万円の銘柄が同じ10万株動けば、10億円になります。同じ「10万株」でも、市場で動いているお金の規模はまるで違います。だから、株数ではなく金額で見ます。

そのうえで、日々の売買金額の平均が一定の水準を超えている銘柄だけを残します。

なぜ流動性にこだわるのか。理由は一つです。

取引が少ない銘柄は、売りたいときに買い手がいないからです。

株は、買う人がいて初めて売れます。普段から活発に取引されている銘柄なら、売りたいときにすぐ売れます。ところが、ほとんど取引されていない銘柄だと、いざ売ろうとしても相手が見つからず、安い値段でしか売れなかったり、最悪その日のうちに売れなかったりします。

どれだけ良さそうに見える銘柄でも、出口がなければ実際の運用では使えません。だから入口の段階で、ちゃんと売り買いできる銘柄だけに絞っておきます。


フィルタ2:市場と比べて強いか


流動性で土台を整えたら、次は株価の強さを見ます。

シンプルな話で、市場から評価されている銘柄は、最終的に株価に表れるからです。業績が良い、テーマが良いと言っても、買われていなければ株価は動きません。株価は、市場参加者の多数決の結果です。

ただし、一つの期間だけを見ると判断を誤ります。

直近の数週間だけ見ると、ニュースで一時的に跳ねただけの銘柄が「強い」と紛れ込みます。逆に一年単位の長い期間だけ見ると、昔は強かったけれど今は失速している銘柄が居残ります。だから、短い期間と長い期間を組み合わせて、昔から強く、しかも今も勢いが続いているかを確認します。

「上がった」を、いったん疑う

ここでもう一つ大事にしているのが、市場全体と比べることです。

相場全体が好調な時期は、たいして力のない銘柄まで一緒に上がります。値上がり率だけを単純に見ると、市場の追い風に乗っただけの銘柄を「強い」と勘違いしてしまう。

そこで、米国株市場全体の動きを基準として置きます。具体的には、S&P500という代表的な株価指数の動きを「市場の平均点」と考えて、それと比べてどうかを見ます。

- 市場全体が大きく上げた中で、それをさらに上回って上げた銘柄 → 本当に強い
- 市場が上げたから、ついでに上がっただけの銘柄 → 見かけほど強くない

「上がった」という事実を、市場平均という物差しに当て直すわけです。これで、地合いに乗っただけの銘柄を外せます。テストでクラス全員の点が上がったとき、自分の点が上がったかどうかより、平均点との差がどうなったかを見る、というのと同じ発想です。


フィルタ3:明らかな弱者は先に外す


最後に、株価のトレンドを使って、明らかに下落基調の銘柄を落とします。

ここで使うのは、移動平均線という考え方です。過去の株価をならして引いた線で、その銘柄が今、長い目で見て上向きか下向きかを判断するのに使います。

見ているのは単純なことだけです。今の株価が、長期の移動平均線より上にいるか。そして、その移動平均線自体が下を向いていないか。長期的に沈んでいる銘柄や、まだ上にいても全体として崩れかけている銘柄を、ここで先に外します。

本格的なトレンドの判定は、このあとの工程の仕事です。ここでやるのは完璧な判定ではなく、最後の下ごしらえ。後ろの処理に、明らかな弱者を渡さないこと。それだけで、後続のランキングがはっきり読みやすくなります。


データが壊れた日は、無理に絞らない

ここまで三段のフィルタを紹介しましたが、これらは全部、外部から取ってきたデータの上で動いています。そして外部からのデータ取得は、毎日100%成功するとは限りません。たまに、大量に失敗します。

毎日自動で動かすシステムでは、この「失敗する日」の振る舞いをどう設計するかが、地味に効いてきます。

ここで一番怖いのは、処理が途中で止まることではありません。止まれば、止まったと分かります。怖いのはその逆で、半分しかデータが取れていないのに、一見うまくいったように見えてしまうことです。

たとえば、流動性のフィルタにかけたい銘柄の株価データが、その日たまたま大量に取得できなかったとします。欠けたデータのまま真面目に絞り込むと、本来残すべき強い銘柄まで、データがないという理由で一緒に消えてしまう。しかも出力された結果は、件数が減っているだけで、見た目は正常です。翌朝までその異常に気づけません。

そこで、データの取得成功率が極端に低い日は、フィルタ自体を一旦スキップする設計にしています。市場全体との比較に使うデータが取れない日は、通常の値上がり率に自動で切り替える、というのも同じ考え方です。「データが怪しい日は、無理に絞らず、取れる範囲で続ける」。

毎日動くシステムの良し悪しは、調子のいい日のロジックではなく、調子の悪い日の振る舞いで決まります。きれいに絞ることより、壊れたデータで間違った結果を上書きしないことのほうが、はるかに大事でした。


「今持っているもの」と「次に見るもの」は混ぜない


ここまでのフィルタを通った銘柄を、強さの順に並べて、見続けられる範囲に残します。

この「範囲」の数に、絶対の正解はありません。広さと処理時間のバランスで決まる、今の運用解です。資金規模、見たい銘柄のタイプ、毎日かけられる時間。条件が変われば、ちょうどいい広さも変わります。

それより、地味だけれど効いている設計判断を一つ紹介します。

すでに持っている銘柄は、観測候補のリストに入れない。

私のシステムでは、「今持っている銘柄」と「これから観測する候補」を、別のファイルで管理しています。役割がまったく違うからです。

- 今持っている銘柄 → 損切り・利確・買い増しを判断する対象
- 候補の銘柄 → 新しく観測しはじめる対象

この二つが混ざると、後続処理の役割が曖昧になります。同じ銘柄が両方に入っていると、その銘柄について「今すべきこと」がブレてしまう。だから、ファイルのレベルできっぱり分ける。こうした小さな線引きの積み重ねが、自動化を長く安全に回す土台になります。


Slackに流すのは、答えではなく健康診断


処理が終わると、Slackに件数のサマリーだけが飛んできます。

何銘柄を拾って、掃除でいくつ落として、各フィルタでどれだけ残ったか。最終的に何件を観測対象にしたか。データの取得成功率はどうだったか。

これは銘柄の話ではなく、システムの健康診断です。

- いつも数千件ある入力が突然数百件になっていたら → 取得元の障害か、フィルタの誤作動
- 強さのフィルタを通った数が極端に少なかったら → 条件を満たす銘柄が減っている、つまり地合いが弱っているサイン
- 取得成功率が低かったら → その日のシグナルは、信頼度を割り引いて見る

朝の確認が「正常か、異常か」を一目で済むように、件数だけは必ず流す。Slackは判断を肩代わりする場所ではなく、異常に最初に気づくためのメーターとして置いています。


まとめ:絞るのは、チャンスを捨てることではない


見る銘柄を決める工程は、家でいう基礎工事です。完成すれば誰も見ない。けれど、ここで手を抜くと、その上に積む分析が全部傾きます。

整理すると、考え方はこうです。

1. 理想は全部見ること。でも母数が多いほど処理が遅くなり、改善サイクルが止まる
2. だから、強い銘柄をきちんと残したうえで絞り、サイクルを速く回す
3. まず広く拾い、そのあとで条件に合わないものを落とす
4. すぐ売れる流動性のある銘柄を残す(データが壊れた日は無理しない)
5. 複数の期間と市場対比で、本当に強い銘柄を見る
6. 明らかな下落基調の銘柄を先に外す
7. 「今持っているもの」と「次に見るもの」は混ぜない

絞ると聞くと、チャンスを捨てているように感じるかもしれません。でも実際は逆でした。

弱い銘柄に時間を使わない分、強い銘柄をきちんと見られて、しかも毎日の改善が速く回る。ユニバースを絞る作業は、チャンスを減らす作業ではなく、限られた時間を強いところに寄せる作業でした。

個人投資家に本当に必要なのは、全部を見ることではありません。毎週、無理なく見続けられる範囲に、強いものを集めておくことです。


あなたが自分の環境で考えるべき問い


最後に、読み終わったあなたに一つ問いを置いていきます。

あなたが今ウォッチしているリストは、いつ作ったものですか。そしてそのリストは、今の相場でもまだ意味を持っていそうですか。

「見る銘柄を増やすこと」より、「見なくていい銘柄を決めること」のほうが、毎日の運用ではたぶん効きます。


次回(第14回)は、こうして絞った観測対象を、どう整理していくかの話です。

ここで一つ、私がずっと混同していたことがあります。「良い会社」と「上がる株」は、同じではありませんでした。業績が良くても株価が動かない会社はあるし、株価は強くても中身が伴わない銘柄もある。この二つを分けて考えるようになった理由を書きます。

スキを押してもらえると、続編の公開が早まります。気になった部分はコメントで教えてください。


本記事は、米国株分析システムの設計や実装上の考え方を紹介する技術記事です。
特定銘柄の売買を推奨するものではありません。
投資助言ではなく、プログラミング教材および個人の実装例としてご覧ください。
実際の投資判断はご自身の責任でお願いします。

いいなと思ったら応援しよう!

この記事は noteマネー にピックアップされました

noteマネーのバナー