Search This Blog
A practical journal on algorithmic trading, market analysis, and building automated systems. Written by an independent developer and active trader.
Featured
- Get link
- X
- Other Apps
When Monthly Moves Go From 4 Percent to 42 Percent, Adjust Stops First
When a market that has been moving 4 percent a month starts moving 40 percent a month, the mistake is rarely direction. It is that the stop distance and the position size were both set for the old market, and only one of them gets updated. The rule that survives this kind of transition is narrow: recalculate the stop width from measured volatility first, then let position size fall out of that number arithmetically. Size is not an independent decision. It is whatever keeps the currency amount at risk constant once the stop has been re-measured.
The second rule is that the two directions are not symmetric. Escalating to a wider stop should happen on a single reading. Returning to a narrow stop should require two consecutive readings, plus a condition that no single month inside that window was violent. The data below shows exactly why: in this episode, one of the quietest months of the entire twelve-month window landed immediately before one of the largest single-month declines.
The Measurement: Twelve Months of Monthly Moves
The reference series here is the U.S. Energy Information Administration's Cushing, OK WTI spot price, monthly average, in dollars per barrel. It is used because it is a public first-party series with a long history, not because crude is a recommended instrument. The same procedure applies to any market where a monthly average price is available.
The column that matters is not the price. It is the absolute percentage change from the prior month, and how that change compares to a fixed baseline. The baseline used throughout is 4.4 percent — the median absolute monthly move across the 24 months preceding 2026.
| Month | Spot ($/bbl) | Move vs. prior month | Absolute move ÷ 4.4% baseline |
| 2025-08 | 64.86 | — | — |
| 2025-09 | 63.96 | −1.4% | 0.3× |
| 2025-10 | 60.89 | −4.8% | 1.1× |
| 2025-11 | 60.06 | −1.4% | 0.3× |
| 2025-12 | 57.97 | −3.5% | 0.8× |
| 2026-01 | 60.04 | +3.6% | 0.8× |
| 2026-02 | 64.51 | +7.4% | 1.7× |
| 2026-03 | 91.38 | +41.7% | 9.5× |
| 2026-04 | 100.32 | +9.8% | 2.2× |
| 2026-05 | 102.13 | +1.8% | 0.4× |
| 2026-06 | 84.81 | −17.0% | 3.9× |
| 2026-07 | 80.46 | −5.1% | 1.2× |
Four features of this table drive everything that follows.
- From the 2025-12 low of 57.97 to the 2026-05 high of 102.13, the series gained 76 percent in five months.
- A single month — February to March — accounted for 41.7 percent, which is 9.5 times the 4.4 percent baseline.
- From the 102.13 high to 80.46 in July, the series gave back 21 percent, retracing roughly 49 percent of the entire advance.
- 2026-05 printed a 1.8 percent move. That is below the calm-market baseline, and it occurred at the top, one month before a 17.0 percent decline.
The causes of the move are not addressed here. No causal data was gathered, and attributing a 41.7 percent monthly change to a specific event without that data is guesswork dressed as analysis. What the table supports is a claim about dispersion, not about reason.
Compressing the Table Into One Trigger Number
A single month's move is too noisy to switch a risk regime on, and a twelve-month average is far too slow. The compromise used here is a three-month mean of absolute moves, expressed as a multiple of the baseline. Call it R3.
R3 = mean(|move| over last 3 months) ÷ 4.4%
Two thresholds define the regime state:
- Escalate when
R3 ≥ 3.0, or when any single month prints|move| ≥ 4.0 × baseline(17.6 percent). The single-month clause exists so a March-type event does not have to wait for two more months to register. - De-escalate only when
R3 ≤ 1.5for two consecutive months and neither of those months printed|move| ≥ 2.0 × baseline(8.8 percent).
Applied to the table, R3 reads as follows.
The escalation trigger fires at the close of 2026-03 on both clauses at once: R3 reaches 4.0, and the single-month move of 41.7 percent is 9.5 times baseline. The de-escalation trigger has not fired anywhere in this window. The 2026-07 reading of 1.8 is still above the 1.5 threshold, so a mechanical application of the rule leaves the regime elevated as of the last observation. That is the correct output — not a forecast, just a statement that the condition for narrowing stops has not yet been met.
The price path behind those ratios is worth seeing directly. The chart below plots the monthly spot level against the month-over-month percentage change, so the two things that are easy to conflate — a large price level and a large price change — can be separated visually.
Two things stand out in the chart above. First, the level chart and the change chart peak in different months: price tops in 2026-05 at 102.13, but the change series peaks two months earlier in 2026-03. A trader watching only the price line would have seen 2026-04 and 2026-05 as continuation. A trader watching the change series would have seen the expansion event already behind them and the regime firmly changed. Second, the 2026-05 bar is visibly the smallest bar of the entire 2026 stretch at 1.8 percent — smaller than two of the four 2025 bars in the series. Calm inside an expanded regime is not the same thing as a return to the old regime, and the June bar at −17.0 percent is what that distinction costs when it is ignored.
Stop Width First, Size Second
Once the regime state is known, the stop width follows from a single formula. Stop distance scales with the square root of the volatility ratio, not linearly:
stop width = baseline stop × min( √R3 , 2.5 )
Square-root scaling is the compromise between two failure modes. Leaving the stop unchanged in an expanded regime guarantees it gets hit by ordinary noise. Scaling it linearly with R3 — a 4.0× ratio producing a 4.0× wider stop — pushes the stop so far away that a single loss becomes an outsized event unless size is cut to almost nothing. The 2.5× cap exists because of the March observation specifically: a raw 9.5× single-month ratio implies a √9.5 = 3.1× stop, and beyond about 2.5× the position becomes too small to be worth the transaction cost.
Position size is then not chosen. It is solved for, so that the currency amount at risk stays fixed:
notional = (account × per-trade risk %) ÷ stop width %
Worked through with a 50,000 account and a 0.5 percent per-trade risk cap (250 units of currency at risk), and a baseline stop set equal to the 4.4 percent baseline move:
| Regime state | R3 | Stop multiplier | Stop width | Notional |
| Base (2025-11 to 2026-02) | 0.6 – 1.1 | 1.00× | 4.4% | 5,680 |
| Escalated, single-month clause (2026-03) | 4.0 (9.5 raw) | 2.50× (capped) | 11.0% | 1,700 |
| Escalated (2026-04) | 4.5 | 2.12× | 9.3% | 2,020 |
| Escalated (2026-05) | 4.0 | 2.00× | 8.8% | 2,130 |
| Elevated, not demoted (2026-06) | 2.2 | 1.48× | 6.5% | 3,850 |
| Elevated, not demoted (2026-07) | 1.8 | 1.34× | 5.9% | 4,240 |
One additional adjustment applies while R3 ≥ 3.0: a 0.75 haircut on the solved notional, which is already reflected in the three escalated rows above. The reason is that widening the stop only compensates for wider ordinary ranges. It does nothing for gap risk or for slippage on the exit, both of which get worse in an expanded regime while the stop calculation assumes the fill happens at the stop price. The haircut means realized risk per trade drops to about 0.375 percent of the account in the escalated state rather than staying at 0.5 percent. That is deliberate: the estimate of risk is less reliable, so the size of the bet on that estimate should be smaller.
Escalate on One Reading, De-escalate on Two
The asymmetry is the part most likely to be dropped when a framework is implemented in a hurry, and this dataset is a clean argument for keeping it.
Suppose a single quiet reading were enough to demote the regime. 2026-05 printed 1.8 percent, which is 0.4× baseline — quieter than eight of the eleven months in the table, and quieter than half of the calm 2025 stretch. A single-reading rule would have restored the 4.4 percent stop and the 5,680 notional at the close of May. The next month moved 17.0 percent against that configuration. A 4.4 percent stop in a month that moved 17.0 percent is not a stop; it is a coin flip on whether the exit fills near the stop or several percent past it.
The two-consecutive-readings rule, plus the clause that neither month may print above 2.0× baseline, blocks that outcome. It also imposes a real cost: the account stays under-sized through genuinely calm stretches, and the framework accepts that cost explicitly rather than pretending it does not exist.
The Regime Clock Runs a Month Behind, and Four Ways That Bill Comes Due
This framework is backward-looking by construction, and there are conditions under which it produces worse outcomes than doing nothing.
The trigger arrives after the move that mattered. The 41.7 percent month is what a wider stop would have protected against, and the rule only fires at that month's close. Every parameter above was set for the market that existed in February and was applied to the market that existed in April. In this episode the expanded regime persisted long enough for the late adjustment to be useful — the R3 readings for 2026-04, 2026-05 and 2026-06 came in at 4.5, 4.0 and 2.2, all well above the 1.0 baseline multiple. In an episode where a single violent month is immediately followed by a return to calm, the same rule cuts size to 0.375 percent risk right as the opportunity narrows, and the account carries an under-sized book through the recovery. There is no version of this that is timely; a rule that fires faster fires more often on noise.
A monthly bar is the wrong resolution for many holding periods. Everything here is computed on monthly average spot prices. A position held for three days does not experience a monthly move; it experiences intraday range, and the relationship between the two is not fixed. For shorter holding periods the same structure should be rebuilt on the timeframe actually being traded — the baseline, the 3.0 escalation multiple, and the 1.5 de-escalation multiple would all need to be re-measured on that timeframe rather than carried over.
A monthly-average series hides the path. The 2026-05 average of 102.13 could be a flat month at 102, or a month that traded 90 to 115 and averaged out. Those are very different risk environments producing an identical 1.8 percent reading. Where daily or intraday data is available, the baseline should be built from true range rather than from month-over-month averages. The monthly series is used here because it is publicly verifiable, not because it is the best available input.
The baseline itself can go stale. The 4.4 percent figure came from the 24 months before 2026. If an expanded regime persists for a year or more, that baseline stops describing anything current, and every ratio computed against it stays permanently elevated — the de-escalation condition then becomes nearly unreachable. A fixed re-measurement schedule, rather than a judgment call about when the old baseline "feels wrong," is the only defense against quietly moving the goalposts after a loss.
Concrete Framework
- Set the baseline. Take the median absolute period-over-period percentage move over the prior 24 periods on the timeframe actually traded. In the worked example this is 4.4 percent monthly. Fails when the 24-period window already contains a regime change — check that the median and the mean are within roughly 30 percent of each other before trusting it.
- Compute R3 at every period close.
R3 = mean(|move| over last 3 periods) ÷ baseline. Log it whether or not it changes anything. Fails when the number is only computed after a loss, which turns a rule into a rationalization. - Escalate on R3 ≥ 3.0, or on any single period ≥ 4.0× baseline. Act at that close, not at the next entry. Fails when existing open positions are exempted — the rule applies to open risk, which means reducing existing size, not only sizing new entries differently.
- Set the stop from volatility, never from the chart.
stop = baseline stop × min(√R3, 2.5). At R3 = 4.0 this is 8.8 percent; at the capped extreme it is 11.0 percent. Fails when the resulting stop sits inside a structure the market visits routinely — in that case skip the trade rather than tightening the stop back. - Solve for size; do not choose it.
notional = (account × 0.5%) ÷ stop width, then multiply by 0.75 while R3 ≥ 3.0. On a 50,000 account: 5,680 at base, 2,130 at R3 = 4.0, 1,700 at the capped extreme. Fails when the minimum tradable increment is larger than the solved notional — the correct response is no position, not a rounded-up one. - De-escalate only on two consecutive periods with R3 ≤ 1.5, neither exceeding 2.0× baseline. The 2026-05 reading of 0.4× followed by a 3.9× month is the case this clause exists to block. Fails when the second confirming period is skipped because the first one was very quiet — quiet single periods inside expanded regimes are common, not confirming.
- Re-measure the baseline on a fixed schedule — every 12 periods, on a date chosen in advance. Fails when the re-measurement is triggered by a drawdown instead of by the calendar.
- Cap total exposure independently. Per-trade sizing does not control correlation. Set a ceiling on summed notional across positions that move together, and apply the same 0.75 haircut to that ceiling while R3 ≥ 3.0. Fails when instruments are assumed uncorrelated because they carry different names.
Every threshold above — 3.0, 1.5, 4.0, 2.0, the 2.5 cap, the 0.75 haircut, the 0.5 percent per-trade risk — is a parameter, not a discovered constant. They are written down so that changing one is a visible decision made in advance rather than an adjustment made mid-drawdown. That property matters more than the specific values.
This article describes a risk-measurement procedure using public price data and is not investment advice, a recommendation to trade any instrument, or a forecast of future prices.
- Get link
- X
- Other Apps
Popular Posts
Trading Value vs. Market Cap — What the Numbers Actually Tell You About Who's Driving the Market
- Get link
- X
- Other Apps
The Hidden Flaw in a 25-Step Grid — Why Losses Exploded in Later Stages
- Get link
- X
- Other Apps
Comments
Post a Comment