{"by":"timeframe","window":{"key":"all","requested_start":null,"requested_end":null,"observed_start":"2026-05-17T15:13:12+00:00","observed_end":"2026-08-15T23:00:37+00:00","days":90.32},"basis":"recorded","min_trades":1,"groups":[{"key":"15m","trades":{"value":939,"unit":"count","denominator":1156,"denominator_label":"closed gradeable trades in window (all groups)","window_start":"2026-05-17T20:00:58+00:00","window_end":"2026-08-15T23:00:37+00:00","method":"COUNT(*) grouped by timeframe","methodology_version":"1.0.0"},"wins":{"value":585,"unit":"count","denominator":939,"denominator_label":"closed gradeable trades for timeframe=15m","window_start":"2026-05-17T20:00:58+00:00","window_end":"2026-08-15T23:00:37+00:00","method":"COUNT(*) WHERE recorded_roi_pct > 0","methodology_version":"1.0.0"},"losses":{"value":354,"unit":"count","denominator":939,"denominator_label":"closed gradeable trades for timeframe=15m","window_start":"2026-05-17T20:00:58+00:00","window_end":"2026-08-15T23:00:37+00:00","method":"COUNT(*) WHERE recorded_roi_pct <= 0","methodology_version":"1.0.0"},"win_rate_pct":{"value":62.3003,"unit":"percent","denominator":939,"denominator_label":"closed gradeable trades for timeframe=15m","window_start":"2026-05-17T20:00:58+00:00","window_end":"2026-08-15T23:00:37+00:00","method":"wins / trades * 100","methodology_version":"1.0.0"},"roi_points_sum":{"value":733.319,"unit":"roi_points","denominator":939,"denominator_label":"closed gradeable trades for timeframe=15m","window_start":"2026-05-17T20:00:58+00:00","window_end":"2026-08-15T23:00:37+00:00","method":"sum of per-trade leveraged ROI percentages — NOT a portfolio return","methodology_version":"1.0.0"},"avg_roi_pct":{"value":0.781,"unit":"percent_of_margin","denominator":939,"denominator_label":"closed gradeable trades for timeframe=15m","window_start":"2026-05-17T20:00:58+00:00","window_end":"2026-08-15T23:00:37+00:00","method":"mean leveraged ROI per trade","methodology_version":"1.0.0"},"profit_factor":{"value":1.1079,"unit":"ratio","denominator":939,"denominator_label":"closed gradeable trades for timeframe=15m","window_start":"2026-05-17T20:00:58+00:00","window_end":"2026-08-15T23:00:37+00:00","method":"sum(positive ROI) / |sum(negative ROI)|","methodology_version":"1.0.0"},"compounded_return_pct":{"value":14.7776,"unit":"percent","denominator":939,"denominator_label":"closed gradeable trades for timeframe=15m","window_start":"2026-05-17T20:00:58+00:00","window_end":"2026-08-15T23:00:37+00:00","method":"geometric compounding over this group only; at allocation_pct=2 (caller-chosen sizing assumption, default 2, range 0.1-10; changing it changes this number — see equity_assumption.sizing_dependence_note)","methodology_version":"1.0.0","sizing_dependent":true,"allocation_pct":2.0},"max_drawdown_pct":{"value":-18.7686,"unit":"percent","denominator":939,"denominator_label":"closed gradeable trades for timeframe=15m","window_start":"2026-05-17T20:00:58+00:00","window_end":"2026-08-15T23:00:37+00:00","method":"peak-to-trough on this group's compounded curve; at allocation_pct=2 (caller-chosen sizing assumption, default 2, range 0.1-10; changing it changes this number — see equity_assumption.sizing_dependence_note)","methodology_version":"1.0.0","sizing_dependent":true,"allocation_pct":2.0}},{"key":"30m","trades":{"value":145,"unit":"count","denominator":1156,"denominator_label":"closed gradeable trades in window (all groups)","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-06-22T12:50:09+00:00","method":"COUNT(*) grouped by timeframe","methodology_version":"1.0.0"},"wins":{"value":81,"unit":"count","denominator":145,"denominator_label":"closed gradeable trades for timeframe=30m","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-06-22T12:50:09+00:00","method":"COUNT(*) WHERE recorded_roi_pct > 0","methodology_version":"1.0.0"},"losses":{"value":64,"unit":"count","denominator":145,"denominator_label":"closed gradeable trades for timeframe=30m","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-06-22T12:50:09+00:00","method":"COUNT(*) WHERE recorded_roi_pct <= 0","methodology_version":"1.0.0"},"win_rate_pct":{"value":55.8621,"unit":"percent","denominator":145,"denominator_label":"closed gradeable trades for timeframe=30m","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-06-22T12:50:09+00:00","method":"wins / trades * 100","methodology_version":"1.0.0"},"roi_points_sum":{"value":-284.7057,"unit":"roi_points","denominator":145,"denominator_label":"closed gradeable trades for timeframe=30m","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-06-22T12:50:09+00:00","method":"sum of per-trade leveraged ROI percentages — NOT a portfolio return","methodology_version":"1.0.0"},"avg_roi_pct":{"value":-1.9635,"unit":"percent_of_margin","denominator":145,"denominator_label":"closed gradeable trades for timeframe=30m","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-06-22T12:50:09+00:00","method":"mean leveraged ROI per trade","methodology_version":"1.0.0"},"profit_factor":{"value":0.8404,"unit":"ratio","denominator":145,"denominator_label":"closed gradeable trades for timeframe=30m","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-06-22T12:50:09+00:00","method":"sum(positive ROI) / |sum(negative ROI)|","methodology_version":"1.0.0"},"compounded_return_pct":{"value":-5.898,"unit":"percent","denominator":145,"denominator_label":"closed gradeable trades for timeframe=30m","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-06-22T12:50:09+00:00","method":"geometric compounding over this group only; at allocation_pct=2 (caller-chosen sizing assumption, default 2, range 0.1-10; changing it changes this number — see equity_assumption.sizing_dependence_note)","methodology_version":"1.0.0","sizing_dependent":true,"allocation_pct":2.0},"max_drawdown_pct":{"value":-8.8981,"unit":"percent","denominator":145,"denominator_label":"closed gradeable trades for timeframe=30m","window_start":"2026-05-17T15:13:12+00:00","window_end":"2026-06-22T12:50:09+00:00","method":"peak-to-trough on this group's compounded curve; at allocation_pct=2 (caller-chosen sizing assumption, default 2, range 0.1-10; changing it changes this number — see equity_assumption.sizing_dependence_note)","methodology_version":"1.0.0","sizing_dependent":true,"allocation_pct":2.0}},{"key":"1h","trades":{"value":72,"unit":"count","denominator":1156,"denominator_label":"closed gradeable trades in window (all groups)","window_start":"2026-05-18T07:52:01+00:00","window_end":"2026-06-10T13:47:39+00:00","method":"COUNT(*) grouped by timeframe","methodology_version":"1.0.0"},"wins":{"value":30,"unit":"count","denominator":72,"denominator_label":"closed gradeable trades for timeframe=1h","window_start":"2026-05-18T07:52:01+00:00","window_end":"2026-06-10T13:47:39+00:00","method":"COUNT(*) WHERE recorded_roi_pct > 0","methodology_version":"1.0.0"},"losses":{"value":42,"unit":"count","denominator":72,"denominator_label":"closed gradeable trades for timeframe=1h","window_start":"2026-05-18T07:52:01+00:00","window_end":"2026-06-10T13:47:39+00:00","method":"COUNT(*) WHERE recorded_roi_pct <= 0","methodology_version":"1.0.0"},"win_rate_pct":{"value":41.6667,"unit":"percent","denominator":72,"denominator_label":"closed gradeable trades for timeframe=1h","window_start":"2026-05-18T07:52:01+00:00","window_end":"2026-06-10T13:47:39+00:00","method":"wins / trades * 100","methodology_version":"1.0.0"},"roi_points_sum":{"value":-392.05,"unit":"roi_points","denominator":72,"denominator_label":"closed gradeable trades for timeframe=1h","window_start":"2026-05-18T07:52:01+00:00","window_end":"2026-06-10T13:47:39+00:00","method":"sum of per-trade leveraged ROI percentages — NOT a portfolio return","methodology_version":"1.0.0"},"avg_roi_pct":{"value":-5.4451,"unit":"percent_of_margin","denominator":72,"denominator_label":"closed gradeable trades for timeframe=1h","window_start":"2026-05-18T07:52:01+00:00","window_end":"2026-06-10T13:47:39+00:00","method":"mean leveraged ROI per trade","methodology_version":"1.0.0"},"profit_factor":{"value":0.7368,"unit":"ratio","denominator":72,"denominator_label":"closed gradeable trades for timeframe=1h","window_start":"2026-05-18T07:52:01+00:00","window_end":"2026-06-10T13:47:39+00:00","method":"sum(positive ROI) / |sum(negative ROI)|","methodology_version":"1.0.0"},"compounded_return_pct":{"value":-7.8486,"unit":"percent","denominator":72,"denominator_label":"closed gradeable trades for timeframe=1h","window_start":"2026-05-18T07:52:01+00:00","window_end":"2026-06-10T13:47:39+00:00","method":"geometric compounding over this group only; at allocation_pct=2 (caller-chosen sizing assumption, default 2, range 0.1-10; changing it changes this number — see equity_assumption.sizing_dependence_note)","methodology_version":"1.0.0","sizing_dependent":true,"allocation_pct":2.0},"max_drawdown_pct":{"value":-12.9201,"unit":"percent","denominator":72,"denominator_label":"closed gradeable trades for timeframe=1h","window_start":"2026-05-18T07:52:01+00:00","window_end":"2026-06-10T13:47:39+00:00","method":"peak-to-trough on this group's compounded curve; at allocation_pct=2 (caller-chosen sizing assumption, default 2, range 0.1-10; changing it changes this number — see equity_assumption.sizing_dependence_note)","methodology_version":"1.0.0","sizing_dependent":true,"allocation_pct":2.0}}],"group_count":3,"truncated":false,"sizing_dependent_metrics":["compounded_return_pct","max_drawdown_pct","sharpe_ratio","calmar_ratio","total_return_pct","final_equity","peak_equity","trough_equity","daily_returns"],"note":"Groups are ordered by trade count, not by performance. Losing groups are included; raise min_trades to judge statistical weight rather than filtering them out.","provenance":{"methodology_version":"1.0.0","methodology_url":"/api/v1/public/performance/methodology","source":"positions + signal_quality_metrics + partial_close_log + position_events","row_counts":{"positions_table_rows":1495,"closed_gradeable_trades":1156,"excluded_housekeeping_rows":339,"trades_with_telegram_message":905,"trades_with_observed_exit_price":1084,"trades_with_nonreconciling_exit_price":760,"trades_with_partial_fills":87,"trades_without_recorded_leverage":0,"tp_hit_events":818,"distinct_symbols":93,"event_log_rows":14573,"event_log_rows_after_position_close":31,"event_log_rows_before_position_start":0,"positions_with_event_log_drift":28},"data_loaded_at":"2026-08-16T01:21:39.335896+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. 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."}}