45 lines
1.5 KiB
SQL
45 lines
1.5 KiB
SQL
-- View: prediction_accuracy
|
|
-- Joins prediction_vs_outcome with trade_signals and market_bars to provide
|
|
-- a comprehensive prediction accuracy scorecard.
|
|
-- Requirements: 10.1, 10.2, 10.3, 10.4
|
|
-- Design ref: Section 9.2 (prediction confidence vs realized move)
|
|
|
|
CREATE OR REPLACE VIEW lakehouse.stonks.prediction_accuracy AS
|
|
SELECT
|
|
pvo.recommendation_id,
|
|
pvo.ticker,
|
|
pvo.predicted_action,
|
|
pvo.predicted_confidence,
|
|
pvo.actual_move_pct,
|
|
pvo.outcome,
|
|
pvo.horizon_days,
|
|
pvo.predicted_at,
|
|
pvo.evaluated_at,
|
|
pvo.model_version,
|
|
ts.trend_direction,
|
|
ts.trend_strength,
|
|
ts.contradiction_score,
|
|
ts.dominant_catalysts,
|
|
-- Confidence bucket for dashboard grouping
|
|
CASE
|
|
WHEN pvo.predicted_confidence >= 0.8 THEN 'high'
|
|
WHEN pvo.predicted_confidence >= 0.5 THEN 'medium'
|
|
ELSE 'low'
|
|
END AS confidence_bucket,
|
|
-- Direction correctness: did the predicted action match the actual move?
|
|
CASE
|
|
WHEN pvo.predicted_action = 'buy' AND pvo.actual_move_pct > 0 THEN true
|
|
WHEN pvo.predicted_action = 'sell' AND pvo.actual_move_pct < 0 THEN true
|
|
WHEN pvo.predicted_action IN ('hold', 'watch') THEN NULL
|
|
ELSE false
|
|
END AS direction_correct,
|
|
-- Magnitude of prediction error
|
|
ABS(pvo.actual_move_pct) AS abs_move_pct,
|
|
pvo.dt
|
|
FROM
|
|
lakehouse.stonks.prediction_vs_outcome pvo
|
|
LEFT JOIN
|
|
lakehouse.stonks.trade_signals ts
|
|
ON pvo.recommendation_id = ts.recommendation_id
|
|
AND pvo.dt = ts.dt;
|