Short answer. It closed its third level on day 91, and nothing has closed in the thirty-three days since. I opened a XAUT/USDT futures grid on Bybit on 2026-05-25 with five grids across one range, which puts each level a little over four to a little over five percent from the next. The count was zero on day 71, one on day 73, two on day 82, three on day 91 — and it is still three on day 124. The grid's own profit sits at +15.56% of the investment, exactly where it was on day 91, at a sixth consecutive reading. The total on the screen is -6.18%, against +0.87% on day 118 and -0.36% on day 110 — the lowest reading on this page since day 75. The one thing I said in advance I would test came back this week, and it came back the same way. Last week a field called closed profit moved a third of a point across a week in which nothing closed, the net funding fee moved the same third of a point the other way, and I wrote that the next reading would confirm it or kill it. It confirmed it, to the hundredth, in the exchange's own units. The sign on that funding field is still not printed anywhere I can read it, so this is a fit that survived an announced test — not a demonstration.
I published this on 2026-08-05 under a different question — why has my grid bot never closed a profitable trade? At that point it was day 71, it was down 41.34%, and the count was zero.
On 2026-08-06 the count was one. On 2026-08-08 it was still one and the percentage had moved again. On 2026-08-15 the count was two and the grid's profit had doubled, so I rewrote the heading a second time. On 2026-08-24 a third level closed, and the heading moved again. The day count in it moves with the run; the question itself hasn't changed since. I'm updating this page instead of writing a new one, and I'm leaving the old address alone, because what's worth keeping is the run — not the version of it that happened to match what I'd already written.
| n | 1 run. One exchange, one symbol, one configuration, one continuous run. A single case, not a sample. |
|---|---|
| Period | 2026-05-25 to now. Day 124 as of 2026-09-26. Still open. |
| Instrument | XAUT/USDT perpetual futures, grid, Long |
| Exchange | Bybit |
| Leverage | 8x set on the bot. The position actually held is about 3.4× the investment as of day 124 — it drops when a level closes, it grows when the grid buys, and it also drifts with the mark price. It grew by about half between day 96 and day 102 without a single level closing, and it has read about the same at day 110, day 118 and day 124. The quantity on the screen today is identical to day 118's; the multiple slipped from 3.43 to 3.36 because the mark price fell, not because anything was bought or sold. |
| Grids | 5, arithmetic (equal steps in price, not in percent) |
| Trailing | On, downward. It moved down by one grid step and then stopped: the band's lower limit now sits exactly on the trailing-down stop price, so it cannot shift any further. That limit came out of the optimisation too, not from me. |
| Band | Unchanged since at least day 82, and checked again on day 124 rather than assumed: each level still needs 5.25% at the bottom and 4.16% at the top, and the stop still sits 0.66% above the bottom of the band. Both of those would move if the band had. |
| Stop | Set. It sits just under 1% above the bottom of the band. |
| Liquidation | 26.30% below the mark price, 29.99% below average entry, read 2026-09-26. It read 27.83% and 30.07% on day 118, 27.6% and 30.2% on day 110, and 28.4% and 30.3% on day 102. It is under the derivatives block of the detail screen, not on the status card. |
| Margin rates | The screen's own Initial Margin Rate reads 87.24% and its Maintenance Margin Rate 5.72%, read 2026-09-26. On day 118 my own note of that screen reads 81.97% and 5.37%. I cannot reproduce either figure from the other numbers on the screen, so I am not going to tell you what they are ratios of — only that they are two ratios the exchange labels as margin rates, and that both rose across six days in which the bot bought nothing and sold nothing. |
| Chosen by | All of it — range, grid count, trailing, stop — came out of the same optimisation against past gold data, with P&L as the target. None of it was picked by hand. |
| Open orders | Three buys and three sells as of day 118, all six for the same size, with the top sell marked close-only. Read from the orders tab, not the status card. I did not open that tab on day 124, so this row is a day-118 reading and I am not restating it as today's. What I can say about today is that the margin the bot has set aside for its pending orders reads the same figure it did on day 118. |
| Fees | 0.055% taker / 0.02% maker on this account. |
| Excluded | Nothing stated yet. |
On 2026-05-25 I opened a grid on XAUT/USDT futures. Long, 8x.
I didn't pick any of this by feel, and I didn't pick the grid count by hand either. Nor the trailing, nor the stop. Every parameter on this bot came out of the same optimisation. I optimised it against past gold data with an AI, over the entire history I had. The range and the number of grids both came out of that. The target I gave it was P&L — I asked for the configuration that would have made the most money. I used what came back.
Five grids across that range means each level sits a little over four to a little over five percent from the next one — 5.25% near the bottom and 4.16% near the top, as the band sits today. They aren't identical, because the steps are evenly spaced in price, not in percent, so the same step is a bigger percentage when price is lower. On the original band, before it trailed down a step, it was 4.99% and 3.99%.
So for one level to buy and then sell, price has to cover four to five percent.
Here is the part I understand now and didn't then.
This is a long grid. On a long grid, every sell order is a sale. When price rises and a level fills, I have just sold part of a position that is still going up.
And gold, over the whole window I optimised on, ends near its highs.
So the configuration that made the most money over that window is the one that sold the least on the way up. A wide range, so it never exits. Few levels, so it barely sells. 8x, so the position is as large as it can be.
The optimiser did not ignore fill rate. It selected against it. In that backtest, every fill would have cost it money.
I asked which configuration would have made the most money. I got the right answer to that question.
There is one more thing about using all of it.
If you optimise over everything, there is nothing left to test it on. No holdout. No out-of-sample window. That doesn't make the number wrong — it means the number can't tell me whether it holds up.
The hundred and twenty-four days on this page are the out-of-sample test. It started when I clicked start.
I looked this up after the fact, which is the wrong order.
Bitsgap's helpdesk describes the tradeoff directly — more grids give "frequent small profits", fewer grids give "higher profit per grid" but "lower probability of orders being filled" — and recommends targeting 0.5–2% profit per grid. Gainium's guidance is 0.5–1% per step, wider only for more volatile assets.
Mine is 4.16 to 5.25%. Both of those sources top out at 2%. So my narrowest level is about double the widest step either of them recommends, and my widest is roughly ten times their narrowest.
What I find strange is how one-sided the published warnings are. Almost everything written about grid count warns you about using too many grids — smaller profit per fill, more fees. I could not find anything written about the failure mode I actually hit, which is the opposite one: too few grids across too wide a range, so the levels sit further apart than price normally travels.
So this run is not an argument that grid bots don't work, and it isn't me telling you five was the wrong number. I don't know that. Tighter grids mean smaller profit per fill and more fees, and I haven't run that comparison. What I can say is that I was sitting at one end of a tradeoff the tools themselves publish, and I didn't know I was there.
On 2026-08-04 I recorded day 71: zero profitable trades closed. On 2026-08-06 the screen said day 73 and the count was one. Between those two readings the mark price is a little over five percent higher than it was.
That is the first move in this run big enough to cross a level. I'm not calling it proof of anything. I haven't exported the fill log, so I can't tell you which of those two days the level closed on, what price it closed at, or what it cost in fees. What I can say is that the distance the arithmetic asked for finally appeared, and the count went from zero to one in the same window.
At that point four levels had still never filled. There have been two more closes since — day 82 and day 91 — and I can't tell you whether they were the same level again or different ones. That comes from the export too.
On 2026-08-08, at 09:45, the screen said day 75 and the percentage had moved from -15.62% to -7.62%. The count of closed profitable trades was still one.
That count only goes up. It was one at day 73 and it is one at day 75, so nothing closed in between. Whatever moved eight percentage points over those two days, it was not the grid: it was the position being marked at a different price.
This is the clearest version of the thing this page is about. The number that moves on the screen is not the number the grid produces. If you watch the percentage, you are watching the leverage, not the strategy.
I wrote a version of this section before I had opened the bot's detail screen, and I got it wrong. It said the plain division matched what the exchange showed. It doesn't. Here is the correction.
The division itself is simple: at L× leverage, roughly a 100/L% move against a position wipes it out. My bot says 8×, so 12.5%.
That is not what the exchange shows. When I read it on day 75, liquidation sat 22.4% below my average entry. That reading went stale — the position was cut twice after it, and the liquidation level moves with what is left — and for nearly a month I had nothing to put in its place. I wrote here that the figure was not on the screen I read this bot from. That was true of the screen I was reading. It was not true of the exchange. The number is one block further down the same detail page, under derivatives, and I had been stopping one block short of it for the twenty-three days since day 75. I found it on day 98 and it first went up here on day 102.
Read on day 124: liquidation sits 26.30% below the mark price, and 29.99% below my average entry. It read 27.83% and 30.07% on day 118, 27.6% and 30.2% on day 110, and 28.4% and 30.3% on day 102. Across twenty-two days the entry-based figure has moved 0.31 of a percentage point and the mark-based one has moved 2.10. The entry-based distance is set by what I am holding rather than by today's price, which is the usual reason it moves less. This week both distances came in — 30.07% to 29.99% against entry, 27.83% to 26.30% against the mark. Both the price and the level can move, and I am not telling you which of those two did it. The plain division says 12.5%. The real distance is still more than twice that, in the direction that makes the position safer than the arithmetic suggests — and the reason is the thing this whole page keeps arriving at: 8× is what the bot is allowed to use, not what it is using.
The 12.7% I quoted here before day 75 was measured from the bottom of my range, not from my entry — a different distance that happened to land near 12.5%. And the range has since trailed down a step, so even that edge has moved. Two numbers being close is not one explaining the other, and I wrote it up as though it were.
The other half of the gap is the size. The position I am actually holding is about 3.4 times my investment as of day 124, not 8. 8× is what the bot is allowed to use; it is not what it has taken, and it is not fixed either. Each time a level closes, part of the position is sold and the multiple drops. Each time price falls through a level, the grid buys and the multiple rises. It read 3.6× on day 90, 2.4× on day 91 after the third close, 2.3× on day 96, 3.4× on day 102, 3.4× on day 110, 3.4× on day 118, and about 3.4× again today, on day 124 — with nothing closed in any of it since day 91. Between day 96 and day 102 the bot did not change: price came down and it bought. Since then the multiple has read the same at four consecutive readings. This week I can be more exact than usual about why: the quantity printed on the screen today is the same number it was on day 118, so the drift from 3.43× to 3.36× is entirely the mark price. This figure moves with both, and most weeks I only have the multiple rather than the two things it is made of.
On day 118 I had something better than the multiple. The orders tab gives a size per grid level, and it gives the position. The position divided into the size per level exactly three times — no remainder. That is the clearest statement of what this bot is holding that I have had in this run: not a leverage setting, not a multiple that drifts with the mark price, but three levels' worth of buying that has not been sold yet. The book on the same screen was three buy orders and three sell orders, all six for that same size, with the top sell marked close-only. I did not open that tab on day 124, so that is a day-118 reading and I am not restating it as this week's. The position quantity has not changed since, which is consistent with it, and consistent is not the same as read.
What I am still not going to do is hand you a replacement division. I can now read the exchange's own liquidation figure, but I can't reproduce the formula it uses from what is on my screen, so any tidy substitute would be me fitting a rule to a number I already have.
The usable part is smaller and duller than the version I published: the leverage setting is not the position, the position is not constant, and the setting is the thing I had been reading.
There is a stop on this bot, and I hadn't said so on this page until day 75. It sits just under 1% above the bottom of the band — 0.66%, re-checked on day 124 — and from where price stands today it is 10.50% away. The stop price itself is the same number it was on day 110. It read 16.6% on day 90, 17.2% on day 91, 13.9% on day 96, 12.7% on day 102, 11.8% on day 110 and 12.25% on day 118. It has closed at most of those readings and opened at two — day 91, right after a level closed, and day 118. This week it closed again, by about one and three quarter points. What changes is the distance, and the distance is price.
Now that I can read both, the shape is no longer a guess. Stop: 10.50% below the mark. Liquidation: 26.30% below the mark. The stop is nearer by more than fifteen percentage points. For this run to be liquidated, price would have to go through the stop and keep going another fifteen and eight tenths of a percentage point while the stop failed to fill. Liquidation was never the number I should have been watching, and for most of this run I was watching neither — I was watching a division.
I put this on the page as an open question first, and then I looked it up, which is the order I should have used to begin with. The bottom of my band and the bot's stated down-trailing stop price are the same number. I couldn't tell whether that meant the band had hit a floor or whether the field was just mirroring where the band sits.
The exchange's own help pages answer it. The trailing stop price is a limit you set, not a readout. Their words: "the bot won't shift the range down if the new lower limit would fall below your Trailing Down stop price." My band's lower limit already sits exactly on that number. So it cannot shift down again. The trailing on this run is finished.
That changes the shape of how this run can end, and not in my favour. Until it reached that floor, the band could follow price down and keep the levels around it. It did that once. It can't do it again. From here, if price keeps going down, the band stays where it is and the price walks toward the bottom of it — and the stop sits 0.66% above that bottom. The stop stops being a distant edge and starts being the floor of the band, plus a rounding error.
Day 124 is the first week I have checked this rather than repeated it. If the band had moved, the percentage each level needs would move with it, because the steps are evenly spaced in price and the same step is a different percentage at a different level. Those two figures read 4.16% and 5.25% today, which is what they read on day 82, and the stop's distance above the bottom of the band reads 0.66%, which is what it read on day 102. The band has not moved. I had been taking that on the strength of one help page for six weeks.
One thing I want to be exact about, because it cuts against something else on this page. The help text says your stop price, as though I chose it. I didn't choose it by hand any more than I chose the range or the grid count. It came out of the same optimisation as everything else, and I entered what came back. So this is a limit I set in the sense that I typed it, and not in the sense that I decided it.
One more thing about the timing, since this page is supposed to be a record of what I actually did. These two numbers have read the same on my screen since at least day 79 — I have that reading — and I looked up what the field meant on day 102. That is twenty-three days between having the number on my screen and knowing what it meant, and the knowing took one search. It is not the same twenty-three days as the one earlier on this page. That one was the liquidation figure I was sitting one block above, day 75 to day 98. These two gaps ran at the same time, on the same screen, and I closed them four days apart.
The band moved down by one grid step since I opened it, and that was the whole budget it had. I still haven't watched the stop and the trailing fire against each other, so I'm not going to tell you how they resolve in practice. What I can say is that the number I was treating as the edge of this run — liquidation — is not the first thing that would end it.
The stop and the trailing came out of the same optimisation as the range and the grid count, with the same target: the configuration that would have made the most money over the whole history. Neither of them was something I chose by hand, and neither appeared on this page until day 75, because until then I had been reading the summary card and not the detail screen.
On 2026-08-11 the count was one and the grid had produced +5.19%. By day 82 the count is two and the grid has produced +10.37%. The second figure is twice the first to within a hundredth, which is what you would expect: the levels are evenly spaced in price, so each one that completes pays the same amount.
The total did not move by the same amount in the other direction. It went from -5.91% to -3.82%, and the unmatched part went from -11.10% to -14.19%. The grid earned twice as much, the position lost more than it did, and the number on the screen was still negative at that point.
That is the same point this page has been making since the first version, and this is the clearest instance of it I have had. Until now I could only say the grid had not moved. Now the grid has moved — it doubled — and it still is not the thing setting the number.
I can't tell you which day the second level closed on, at what price, or what it cost in fees. That comes from the export, and the export still isn't done.
The third level closed on day 91, and it did the same arithmetic again: the grid went from +10.37% to +15.56%, which is one and a half times the day-82 figure — three equal steps instead of two. At the same moment the unmatched part dropped from +4.12% to +1.12%. That is what that row does when the grid takes a step and the screen's total does not move as far — it is a subtraction, not a holding. I used to explain this one as the position being sold; that explanation belonged to the label I corrected on day 118, and it is gone.
Until day 75 this page said I couldn't separate these two. Since then I can.
| component | day 82 | day 90 | day 91 | day 96 | day 102 | day 110 | day 118 | day 124 |
|---|---|---|---|---|---|---|---|---|
| grid profit — the levels that have closed | +10.37% | +10.37% | +15.56% | +15.56% | +15.56% | +15.56% | +15.56% | +15.56% |
| the part the closed levels do not explain — my subtraction, not an exchange field | -14.19% | +4.12% | +1.12% | -8.24% | -12.61% | -15.92% | -14.69% | -21.74% |
| total shown on the screen | -3.82% | +14.49% | +16.68% | +7.32% | +2.95% | -0.36% | +0.87% | -6.18% |
| position held, as a multiple of the investment | 3.4× | 3.6× | 2.4× | 2.3× | 3.4× | 3.4× | 3.4× | 3.4× |
Correction, day 118. The middle row used to be labelled the open position, marked to price. That label was wrong, and it was mine, not the exchange's. The numbers in the row have not changed and neither has how they are worked out — total minus grid profit — but that quantity is not the exchange's unrealised P&L. I said on day 110 that the two did not agree and that I could not say why. I can now.
Bybit publishes the identity in its help centre: “Total P&L = Closed Profit + Unrealized P&L”, and separately “Grid Profit = Interval × Quantity per grid (Long Order) × completed grid trade − Trading Fees”. Those are two different accountings of the same run. The first one closes. The second one is not a term in it.
One naming thing, because it cost me time. The help page calls the first term closed profit. The screen does not: it is labelled Realized P&L, in the derivatives block. They are the same field. What tells you so is that it and the unrealised figure add to the total, which is what the identity says they should do, and they do it at all three of the readings below — to within a hundredth at day 110 and day 118, and exactly at day 124. If you go looking for a field called closed profit on your own screen you will not find one.
the day 124 column is read from the screen today. The day 110 column is from my own note of that screen on 2026-09-12 — I recorded both fields that day but did not publish them, because at that point I could not say what the difference between them and my subtraction row meant. They are here now.
| the exchange's own fields | day 110 | day 118 | day 124 |
|---|---|---|---|
| closed profit | +0.18% | -0.18% | -0.53% |
| unrealised P&L on the open position | -0.55% | +1.04% | -5.65% |
| these two add to the total | -0.36% | +0.87% | -6.18% |
day 118: +1.04 and -0.18 add to +0.86, and the screen's own total read +0.87 — the one-hundredth was rounding. Day 124 needs no such note: -5.65 and -0.53 add to -6.18, and the screen reads -6.18. It is the first week the identity has closed exactly in percentage terms as well as in the exchange's own units.
So the open position marked to price is -5.65% today, not -21.74%. The row in the big table is the other thing: the part of the total that the completed levels do not account for. On the second bot, which is on a different exchange, that quantity has a name and a field of its own. On the screens I read for this bot there is no such field, which is why I was computing it by subtraction and then calling it by the wrong name. I am not saying the exchange is inconsistent. I mixed two accountings and subtracted across them. The row stays, because the quantity it measures is real and I have it back to day 82. Only the label changes.
The wrong name was not only in the table. It appeared in nine other places on this page — four in the body and five in earlier entries of the update log at the bottom. All of them now read the unmatched part. I am telling you that rather than changing them quietly — the numbers in every one of those sentences are the same as they were, and what changed is what I was calling them.
A hundred and twenty-four days of running have produced +15.56% from the grid — the figure has moved exactly three times, once per closed level, and not otherwise. Almost everything else on that screen is the position being marked at a different price — up into day 90, back down into day 96, further down into day 102, below zero on day 110, back above it on day 118, and six points below it again on day 124. Almost, and not all: since day 118 I can see a second thing moving in there, and there is a section about it further down.
Read the last six columns across. The grid profit row is identical at all six, and the total row falls seventeen percentage points, comes back one and a quarter, and then falls another seven. Whatever happened across those thirty-three days, the strategy was not in it.
The bottom row is the one I had not been tracking. The size of what I am holding is not constant and it is not a setting. It fell by a third between day 90 and day 96 as levels closed — 3.6× to 2.3× — and then it went back up by about a half between day 96 and day 102, 2.3× to 3.4×, with nothing closing at all. It has read about 3.4× at every reading since.
On day 82 the same detail screen showed a grid APR of +46.17% while the run as a whole was down 3.82%. On day 90 it showed +42.07% against +14.49%. On day 96 it showed +59.15% against a total APR of +27.83% — the grid APR went up, because a third level closed and the annualised figure moved with it; the total came down, because the position did. They moved in opposite directions in the same week.
On day 102 the grid APR reads +55.67% and the total APR reads +10.55%. The grid APR fell without anything happening. Nothing closed between day 96 and day 102, so the numerator did not move; only the elapsed days did, and an annualised figure divides by those. A number that goes down because time passed is not measuring the strategy. It is measuring how long I have been waiting. The grid APR annualises the closed levels; the total is mostly the position. Both numbers are true. Neither of them is the account. That is the clearest example I have of why one metric on an exchange screen is not a result.
On day 124 the grid APR reads +45.79%. Nothing has closed since day 91. So it has now fallen four times in a row with nothing happening behind it: +59.15% on day 96, +55.67% on day 102, +51.62% on day 110, +48.12% on day 118, +45.79% today. It did the same thing once before, between day 82 and day 90 — +46.17% to +42.07%, count unmoved at two — and the only reason that isn't a longer run is that a level closed on day 91 and pushed the figure back up. Five falls in this run, all of them with nothing closing, and the thing they move with is the calendar. The numerator of that figure has not changed since day 91. Only the denominator has, and the denominator is days.
It would be easy to write this up as "the range was too wide, so it lost money." That isn't right either.
I described these for a while as two problems — almost nothing fills, and the percentage was negative. They are not two problems. They are the same one.
I optimised a long grid for P&L over a window that ended near its highs. On a long grid a fill is a sale, so that question selects for not selling — which means not filling. What I actually built was a leveraged long with a few sell orders on top of it. It doesn't fill because it was selected not to fill. And the number on the screen is whatever a leveraged long is worth on the day you read it.
I'm not saying five grids was the wrong number. I don't know that. I'm saying I asked for one thing, got exactly it, and never checked what else came with it.
The second of those two — the percentage on the screen — is also why I never called the positive readings an improvement. On 2026-08-04 this run was down 41.34%. It read +16.68% at its best and it reads -6.18% now, on day 124. Most of that range is the position being marked at a different price, not profit the grid produced, and the split above says so directly: the grid has produced +15.56% in a hundred and twenty-four days. It cannot move a number by forty percentage points on its own, and the percentage points between day 73 and day 75 came with no closed level at all.
The screenshot for this run stays covered the same way it always has — investment, total P&L, grid profit, unrealised P&L, position quantity, average entry, margin, available balance and the liquidation price, plus every price level. What's left is the grid count, the direction, the leverage, the day count and the percentage.
On 2026-08-24 the screen reads day 90. Total P&L: +14.49%. That is the first reading above zero since this page started — on day 71 it read -41.34%.
The closed-trade count is still two. The grid's profit is +10.37% — the same figure it showed on day 82, to the decimal. Nothing filled between those two readings.
So the entire move from -3.82% to +14.49% — a little over eighteen percentage points — is the unmatched part: -14.19% to +4.12%. It is the same mechanism as every swing on this page. It has just pointed up this time.
I'm not calling it a result, for the same reason I didn't call -41.34% one. This is a leveraged long that went the right way for a week. If you are reading this as "so the bot works now," the split above is the answer: the strategy earned nothing this week. The thing that moved is the thing I'm holding.
On 2026-08-29 the screen reads day 96. Total P&L: +7.32%. On day 91, five days earlier, it read +16.68%.
Nothing closed in between. The count is three at both readings and the grid's profit is +15.56% at both, to the decimal. So the grid produced nothing across those five days, and the total fell by more than nine percentage points anyway.
All of it is the unmatched part: +1.12% on day 91, -8.24% on day 96. Gold came down and the thing I am holding is marked lower. Nothing on the bot changed — same range, same five levels, same stop, same size.
I wrote the section above five days ago, when the same mechanism pointed the other way, and I said then that it was the position and not the grid. This is that sentence being tested. If I only said it when the number was going against me, it would be an excuse. The number went up and I said it wasn't the grid. The number came back down, and it still isn't.
The run is still above where this page started and I am still not calling it a result. It is a leveraged long, and the last two readings are what a leveraged long does.
On 2026-09-04 the screen reads day 102. Total P&L: +2.95%. Six days earlier, on day 96, it read +7.32%. The count is three at both readings and the grid's profit is +15.56% at both, to the decimal. That is the same sentence I have now written three weeks running.
This reading has something in it the others didn't. The position got bigger. On day 96 I was holding about 2.3 times the investment. On day 102 I am holding about 3.4 times it. Nothing closed in those six days, so none of that came from the grid taking a profit and reloading. Price fell, price crossed levels on the way down, and a long grid buys when price comes down. The machine that has closed three trades in a hundred and two days spent this week buying.
That is the part I had not seen clearly before. I have been writing that the grid does nothing. That is wrong in one direction. It does nothing profitable. It is not idle — it is accumulating. Every level it crosses going down adds to the one thing on this screen whose price movement is the whole number.
So the two halves of this page turn out to be the same mechanism. It barely fills because it was optimised not to sell. It grows because that same optimisation left the buy side wide open. A grid that will not sell and will keep buying is not really a grid. It is a way of accumulating a leveraged long on a schedule.
On 2026-09-12 the screen reads day 110. Total P&L: -0.36%. Eight days earlier, on day 102, it read +2.95%. The count is three at both readings and the grid's profit is +15.56% at both, to the decimal. That is the fourth week running I have written that sentence.
This is the first reading below zero since day 82 — four weeks ago, before this run went up twenty percentage points into day 91 and then handed most of it back. Nothing about the bot changed across any of it. Same range, same five levels, same stop, and the size I am holding reads about 3.4 times the investment at both ends of this week.
Last week I wrote that the machine had spent the week buying, and that it was accumulating rather than idling. This week I can't say that. Nothing closed and the multiple came back the same. What moved was the price of what I was already holding.
Nineteen days with nothing closed, three closed trades in a hundred and ten days, and the run is now worth fractionally less than what went into it. There is a line further down this page saying I would post the result either way, including if it ended below where it started. This is the direction that line was written for, and it is the first reading since day 82 that has needed it.
On 2026-09-20 the screen reads day 118. Total P&L: +0.87%. Eight days earlier, on day 110, it read -0.36%. The count is three at both readings and the grid's profit is +15.56% at both, to the decimal. That makes five consecutive readings at which neither number has moved — days 91, 96, 102, 110 and 118. Twenty-seven days since anything closed.
Because the split is now in the exchange's own fields rather than in my subtraction, there is something visible this week that the old row would have hidden. The closed-profit field moved. It read +0.18% of the investment on day 110 and it reads -0.18% today. Nothing closed in between. A field whose name is closed profit went down by 0.36 percentage points in a week in which no level closed.
The same screen carries a net funding fee. It read 5.79% of the investment on day 110 — again from my note of that day, not from anything published then — and 6.15% today, up by 0.36 percentage points over the same eight days. Bybit's own definition is “Closed Profit = The sum of position P&L - trading fees +/− Funding Fee”, so funding is inside that field by construction. The two movements are the same size to the hundredth, in opposite directions, across a week with no fills.
What I can say: the arithmetic fits, and it fits to the hundredth of a point. What I cannot say: that this proves the sign. The funding field on my screen is printed without one — I cannot tell from looking at it whether I am paying or being paid. Two readings that happen to cancel is one week of arithmetic, not a demonstration. I am writing it down now so that the next reading either confirms it or kills it, and either way there is a record of what I expected.
The thing worth keeping out of this week is smaller and harder to argue with. A hundred and eighteen days in, nothing that moved the number on my screen this week was the strategy. Most of the move is the position being marked at a different price. A third of a point of it went the other way inside a field I cannot fully read. The strategy has not acted since day 91.
On 2026-09-26 the screen reads day 124. Total P&L: -6.18%. Six days earlier, on day 118, it read +0.87%. The count is three at both readings and the grid's profit is +15.56% at both, to the decimal. That is six consecutive readings at which neither has moved — days 91, 96, 102, 110, 118 and 124. Thirty-three days since anything closed.
Seven percentage points went out of this run in six days and the strategy was not in any of it. In the exchange's own two fields: the open position was marked 6.69 points lower, and closed profit took another third of a point off. This is the lowest this page has read since day 75 — seven weeks ago, when it read -8.32% with one level closed. Between then and now it has been as high as +16.68%.
Two things about the bot itself did not move, and I checked both rather than assuming them. The band is where it was. Each level still needs 4.16% at the top of the band and 5.25% at the bottom — the same two figures this page has carried since day 82 — and the stop still sits 0.66% above the bottom of the band. Those are the numbers that would change if the band had shifted, and they haven't. The size I hold did not move either: the quantity on the screen is identical to day 118's, and the margin the bot has set aside for its pending orders reads the same figure as well. The multiple slipped from 3.43 times the investment to 3.36, and all of that is the mark price, not the position.
Two numbers did move that I have not published before. The screen's own Initial Margin Rate went from 81.97% to 87.24%, and its Maintenance Margin Rate from 5.37% to 5.72%. The day-118 figures are from my note of that screen, not from anything this page published then. Nothing was bought and nothing was sold in between, and I cannot tell you what moved them. What I am not going to do is tell you what those percentages are ratios of. I cannot reproduce either of them from the other numbers on my screen, and a figure I can read but cannot rebuild is one I quote by the exchange's own field name and leave there. They are two ratios the exchange computes and labels as margin rates. Both of them went up in a week in which the bot bought nothing and sold nothing.
Liquidation re-read: 26.30% below the mark price and 29.99% below my average entry. It read 27.83% and 30.07% on day 118. The stop re-read: 10.50% below the mark, against 12.25% on day 118 — still the nearer of the two, now by 15.80 percentage points. The stop's distance closed because price came down, and I can show that: the stop price itself is the same number it has been since day 110, so the whole of that 1.75 points is the mark. The liquidation distance closed as well, and there both the price and the level can move, so I am not telling you which of the two did it.
And the grid APR reads +45.79%, against +48.12% on day 118. That is the fourth fall in a row with nothing closing behind it and the fifth in this run. The numerator has not changed since day 91. The denominator is days.
Last week this page carried a paragraph that was half a finding and half a bet. A field called closed profit had moved 0.36 percentage points of the investment across a week in which nothing closed. Over the same days the net funding fee had moved 0.36 the other way. Bybit's own definition puts funding inside closed profit, so the arithmetic fitted — but the funding field on my screen is printed without a sign, and one week of two numbers cancelling is not a demonstration. I wrote: “I am writing it down now so that the next reading either confirms it or kills it, and either way there is a record of what I expected.”
It confirmed it, and it confirmed it harder than last week did. Across the six days from day 118 to day 124, closed profit fell and the net funding fee rose, and in the exchange's own units the two movements are the same figure to the hundredth, in opposite directions. Last week the same pair were a hundredth apart and I had to call that rounding. This week there is nothing to round.
One thing to be careful about if you check this against the figures above. The two movements are the same size, and my rounding does not make them look it. The table prints closed profit as -0.18% and -0.53%, so differencing those two cells gives you 0.35. The net funding fee read 6.15% of the investment on day 118 and 6.51% today, and differencing those gives you 0.36. The figure underneath sits between the two and rounds each way — in the exchange's own units the two movements are the same. I would rather hand you both subtractions than quote a tidy 0.36 twice and let you find the difference yourself.
Nothing closed in either week. The count has read three since day 91 and the grid's own profit has read +15.56% at six consecutive readings, so neither movement can have come from a level completing.
What this buys, and what it does not. It buys a second independent week, on a test I published before I had the data, and it came back the same way. It does not buy the sign. The funding field on my screen is printed without one; I cannot look at it and tell you whether I am paying or being paid, and two cancelling movements do not print it either. A cost sitting inside a field labelled profit is the reading the arithmetic fits, and it is still the reading rather than the fact. The next one gets the same treatment.
Why I am keeping this narrow matters more than the finding. If I let two weeks of arithmetic become “the funding fee is a cost”, then the first week it stops fitting I will have to retract something I never measured. What I measured is that two fields moved the same distance in opposite directions, twice, in weeks where the strategy did nothing. That is what is on the page, and it is all that is on the page.
read at the dates and times shown — this run is open and the percentage moves intraday
| read at | day | total P&L % | grid profit % | closed | status |
|---|---|---|---|---|---|
| 2026-08-06 | 73 | -15.62% | — | 1 | running |
| 2026-08-08 09:45 | 75 | -7.62% | — | 1 | running |
| 2026-08-08 11:15 | 75 | -8.32% | +5.19% | 1 | running |
| 2026-08-11 | 78 | -4.07% | — | 1 | running |
| 2026-08-11 | 79 | -5.91% | +5.19% | 1 | running |
| 2026-08-15 08:26 | 82 | -3.82% | +10.37% | 2 | running |
| 2026-08-24 05:03 | 90 | +14.49% | +10.37% | 2 | running |
| 2026-08-24 | 91 | +16.68% | +15.56% | 3 | running |
| 2026-08-29 11:07 | 96 | +7.32% | +15.56% | 3 | running |
| 2026-09-04 | 102 | +2.95% | +15.56% | 3 | running |
| 2026-09-12 | 110 | -0.36% | +15.56% | 3 | running |
| 2026-09-20 | 118 | +0.87% | +15.56% | 3 | running |
| 2026-09-26 | 124 | -6.18% | +15.56% | 3 | running |
Thirteen readings. The total moved eight percentage points across two days, then another seven tenths of a percentage point across ninety minutes, and it has moved at every reading since. The closed-trade column moved twice in that whole stretch, and the grid profit column moved with it and not otherwise. Between day 75 and day 79 the grid figure sat at +5.19% while the total moved twice; between day 91 and day 124 it has sat at +15.56% across six separate readings while the total fell seventeen points, came back one and a quarter, and fell another seven. The grid profit column is blank on the first two rows because I hadn't opened the detail screen yet, not because it was zero.
Five grids across the range I optimised put each level 4–5% from the next. It took seventy-three days for price to cover that distance and come back once, it did it a second time somewhere between day seventy-nine and day eighty-two, and a third time on day ninety-one. Three round trips in a hundred and twenty-four days, and none in the last thirty-three. That was the output of my process, not a property of grid bots.
The percentage in the table is where this run sits while it's still open. It isn't a final result and I'm not presenting it as one. It moved twenty-five percentage points in two days, then another eight in the two days after that, it gave up seventeen in the nineteen days after day 91, took one and a quarter of those back, and then gave up another seven — all of it without me touching anything, which is a fair illustration of how little it means on any given day.
I don't know whether the fix is fewer grids, a narrower range, a different target to optimise for, or none of those. They aren't separable inside a single run and I only have one. I'll post the result either way, including if it ends below where it started.
This is one asset, one exchange, one run that's still open. n = 1 run. It isn't evidence about grid bots in general, and it isn't a finished result.
I don't publish USDT amounts anywhere on this site. The percentage above is public, so a single amount would let anyone work out the size of the account. I don't publish price levels either — the range, the width of each step, the price axis, the liquidation price itself — because those combine with the leverage to narrow down my entry. The distances above are ratios, not levels. On their own they tell you nothing, because you would need one of the prices I'm not publishing to turn them back into one.
The liquidation distance is the weakest of them and I want to say so rather than let someone find it. This is gold. Anyone can look up what gold did on the day I read the screen, so a distance quoted from the mark price is closer to being a level than my other ratios are. I'm publishing it anyway, and here is the reasoning, so you can disagree with it: what the redaction on this site protects is the size of the account, and getting to size needs a quantity — how much of the asset I hold. That is the number I never publish, in any form, on any channel. Everything above is a ratio to it. You can check my ratios. You can't check my size, and that's deliberate.
My fee tier is in the method box now. What I excluded still isn't — that row stays empty until I can state it, rather than being filled in with something plausible.
And I can't show you the fills themselves yet — which days they happened on, the prices they closed at, or what they took in fees. That comes from the export, and the export isn't done.
One more, and it is new this week. I have not explained why the two fields at the centre of this page keep moving by the same amount in opposite directions. I have the arithmetic and I have the exchange's definition, and neither of those is the sign printed on the screen. Two weeks of fit is two weeks of fit.
There is a second grid running now, on HYPE/USDT, on a different exchange. It has its own page: what a long grid does when price runs up — eight grids, thirty-one days, fourteen closed levels.
Nothing on this page is about that run, and I am not going to put the two percentages next to each other. One is a hundred and twenty-four days old and one is thirty-one. Comparing what they have returned would be comparing a run to a rounding error and pretending it meant something. What I will compare is how they are built and what they are holding, because those are settings and positions rather than results. This one is carrying about 3.4 times its investment. That one is carrying about 0.40 times its investment.
I have now written that sentence four weeks running with four different second numbers. On day 9 that run carried 0.045 times its investment, on day 18 it carried 0.82, on day 26 it carried 0.13, and on day 31 it carries 0.40. The gap between the two bots went from a factor of about seventy-six, to about four, to about twenty-six, to about eight. Neither bot was touched in any of it. They look like one machine at different points, and the point each one sits at moves with where price is inside its band. That is the reading I take from four snapshots of one bot and thirteen of the other. It is not something I have tested.
Raw data isn't published yet. The CSV for this run, with a README repeating the method box above, goes here when it's up.
answered from my own readings this week. nothing here is advice.
On mine, each level sits a little over four to a little over five percent from the next, and gold has not covered that distance and come back often. Three round trips in 124 days, none in the last thirty-three. Published guidance puts a step at 0.5–2% (Bitsgap) or 0.5–1% (Gainium). Mine is 4.16–5.25%: at its narrowest about double the widest step either of them recommends, and at its widest about ten times their narrowest.
I can't tell you what yours should be. Mine is 4.16–5.25% per level against published guidance that tops out at 2%, and the result over 124 days is three fills. The distance per level is arithmetic you can do before you start. How often price covers it is not.
They are two different quantities, and only one of them is the strategy. The grid's own profit has read +15.56% at six consecutive readings; over the same stretch the screen total ran from +16.68% down to -6.18%. A long grid sells on the way up, so a run that barely sells is one that is accumulating. The position is the leftover, and it moves with price.
No. The screen total on day 124 reads -6.18%. Bybit's own identity is Total P&L = Closed Profit + Unrealized P&L, and grid profit is not a term in it. Whichever figure you quote, the honest thing is to say which of the two accountings it came from.
Not the 12.5% that 100 divided by 8 gives. On day 124 the exchange puts it 26.30% below the mark price and 29.99% below my average entry. 8x is a ceiling and what I hold is about 3.4 times the investment; I cannot reproduce the exchange's own formula, so I am not offering that as the calculation. The stop is nearer anyway, 10.50% below the mark.
Bybit's formula subtracts trading fees but not funding — funding sits inside the closed-profit field instead. That field has now moved about a third of a percentage point of the investment in each of two consecutive weeks with no fills, and the net funding fee has moved the same distance the other way both times — this week matching to the hundredth in the exchange's own units. I wrote last week that the next reading would confirm it or kill it, and it confirmed it. The sign is still not printed on my screen, so I am still not calling it settled.
Every other record I've published →
educational only · no signals · no profit claims · not financial advice · dyor
bots ≤ 30% of my portfolio · core is index funds