{"window":{"key":"all","requested_start":null,"requested_end":null,"observed_start":"2026-05-17T15:13:12+00:00","observed_end":"2026-10-02T20:30:00.034197+00:00","days":138.22},"basis":"ladder","trades":1634,"rungs":[{"level":1,"trades_reaching":{"value":697,"unit":"count","denominator":1634,"denominator_label":"closed gradeable trades in window","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE positions.last_hit_tp >= 1","methodology_version":"1.2.0"},"reach_rate_pct":{"value":42.6561,"unit":"percent","denominator":1634,"denominator_label":"closed gradeable trades in window","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"trades with last_hit_tp >= 1 / all trades * 100","methodology_version":"1.2.0"},"conversion_from_previous_rung_pct":{"value":42.6561,"unit":"percent","denominator":1634,"denominator_label":"closed gradeable trades in window","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"trades reaching TP1 / all trades * 100","methodology_version":"1.2.0"},"stopped_at_this_rung":{"value":266,"unit":"count","denominator":1634,"denominator_label":"closed gradeable trades in window","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE positions.last_hit_tp = 1 (highest rung the PRICE reached — not evidence that anything was banked)","methodology_version":"1.2.0"},"avg_final_roi_when_stopped_here_pct":{"value":18.538,"unit":"percent_of_margin","denominator":266,"denominator_label":"trades whose highest rung reached was TP1","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"mean ladder realised ROI (positions.realized_pnl_pct) over trades with last_hit_tp = 1. This basis already prices the banked rungs, so the mixed-denominator warning below does not apply to it.","methodology_version":"1.2.0"},"residual_only_rows":{"value":62,"unit":"count","denominator":266,"denominator_label":"trades whose highest rung reached was TP1","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE partial_close_log booked at least one rung, which makes positions.pnl_percent_on_close the ROI of the unclosed remainder","methodology_version":"1.2.0"},"avg_roi_at_fill_pct":{"value":16.22,"unit":"percent_of_margin","denominator":697,"denominator_label":"TP_HIT events at level 1 carrying an ROI","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"mean position_events.roi_percent over TP_HIT rows with tp_level = 1 — the unrealised ROI at the moment the rung was hit, NOT the ROI at close","methodology_version":"1.2.0"},"median_minutes_to_fill":{"value":131.65,"unit":"minutes","denominator":697,"denominator_label":"TP1 fills with both an event time and a position start","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"median of (TP_HIT occurred_at - COALESCE(activated_at, created_at)) in minutes","methodology_version":"1.2.0"},"p90_minutes_to_fill":{"value":750.9167,"unit":"minutes","denominator":697,"denominator_label":"TP1 fills with both an event time and a position start","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"nearest-rank 90th percentile of minutes from position start to the TP_HIT event","methodology_version":"1.2.0"},"announced_replies":{"value":580,"unit":"count","denominator":697,"denominator_label":"TP_HIT events at level 1","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE position_events.telegram_reply_id IS NOT NULL — the fill was posted as a reply to the original signal message in the channel","methodology_version":"1.2.0"},"cross_check":{"from_positions_last_hit_tp":697,"from_position_events_tp_hit":697,"agree":true,"note":"Two independent tables. positions.last_hit_tp is the monitor's high-water mark on the position row; position_events holds one TP_HIT row per rung. If these ever disagree, one of them is wrong and neither number should be trusted until it is explained."}},{"level":2,"trades_reaching":{"value":431,"unit":"count","denominator":1634,"denominator_label":"closed gradeable trades in window","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE positions.last_hit_tp >= 2","methodology_version":"1.2.0"},"reach_rate_pct":{"value":26.377,"unit":"percent","denominator":1634,"denominator_label":"closed gradeable trades in window","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"trades with last_hit_tp >= 2 / all trades * 100","methodology_version":"1.2.0"},"conversion_from_previous_rung_pct":{"value":61.8364,"unit":"percent","denominator":697,"denominator_label":"trades that reached TP1","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"trades reaching TP2 / trades reaching TP1 * 100","methodology_version":"1.2.0"},"stopped_at_this_rung":{"value":175,"unit":"count","denominator":1634,"denominator_label":"closed gradeable trades in window","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE positions.last_hit_tp = 2 (highest rung the PRICE reached — not evidence that anything was banked)","methodology_version":"1.2.0"},"avg_final_roi_when_stopped_here_pct":{"value":23.5111,"unit":"percent_of_margin","denominator":175,"denominator_label":"trades whose highest rung reached was TP2","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"mean ladder realised ROI (positions.realized_pnl_pct) over trades with last_hit_tp = 2. This basis already prices the banked rungs, so the mixed-denominator warning below does not apply to it.","methodology_version":"1.2.0"},"residual_only_rows":{"value":36,"unit":"count","denominator":175,"denominator_label":"trades whose highest rung reached was TP2","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE partial_close_log booked at least one rung, which makes positions.pnl_percent_on_close the ROI of the unclosed remainder","methodology_version":"1.2.0"},"avg_roi_at_fill_pct":{"value":21.1102,"unit":"percent_of_margin","denominator":431,"denominator_label":"TP_HIT events at level 2 carrying an ROI","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"mean position_events.roi_percent over TP_HIT rows with tp_level = 2 — the unrealised ROI at the moment the rung was hit, NOT the ROI at close","methodology_version":"1.2.0"},"median_minutes_to_fill":{"value":149.4,"unit":"minutes","denominator":431,"denominator_label":"TP2 fills with both an event time and a position start","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"median of (TP_HIT occurred_at - COALESCE(activated_at, created_at)) in minutes","methodology_version":"1.2.0"},"p90_minutes_to_fill":{"value":703.7667,"unit":"minutes","denominator":431,"denominator_label":"TP2 fills with both an event time and a position start","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"nearest-rank 90th percentile of minutes from position start to the TP_HIT event","methodology_version":"1.2.0"},"announced_replies":{"value":373,"unit":"count","denominator":431,"denominator_label":"TP_HIT events at level 2","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE position_events.telegram_reply_id IS NOT NULL — the fill was posted as a reply to the original signal message in the channel","methodology_version":"1.2.0"},"cross_check":{"from_positions_last_hit_tp":431,"from_position_events_tp_hit":431,"agree":true,"note":"Two independent tables. positions.last_hit_tp is the monitor's high-water mark on the position row; position_events holds one TP_HIT row per rung. If these ever disagree, one of them is wrong and neither number should be trusted until it is explained."}},{"level":3,"trades_reaching":{"value":256,"unit":"count","denominator":1634,"denominator_label":"closed gradeable trades in window","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE positions.last_hit_tp >= 3","methodology_version":"1.2.0"},"reach_rate_pct":{"value":15.6671,"unit":"percent","denominator":1634,"denominator_label":"closed gradeable trades in window","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"trades with last_hit_tp >= 3 / all trades * 100","methodology_version":"1.2.0"},"conversion_from_previous_rung_pct":{"value":59.3968,"unit":"percent","denominator":431,"denominator_label":"trades that reached TP2","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"trades reaching TP3 / trades reaching TP2 * 100","methodology_version":"1.2.0"},"stopped_at_this_rung":{"value":64,"unit":"count","denominator":1634,"denominator_label":"closed gradeable trades in window","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE positions.last_hit_tp = 3 (highest rung the PRICE reached — not evidence that anything was banked)","methodology_version":"1.2.0"},"avg_final_roi_when_stopped_here_pct":{"value":29.3649,"unit":"percent_of_margin","denominator":64,"denominator_label":"trades whose highest rung reached was TP3","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"mean ladder realised ROI (positions.realized_pnl_pct) over trades with last_hit_tp = 3. This basis already prices the banked rungs, so the mixed-denominator warning below does not apply to it.","methodology_version":"1.2.0"},"residual_only_rows":{"value":5,"unit":"count","denominator":64,"denominator_label":"trades whose highest rung reached was TP3","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE partial_close_log booked at least one rung, which makes positions.pnl_percent_on_close the ROI of the unclosed remainder","methodology_version":"1.2.0"},"avg_roi_at_fill_pct":{"value":25.6661,"unit":"percent_of_margin","denominator":256,"denominator_label":"TP_HIT events at level 3 carrying an ROI","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"mean position_events.roi_percent over TP_HIT rows with tp_level = 3 — the unrealised ROI at the moment the rung was hit, NOT the ROI at close","methodology_version":"1.2.0"},"median_minutes_to_fill":{"value":158.7833,"unit":"minutes","denominator":256,"denominator_label":"TP3 fills with both an event time and a position start","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"median of (TP_HIT occurred_at - COALESCE(activated_at, created_at)) in minutes","methodology_version":"1.2.0"},"p90_minutes_to_fill":{"value":636.7333,"unit":"minutes","denominator":256,"denominator_label":"TP3 fills with both an event time and a position start","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"nearest-rank 90th percentile of minutes from position start to the TP_HIT event","methodology_version":"1.2.0"},"announced_replies":{"value":226,"unit":"count","denominator":256,"denominator_label":"TP_HIT events at level 3","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE position_events.telegram_reply_id IS NOT NULL — the fill was posted as a reply to the original signal message in the channel","methodology_version":"1.2.0"},"cross_check":{"from_positions_last_hit_tp":256,"from_position_events_tp_hit":256,"agree":true,"note":"Two independent tables. positions.last_hit_tp is the monitor's high-water mark on the position row; position_events holds one TP_HIT row per rung. If these ever disagree, one of them is wrong and neither number should be trusted until it is explained."}},{"level":4,"trades_reaching":{"value":192,"unit":"count","denominator":1634,"denominator_label":"closed gradeable trades in window","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE positions.last_hit_tp >= 4","methodology_version":"1.2.0"},"reach_rate_pct":{"value":11.7503,"unit":"percent","denominator":1634,"denominator_label":"closed gradeable trades in window","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"trades with last_hit_tp >= 4 / all trades * 100","methodology_version":"1.2.0"},"conversion_from_previous_rung_pct":{"value":75.0,"unit":"percent","denominator":256,"denominator_label":"trades that reached TP3","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"trades reaching TP4 / trades reaching TP3 * 100","methodology_version":"1.2.0"},"stopped_at_this_rung":{"value":48,"unit":"count","denominator":1634,"denominator_label":"closed gradeable trades in window","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE positions.last_hit_tp = 4 (highest rung the PRICE reached — not evidence that anything was banked)","methodology_version":"1.2.0"},"avg_final_roi_when_stopped_here_pct":{"value":33.7757,"unit":"percent_of_margin","denominator":48,"denominator_label":"trades whose highest rung reached was TP4","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"mean ladder realised ROI (positions.realized_pnl_pct) over trades with last_hit_tp = 4. This basis already prices the banked rungs, so the mixed-denominator warning below does not apply to it.","methodology_version":"1.2.0"},"residual_only_rows":{"value":1,"unit":"count","denominator":48,"denominator_label":"trades whose highest rung reached was TP4","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE partial_close_log booked at least one rung, which makes positions.pnl_percent_on_close the ROI of the unclosed remainder","methodology_version":"1.2.0"},"avg_roi_at_fill_pct":{"value":30.5823,"unit":"percent_of_margin","denominator":192,"denominator_label":"TP_HIT events at level 4 carrying an ROI","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"mean position_events.roi_percent over TP_HIT rows with tp_level = 4 — the unrealised ROI at the moment the rung was hit, NOT the ROI at close","methodology_version":"1.2.0"},"median_minutes_to_fill":{"value":185.8167,"unit":"minutes","denominator":192,"denominator_label":"TP4 fills with both an event time and a position start","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"median of (TP_HIT occurred_at - COALESCE(activated_at, created_at)) in minutes","methodology_version":"1.2.0"},"p90_minutes_to_fill":{"value":713.5833,"unit":"minutes","denominator":192,"denominator_label":"TP4 fills with both an event time and a position start","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"nearest-rank 90th percentile of minutes from position start to the TP_HIT event","methodology_version":"1.2.0"},"announced_replies":{"value":172,"unit":"count","denominator":192,"denominator_label":"TP_HIT events at level 4","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE position_events.telegram_reply_id IS NOT NULL — the fill was posted as a reply to the original signal message in the channel","methodology_version":"1.2.0"},"cross_check":{"from_positions_last_hit_tp":192,"from_position_events_tp_hit":192,"agree":true,"note":"Two independent tables. positions.last_hit_tp is the monitor's high-water mark on the position row; position_events holds one TP_HIT row per rung. If these ever disagree, one of them is wrong and neither number should be trusted until it is explained."}},{"level":5,"trades_reaching":{"value":144,"unit":"count","denominator":1634,"denominator_label":"closed gradeable trades in window","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE positions.last_hit_tp >= 5","methodology_version":"1.2.0"},"reach_rate_pct":{"value":8.8127,"unit":"percent","denominator":1634,"denominator_label":"closed gradeable trades in window","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"trades with last_hit_tp >= 5 / all trades * 100","methodology_version":"1.2.0"},"conversion_from_previous_rung_pct":{"value":75.0,"unit":"percent","denominator":192,"denominator_label":"trades that reached TP4","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"trades reaching TP5 / trades reaching TP4 * 100","methodology_version":"1.2.0"},"stopped_at_this_rung":{"value":46,"unit":"count","denominator":1634,"denominator_label":"closed gradeable trades in window","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE positions.last_hit_tp = 5 (highest rung the PRICE reached — not evidence that anything was banked)","methodology_version":"1.2.0"},"avg_final_roi_when_stopped_here_pct":{"value":40.9007,"unit":"percent_of_margin","denominator":46,"denominator_label":"trades whose highest rung reached was TP5","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"mean ladder realised ROI (positions.realized_pnl_pct) over trades with last_hit_tp = 5. This basis already prices the banked rungs, so the mixed-denominator warning below does not apply to it.","methodology_version":"1.2.0"},"residual_only_rows":{"value":1,"unit":"count","denominator":46,"denominator_label":"trades whose highest rung reached was TP5","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE partial_close_log booked at least one rung, which makes positions.pnl_percent_on_close the ROI of the unclosed remainder","methodology_version":"1.2.0"},"avg_roi_at_fill_pct":{"value":35.6263,"unit":"percent_of_margin","denominator":144,"denominator_label":"TP_HIT events at level 5 carrying an ROI","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"mean position_events.roi_percent over TP_HIT rows with tp_level = 5 — the unrealised ROI at the moment the rung was hit, NOT the ROI at close","methodology_version":"1.2.0"},"median_minutes_to_fill":{"value":213.15,"unit":"minutes","denominator":144,"denominator_label":"TP5 fills with both an event time and a position start","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"median of (TP_HIT occurred_at - COALESCE(activated_at, created_at)) in minutes","methodology_version":"1.2.0"},"p90_minutes_to_fill":{"value":763.0167,"unit":"minutes","denominator":144,"denominator_label":"TP5 fills with both an event time and a position start","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"nearest-rank 90th percentile of minutes from position start to the TP_HIT event","methodology_version":"1.2.0"},"announced_replies":{"value":129,"unit":"count","denominator":144,"denominator_label":"TP_HIT events at level 5","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE position_events.telegram_reply_id IS NOT NULL — the fill was posted as a reply to the original signal message in the channel","methodology_version":"1.2.0"},"cross_check":{"from_positions_last_hit_tp":144,"from_position_events_tp_hit":144,"agree":true,"note":"Two independent tables. positions.last_hit_tp is the monitor's high-water mark on the position row; position_events holds one TP_HIT row per rung. If these ever disagree, one of them is wrong and neither number should be trusted until it is explained."}},{"level":6,"trades_reaching":{"value":98,"unit":"count","denominator":1634,"denominator_label":"closed gradeable trades in window","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE positions.last_hit_tp >= 6","methodology_version":"1.2.0"},"reach_rate_pct":{"value":5.9976,"unit":"percent","denominator":1634,"denominator_label":"closed gradeable trades in window","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"trades with last_hit_tp >= 6 / all trades * 100","methodology_version":"1.2.0"},"conversion_from_previous_rung_pct":{"value":68.0556,"unit":"percent","denominator":144,"denominator_label":"trades that reached TP5","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"trades reaching TP6 / trades reaching TP5 * 100","methodology_version":"1.2.0"},"stopped_at_this_rung":{"value":98,"unit":"count","denominator":1634,"denominator_label":"closed gradeable trades in window","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE positions.last_hit_tp = 6 (highest rung the PRICE reached — not evidence that anything was banked)","methodology_version":"1.2.0"},"avg_final_roi_when_stopped_here_pct":{"value":49.8668,"unit":"percent_of_margin","denominator":98,"denominator_label":"trades whose highest rung reached was TP6","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"mean ladder realised ROI (positions.realized_pnl_pct) over trades with last_hit_tp = 6. This basis already prices the banked rungs, so the mixed-denominator warning below does not apply to it.","methodology_version":"1.2.0"},"residual_only_rows":{"value":0,"unit":"count","denominator":98,"denominator_label":"trades whose highest rung reached was TP6","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE partial_close_log booked at least one rung, which makes positions.pnl_percent_on_close the ROI of the unclosed remainder","methodology_version":"1.2.0"},"avg_roi_at_fill_pct":{"value":40.1351,"unit":"percent_of_margin","denominator":98,"denominator_label":"TP_HIT events at level 6 carrying an ROI","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"mean position_events.roi_percent over TP_HIT rows with tp_level = 6 — the unrealised ROI at the moment the rung was hit, NOT the ROI at close","methodology_version":"1.2.0"},"median_minutes_to_fill":{"value":293.8333,"unit":"minutes","denominator":98,"denominator_label":"TP6 fills with both an event time and a position start","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"median of (TP_HIT occurred_at - COALESCE(activated_at, created_at)) in minutes","methodology_version":"1.2.0"},"p90_minutes_to_fill":{"value":903.2667,"unit":"minutes","denominator":98,"denominator_label":"TP6 fills with both an event time and a position start","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"nearest-rank 90th percentile of minutes from position start to the TP_HIT event","methodology_version":"1.2.0"},"announced_replies":{"value":89,"unit":"count","denominator":98,"denominator_label":"TP_HIT events at level 6","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE position_events.telegram_reply_id IS NOT NULL — the fill was posted as a reply to the original signal message in the channel","methodology_version":"1.2.0"},"cross_check":{"from_positions_last_hit_tp":98,"from_position_events_tp_hit":98,"agree":true,"note":"Two independent tables. positions.last_hit_tp is the monitor's high-water mark on the position row; position_events holds one TP_HIT row per rung. If these ever disagree, one of them is wrong and neither number should be trusted until it is explained."}}],"no_tp_reached":{"trades":{"value":937,"unit":"count","denominator":1634,"denominator_label":"closed gradeable trades in window","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"COUNT(*) WHERE positions.last_hit_tp = 0 — closed without filling any rung","methodology_version":"1.2.0"},"share_pct":{"value":57.3439,"unit":"percent","denominator":1634,"denominator_label":"closed gradeable trades in window","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"trades with last_hit_tp = 0 / all trades * 100","methodology_version":"1.2.0"},"avg_roi_pct":{"value":-11.6052,"unit":"percent_of_margin","denominator":937,"denominator_label":"trades that filled no rung","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-10-02T20:30:00.034197+00:00","method":"mean ladder realised ROI of trades with last_hit_tp = 0","methodology_version":"1.2.0"}},"tp_hit_events_in_window":1818,"field_notes":{"avg_roi_at_fill_pct":"The ROI showing on the position when the rung was hit. It is NOT what the trade finally booked: after TP1 the stop moves and the remainder can still lose. Compare it with avg_final_roi_when_stopped_here_pct on the same rung.","reach_rate_pct":"Denominator is every closed gradeable trade in the window, losers included. This is the honest funnel, not a win-rate restated. Under basis=ladder this funnel IS the success rate: reach_rate_pct at TP1 is the headline number, because a trade that reached TP1 banked the fraction the published ladder assigned to it.","rung_count_source":"Every count in this section comes from positions.last_hit_tp, cross-checked per rung against the TP_HIT event log. The ladder accounting stores its own validated copy in positions.tp_hit_count and the summary endpoint reports reach rates from that column; the two agree wherever the accounting has run, and cross_check on each rung is what would show it if they stopped.","partial_closes":"Reaching a rung is not the same as banking it on an exchange. Realised partial fills live in partial_close_log and are published per trade at /trade/{code}; only trades closed after 2026-07-30 have them, which is why basis=blended exists. basis=ladder prices every rung the price reached from the ladder that was published with the signal — see advertised_not_executed.","advertised_not_executed":"The take-profit rungs priced by this basis were ANNOUNCED, not executed. partial_close_log carries volume_closed = 0.0 and order_id = NULL on 100% of its rows, order_fills is empty and positions.user_id is NULL everywhere: there is no exchange fill behind any of it. TradeYar is a signal service, so the ladder that was published to subscribers is the correct thing to account for — but it is a record of what was published, not of money that moved. A subscriber's own result depends on whether they took the rungs, at what size, with what fees."},"provenance":{"methodology_version":"1.2.0","methodology_url":"/api/v1/public/performance/methodology","source":"positions + signal_quality_metrics + partial_close_log + position_events","row_counts":{"positions_table_rows":1970,"closed_gradeable_trades":1634,"excluded_housekeeping_rows":336,"trades_with_telegram_message":1337,"trades_with_observed_exit_price":1484,"trades_with_nonreconciling_exit_price":1070,"trades_with_partial_fills":105,"trades_without_recorded_leverage":0,"tp_hit_events":1818,"distinct_symbols":94,"trades_with_ladder_accounting":1628,"trades_without_ladder_accounting":6,"trades_that_reached_tp1":694,"event_log_rows":155515,"event_log_rows_after_position_close":43,"event_log_rows_before_position_start":1,"positions_with_event_log_drift":41},"data_loaded_at":"2026-10-03T03:04:30.519356+00:00","cache_ttl_seconds":60.0,"snapshot_age_header":"X-Snapshot-Age-Seconds","consistency":"Every number on this surface is computed by one module, so no two endpoints can apply different definitions of a win, a window or a universe FOR THE SAME BASIS. The basis itself is a parameter — recorded, blended, ladder, default ladder — and it changes what a win measures: the final exit on recorded, the partial-fill correction on blended, the highest rung reached on ladder. A win is the sign of that basis's ROI on all three. Every payload names the basis it used and every metric restates the rule in its own method string, so two figures that differ can always be traced to the question each was answering. The data SNAPSHOT is cached per worker process for 60 seconds and the API runs several workers, so two endpoints can be answered from snapshots up to one TTL apart and differ by whatever closed in between. Compare provenance.data_loaded_at on the two responses before comparing their numbers — that field exists so the skew is measurable rather than deniable.","timestamp_policy":"Every timestamp published by this module is ISO-8601 in UTC (+00:00). Source columns are TEXT in mixed formats: positions.created_at/activated_at/closed_at and partial_close_log.executed_at always carry an explicit UTC offset; position_events.occurred_at is written naive in Asia/Tehran local time by app.trading.utils.now_sql_naive(). A naive value is therefore interpreted as Asia/Tehran and converted to UTC. There is exactly one conversion function, so no two timestamps in one payload can be in different zones.","money_figures_available":false,"money_note":"positions.pnl_usdt, positions.quantity and positions.exit_price are 100% NULL. Absolute profit in USDT is not computable from this dataset and is never published."}}