Repricing Waves
how one operator changes prices, and when

Measured from daily snapshots, 2026-07-11 – 2026-08-23 · 44 consecutive days · directory · insights · daily trends · metro markets · merger before/after

+$34
median increase, August 1
12,792
units repriced that day
12
repricing waves in 44 days
17
days with no change at all

What happened

Self-storage pricing is usually assumed to drift smoothly day by day. In practice, it doesn't. On August 1st, 12,792 units — about a fifth of tracked inventory — had their advertised rate raised, 86% of them upward, by a median of $34. Three weeks later, on August 20th, 50,051 units moved the other way and the national median 10×10 rate fell 12.5% in a single day.
Between those events, most days log no price changes at all. Rates sit completely still for days at a time and then tens of thousands of units change at once — twelve times in the six weeks observed.

Observed data, not an interpretation: this site records the advertised online rate for every tracked unit once per day. When a unit's advertised rate differs from the previous snapshot, that difference is logged. This page counts those logged changes by date. It reports when prices moved and which direction. It draws no conclusion about operator intent, pricing strategy, or why any individual rate changed.

Method: a day is called a wave when it logs 10,000 or more price changes. That threshold is a choice, but a safe one — see the next section. Direction is reported as the share of changes that moved down, so 50% is a wave with no net direction. Reproduced by analysis/repricing_waves.py against history/rate_changes.csv. The observation window is taken from the recorded snapshot dates in store-history.json, not from the change log — a day on which nothing changed writes no rows, and counting only days that appear in the log would silently drop it. Rows where the previous price is zero are excluded: those are units arriving in the dataset for the first time, not repricings. Share of inventory uses that day's summed listings from history/2026-07.csv and history/2026-08.csv; the tiering and the inventory shares reproduce from analysis/wave_tiers.py.

Why the threshold isn't arbitrary

A cut-off is only defensible if the thing it cuts has an obvious gap. This one does.
daysmedian price changesrange
Quiet days3200 – 2,443
Wave days1233,57912,79250,051
The busiest quiet day logged 2,443 changes. The smallest wave logged 12,792. Nothing in the observation period falls between those two numbers, so any threshold from roughly 3,000 to 12,000 selects exactly the same twelve dates. On seventeen of the forty-four days, not a single tracked rate changed at all.
Those seventeen days are silence, not missing data. A snapshot was recorded on every one of the 44 calendar days in the window — there are no gaps in the series. The days with no logged change are days on which the site was read and nothing had moved.

The twelve waves

Median change is the median dollar move among units that changed, not across all inventory. A wave touches between 22.35% and 88.65% of tracked listings; a quiet day never exceeds 5.69%. Nothing observed falls in between.
dateunits repricedshare of inventoryshare moving down median changemedian size of changedirection
2026-07-1533,66180.3%55.6%−$1$7mixed
2026-07-1822,22153.9%60.1%−$2$5mixed
2026-07-2333,49763.5%52.4%−$1$7mixed
2026-07-2413,97926.7%52.6%−$2$15mixed
2026-07-2513,96126.9%11.7%+$6$7increase
2026-07-2942,64080.5%57.0%−$2$8mixed
2026-08-0112,79222.3%13.6%+$34$35increase
2026-08-0548,03782.5%49.6%+$1$8mixed
2026-08-1246,12281.5%49.4%+$1$8mixed
2026-08-1615,93228.2%62.9%−$6$14mixed
2026-08-2050,05188.7%71.7%−$7$12decrease
2026-08-2233,89060.2%37.5%+$7$20mixed
A “mixed” wave is not a small one. The median change on 15 July is −$1; the median size of a change that day is $7, and 20% of the changes are $20 or more. The signed figure is near zero because increases and decreases cancel, not because the moves are minor. Across all nine mixed days the median absolute move is $9 and 26% of changes are $20 or more — against $12 and 38% on the three directional days. 22 August has half its changes at $20+ with a median size of $20. These are large individual repricings that offset in aggregate.
Why the share column matters more than the count. Store count grew from 3,539 to 4,664 across the observation period, so raw counts are not comparable between July and August. As a share of that day's tracked inventory the separation is sharper than the counts suggest: quiet days span 0.00% to 5.69%, wave days 22.35% to 88.65%, and nothing observed falls between. The waves are not an artifact of inventory arriving — listings drift smoothly and never jump on a wave day. The only discontinuity in 44 days is the 23 July merger.

Most waves have no direction. Three do.

Nine of the twelve waves split close to evenly between increases and decreases. Those move a lot of individual rates and leave the national picture unchanged. Three did not.

August 1 — increase. 12,792 units, 86% of them raised, median +$34 on the units that moved. That is the largest single-day upward move in the observation period, and it landed on the first of the month.

July 25 — increase. 13,961 units, 88% raised, median +$6.

August 20 — decrease. 50,051 units, 72% of them lowered, median −$7. This is the wave visible as a cliff on the daily trends chart: the national weighted median 10×10 rate fell from $136.39 to $119.29 in one day, held flat on the 21st, and recovered to $128.63 on the 22nd. It has not returned to its pre-wave level.

Coverage was stable throughout — 56,618 tracked listings on the 19th against 56,279 on the 22nd, a 0.60% change, across a constant 43 states and a store count that moved from 4,659 to 4,664. The national median moved because rates moved, not because the sample did. Reproduces from analysis/coverage_check.py.

One unit, seven weeks

The tables above describe a population. This is a single tracked unit — a 5×5 at one facility — so that the mechanism behind them can be checked one row at a time. Every figure comes from this site's own change log; the discount column applies the operator's published promotional terms.
dateadvertised list ratepromotionfirst month advertised 12-month saving
2026-07-16$133First month 50% off$66$66
2026-07-19$133none$133$0
2026-07-21$133First month 50% off$66$66
2026-07-23$93First month 50% off$46$46
2026-07-29$74First month 50% off$37$37
2026-08-01$8540% off For 4 Month$51$136
2026-08-05$10140% off For 4 Month$61$162
2026-08-12$8640% off For 4 Month$52$138
2026-08-16$10040% off For 4 Month$60$160
2026-08-20$7740% off For 4 Month$46$123
2026-08-22$11040% off For 4 Month$66$176

The discount percentage never changed. The number it is a percentage of changed eight times in six weeks.

Between 20 and 22 August the advertised saving rose from $123 to $176 while the first month rose from $46 to $66. Both are consequences of the same list-price move: a saving expressed as a fixed fraction grows when the base grows. A larger saving on the page does not imply a lower price.

This unit is not unusual. Across the 4,904 units that took the four-month promotion on 1 August, the median unit saw 7 list-price changes in 44 days; this one saw 8, placing it at the 74th percentile. The 20 August fall followed by a 22 August rise occurred in 3,387 of the 3,404 such units observed on both days — 99.5%. Of those, 37% ended above their pre-20-August price, at a median of +$15; this unit ended +$33, so its direction is typical and its magnitude is on the larger side.

Reproduce it: python analysis/unit_trace.py --sku V_599982. Any SKU in the log can be traced the same way, including ones that contradict this one.

Merger week

The only place in the data where waves land on three consecutive days.

July 23, 24 and 25 are consecutive waves — 33,497, 13,979 and 13,961 units. Nothing else in the observation period repeats on consecutive days. That window is the same one in which advertised store count grew from 3,539 to 4,637, covered on the merger before/after page.

Stated as a lead, not a finding: the coincidence of three consecutive repricing waves with a large inventory integration is suggestive, and this dataset cannot establish that one caused the other. Recorded here so it can be tested against the next integration event rather than argued from a single case.

What this cannot show

Advertised, not transacted. These are published online rates. What a renter negotiates, or pays after a promotion, is not visible here and is not claimed.

One operator. Every figure on this page describes the one operator this site tracks. Nothing here generalises to the industry.

Daily resolution. Snapshots are taken once per day, so two changes to the same unit inside twenty-four hours are recorded as one net change. A "wave" is therefore a day on which a great many rates differed from the day before — not necessarily a single decision.

Six weeks. The observation period runs 11 July to 23 August 2026 — 44 consecutive days with a snapshot on every one. Twelve events is enough to see a pattern and not enough to establish a cadence.

No motive. Date, size and direction are observable. Why is not.