kessannote

競馬式スクリーンの出し方 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 分ほど。

この版で出したレポート