48 lines
1.4 KiB
SQL
48 lines
1.4 KiB
SQL
-- View: paper_trade_detail
|
|
-- Per-order paper trade detail joining orders, fills, and the originating
|
|
-- recommendation's prediction outcome. Useful for drill-down from the scorecard.
|
|
-- Requirements: 10.1, 10.3, 10.4
|
|
-- Design ref: Section 9.2 (evidence-to-outcome drill-down)
|
|
|
|
CREATE OR REPLACE VIEW lakehouse.stonks.paper_trade_detail AS
|
|
SELECT
|
|
o.order_id,
|
|
o.recommendation_id,
|
|
o.ticker,
|
|
o.side,
|
|
o.order_type,
|
|
o.quantity,
|
|
o.limit_price,
|
|
o.status AS order_status,
|
|
o.submitted_at,
|
|
f.fill_id,
|
|
f.fill_price,
|
|
f.fill_quantity,
|
|
f.commission,
|
|
f.filled_at,
|
|
-- Slippage: difference between limit and fill price (buys positive = worse)
|
|
CASE
|
|
WHEN o.limit_price IS NOT NULL AND o.limit_price > 0 THEN
|
|
(f.fill_price - o.limit_price) / o.limit_price * 100
|
|
ELSE NULL
|
|
END AS slippage_pct,
|
|
-- Link back to prediction outcome
|
|
pvo.predicted_action,
|
|
pvo.predicted_confidence,
|
|
pvo.actual_move_pct,
|
|
pvo.outcome AS prediction_outcome,
|
|
o.broker_account,
|
|
o.dt
|
|
FROM
|
|
lakehouse.stonks.trade_orders o
|
|
LEFT JOIN
|
|
lakehouse.stonks.trade_fills f
|
|
ON o.order_id = f.order_id
|
|
AND o.dt = f.dt
|
|
LEFT JOIN
|
|
lakehouse.stonks.prediction_vs_outcome pvo
|
|
ON o.recommendation_id = pvo.recommendation_id
|
|
AND o.dt = pvo.dt
|
|
WHERE
|
|
o.execution_mode = 'paper';
|