競馬式スクリーンの出し方 v2
会社予想を要素から外し、能力を実績、オッズを PBR と実績 PER で測る。混ぜる前に要素ごとの効きと相関を出し、効いたものだけを合成する。馬場は掛けた版と添えた版を並べる。
v1 で分かったことを全部使った版。変えたのは 3 つ。
- 会社予想をどこにも入れない。控えめな予想は上振れ、強気な予想は下振れの裾が重く、 株価はそのずれに反応する。能力にすると逆に効き、PER の分母にすると強気予想が安く見える
- オッズは「基準に対する株価の安さ」と定義し、基準を会社の中身 (利益、純資産、現金) に限る。 過去の株価を基準にする下落率は、基準の値付けが正しかった保証がない
- 混ぜる前に単独で見る。要素ごとの効きと順位の相関を先に出し、効いたものだけを合成する
| 競馬 | 株式 | v1 | v2 |
|---|---|---|---|
| 能力 | 会社が利益を生む力 | 会社予想の営業利益率・増益率・ROE | 実績の営業利益率、その前期からの変化、実績 ROE、直近四半期の進捗の速さ |
| オッズ | 基準に対する株価の安さ | 予想 PER、PBR、ネットキャッシュ比率、下落率 | PBR、実績 PER。ネットキャッシュは定義を直して単独で見る。下落率は「予想据え置き」の銘柄に限った版で単独で見る |
| 馬場 | 業種への今の期待 | 業種の直近 20 営業日 | 業種の直近 20 営業日と 60 営業日 |
想定する保有期間は v1 と同じ 1 四半期。
母集団
stocks.is_listedが true の銘柄。今の上場銘柄で過去の断面を作るので、上場廃止した 銘柄が落ちている。stock_snapshotsは 2026-06 からしか無く、v2 でも直せない- 時点の直前の営業日に値が付いた銘柄
- 時点から 400 日以内に本決算の短信があり、解析済みのもの。訂正短信は使わない
時点は 2025-07-01 から。実績は本決算の短信からしか取れず、決算の取得元が 2025-01 からなので、 2025-04-01 の断面では 3 月決算の会社の実績が無い。v1 より 1 つ少ない 5 時点になる。
値の取り方
2 通の短信を使う。本決算 (時点以前の最新の quarter = 'FY') から実績を、最新の短信
(本決算を含む) から株式数・自己資本・通期予想・累計実績を取る。表紙の要素名は会計基準で
末尾が変わるので、まとめて拾い、連結を優先する。
| 項目 | 定義 | 出どころ |
|---|---|---|
| 株価 | 時点の直前の営業日の調整後終値。無ければ終値 | ticks |
| 時価総額 | 株価 × (発行済株式数 − 自己株式数)。開示日から時点までの分割は調整後終値と終値の比で直す | 最新の短信 |
| 実績営業利益率 | 通期実績の営業利益 ÷ 売上高 | 本決算 |
| 営業利益率の変化 | 当期の営業利益率 − 前期の営業利益率 (同じ短信の前期欄) | 本決算 |
| 実績 ROE | 通期実績の親会社株主に帰属する当期純利益 ÷ 自己資本 | 本決算 |
| 進捗の速さ | 累計の営業利益 ÷ (通期予想の営業利益 × 経過四半期 ÷ 4)。1 なら予想どおりの速さ。最新の短信が本決算なら無し | 最新の短信 |
| PBR | 時価総額 ÷ 自己資本 | 最新の短信 |
| 実績 PER | 株価 ÷ 通期実績の EPS。EPS が 0 以下なら順位を最下位 (0) に置く | 本決算 |
| ネットキャッシュ比率 | (現預金 − 有利子負債) ÷ 時価総額。銀行・保険・証券・その他金融は無し。IFRS で借入の科目が拾えなければ無し | 最新の短信の貸借対照表 |
| 下落率 (予想据え置き) | 株価 ÷ 過去 365 日の最高値 − 1。最新の短信の通期予想営業利益が 1 つ前の短信と同じ銘柄だけ。本決算 (新しい予想) は無し | ticks と最新の短信 |
| 業種の勢い | 33 業種ごとに、直近 20 営業日と 60 営業日の騰落率の中央値 | ticks |
進捗の速さだけは通期予想を分母に使う。予想の水準ではなく、予想からのずれを見るため。
各項目を時点ごとに percent_rank で 0〜1 の順位にする。高いほど良い向きに揃える。PBR と
PER は低いほど高順位、下落率は深いほど高順位。値が無い項目は順位に入れない。
合成
要素ごとの単独の効きと、順位どうしの相関を先に出す。 そのうえで合成する。
- 能力 = 実績営業利益率、営業利益率の変化、実績 ROE、進捗の速さの順位の平均 (無い項目は除く)
- オッズ = PBR、実績 PER の順位の平均
- 期待値 = 能力 × オッズ
- 馬場を掛けた期待値 = 期待値 × (0.5 + 業種 20 日の順位 ÷ 2)。馬場が最悪で半分、最良でそのまま
単独で効かなかった要素を合成から外した版は、レポートで別に示す。SQL は定義どおりに出し、 外すかどうかはレポートで判断する。
効きの測り方
時点を四半期の頭に置き、次の時点の直前の営業日までの騰落率を先行リターンとする。最後の 時点だけ株価の最新日まで。中央値を主に読む。
- 要素ごとに、上位 20% と下位 20% の先行リターン中央値の差。時点別も
- 要素の順位どうしの相関 (Spearman)。0.5 を超える組は重なりとみなす
- 期待値の 5 分位 (掛けた版と添えた版)
- 能力とオッズの 2×2
- 市場区分別、時価総額 3 分位 × 期待値 5 分位
- ネットキャッシュを足切りにした場合。ネット負債が時価総額の半分を超える銘柄を外して、 期待値上位 20% の先行リターンが変わるか
流し方
analysis/keiba-v2.sql をそのまま使う。
psql "$DATABASE_URL" -c "SET temp_buffers='512MB'" \
-v dates='2025-07-01,2025-10-01,2026-01-05,2026-04-01,2026-07-01,2026-09-11' \
-f analysis/keiba-v2.sql
temp_buffers は一時表を何本も作るために要る。全時点で 1 分ほど。
この版で出したレポート
- 競馬式スクリーン v2 — 会社予想を外し、実績で測る 2026.09.13