The TP ladder
The take-profit ladder — which rung trades actually reach
Every signal has six take-profit rungs. This page shows, out of every closed trade — not just the winners — how many reached each rung, how many stopped there, and what the trade finally booked.
131 days · 1405/02/27, 15:13 UTC to 1405/07/03, 14:35 UTC
Accounting basis: ladder
No percentage on this page shares a single denominator. Each column states its own below the table, and the exact n for every rung is printed again in the per-rung detail section. No calculation removes losing trades.
The funnel
From every closed trade to every rung
closed trades in this window
1,574Rung touches, TP1 through TP6 — total
1,688The number of rung-touch events in this window: one event per trade per rung. A touch means the price reached the rung — not that an order filled on an exchange. Whether this tally agrees with the «Reached» column is checked and published per rung.
Trades where the ladder booked at least one rung
105of 1,574 closed trades in this window · Source: partial_close_log
«Reached» is not «booked»
The funnel above counts the price reaching a rung. partial_close_log counts the trades for which the ladder actually wrote a partial close — a far smaller population. The two are published side by side, are never added together, and neither stands in for the other.
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.
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.
The other side of the ladder: trades that filled no rung
Most closed trades never reach a take-profit rung at all. That figure is published next to the reach rates, not beneath them.
Trades that reached no rung at all
912Share of all closed trades
57.94%Average return of those trades
-11.50%| Rung | Reached | Reach rate | From previous rung | Stopped here | Booked in partial_close_log | Avg final return when it stopped here | Avg return at fill | Median time to fill | p90 time to fill |
|---|---|---|---|---|---|---|---|---|---|
| TP1 | 662 | 42.06% of 1,574 closed gradeable trades in window | 42.06% of 1,574 closed gradeable trades in window | 260 | 62 of 260 trades whose highest rung reached was TP1 | +18.70% (افزایش) of 260 trades whose highest rung reached was TP1 | +16.59% (افزایش) of 662 TP_HIT events at level 1 carrying an ROI | 141min | 754min |
| TP2 | 402 | 25.54% of 1,574 closed gradeable trades in window | 60.73% of 662 trades that reached TP1 | 167 | 36 of 167 trades whose highest rung reached was TP2 | +23.94% (افزایش) of 167 trades whose highest rung reached was TP2 | +21.64% (افزایش) of 402 TP_HIT events at level 2 carrying an ROI | 157min | 736min |
| TP3 | 235 | 14.93% of 1,574 closed gradeable trades in window | 58.46% of 402 trades that reached TP2 | 61 | 5 of 61 trades whose highest rung reached was TP3 | +29.97% (افزایش) of 61 trades whose highest rung reached was TP3 | +26.28% (افزایش) of 235 TP_HIT events at level 3 carrying an ROI | 163min | 647min |
| TP4 | 174 | 11.05% of 1,574 closed gradeable trades in window | 74.04% of 235 trades that reached TP3 | 44 | 1 of 44 trades whose highest rung reached was TP4 | +34.22% (افزایش) of 44 trades whose highest rung reached was TP4 | +31.22% (افزایش) of 174 TP_HIT events at level 4 carrying an ROI | 188min | 751min |
| TP5 | 130 | 8.26% of 1,574 closed gradeable trades in window | 74.71% of 174 trades that reached TP4 | 45 | 1 of 45 trades whose highest rung reached was TP5 | +40.84% (افزایش) of 45 trades whose highest rung reached was TP5 | +36.38% (افزایش) of 130 TP_HIT events at level 5 carrying an ROI | 213min | 812min |
| TP6 | 85 | 5.40% of 1,574 closed gradeable trades in window | 65.38% of 130 trades that reached TP5 | 85 | 0 of 85 trades whose highest rung reached was TP6 | +50.51% (افزایش) of 85 trades whose highest rung reached was TP6 | +41.10% (افزایش) of 85 TP_HIT events at level 6 carrying an ROI | 325min | 923min |
Denominator of each column
- Reach rate: out of all closed trades in the window.
- From previous rung: out of the trades that reached the previous rung — not out of the whole ledger. For TP1 the two are the same.
- Booked in partial_close_log: of the trades whose highest rung was this one, how many actually have a partial close written in that table. Reaching the rung does not imply it.
- Avg final return: only over trades whose highest filled rung was this one.
- Avg return at fill and time to fill: over the fill events at this rung, not over trades.
- Announced in the channel: of the TP_HIT events at this rung, how many were posted to the channel as a reply to the signal message.
Details for rung
TP1 Cross-check between two tables: Agree
Reach rate
42.06%From previous rung
42.06%Booked in partial_close_log
62Avg final return when it stopped here
18.70%Avg return at fill
16.59%Announced in the channel
548Median time to fill
141p90 time to fill
754TP2 Cross-check between two tables: Agree
Reach rate
25.54%From previous rung
60.73%Booked in partial_close_log
36Avg final return when it stopped here
23.94%Avg return at fill
21.64%Announced in the channel
346Median time to fill
157p90 time to fill
736TP3 Cross-check between two tables: Agree
Reach rate
14.93%From previous rung
58.46%Booked in partial_close_log
5Avg final return when it stopped here
29.97%Avg return at fill
26.28%Announced in the channel
207Median time to fill
163p90 time to fill
647TP4 Cross-check between two tables: Agree
Reach rate
11.05%From previous rung
74.04%Booked in partial_close_log
1Avg final return when it stopped here
34.22%Avg return at fill
31.22%Announced in the channel
156Median time to fill
188p90 time to fill
751TP5 Cross-check between two tables: Agree
Reach rate
8.26%From previous rung
74.71%Booked in partial_close_log
1Avg final return when it stopped here
40.84%Avg return at fill
36.38%Announced in the channel
117Median time to fill
213p90 time to fill
812TP6 Cross-check between two tables: Agree
Reach rate
5.40%From previous rung
65.38%Booked in partial_close_log
0Avg final return when it stopped here
50.51%Avg return at fill
41.10%Announced in the channel
78Median time to fill
325p90 time to fill
923Field 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.
This page reports 1,688 touches of the take-profit rungs across 1,574 closed trades. A touch means the price reached the rung, not that an order filled on an exchange.