Arte SheetsLearn. Try. Understand.

Treasury & Corporate Finance

Miller-Orr Stochastic Cash Control Bands: Return Point and Upper Limit

Compute the Miller-Orr cube-root cash control spread Z, asymmetric one-third return point RP = L + Z/3, and upper sweep threshold H = L + Z for volatile daily cash flows.

Avoid the midpoint trap in Miller-Orr cash band design

When daily net cash inflows and outflows fluctuate randomly with standard deviation sig_day, Baumol-Tobin steady depletion does not apply. Miller and Orr (1966) let cash wander untouched between a lower safety floor L and an upper ceiling H = L + Z, intervening only at the boundaries to reset cash to a target return point RP = L + Z/3 — one-third of the band above L, NOT the halfway midpoint L + Z/2.

Test clean hand-checkable inputs: minimum safety balance L = 50,000 (B2), transfer cost b = 45 (B3), daily cash-flow SD sig_day = 10,000 (B4, so variance = 10^8), and daily yield r_day = 0.000125 (B5, i.e., 4.5% / 360). Inside the cube root, (3 * 45 * 10^8) / (4 * 0.000125) = 27 * 10^12, whose exact cube root is 30,000! Thus spread Z = 3 * 30,000 = 90,000, optimal return point RP = 50,000 + 30,000 = 80,000 (whereas a naive midpoint gives 95,000), and upper ceiling H = 140,000.

Control Band MetricMiller-Orr FormulaExact Output
One-Third Step (Z / 3)(3 * b * sig_day^2 / (4 * r_day))^(1/3)30,000
Total Control Spread Z3 * (Z / 3)90,000
Optimal Return Point RPL + Z / 3 (NOT midpoint L + Z / 2)80,000 (vs 95,000 trap)
Upper Sweep Limit H & Avg CashH = L + Z; Avg = L + (4/9)*ZH = 140,000; Avg = 90,000

Miller-Orr Return Point RP Formula

Raise (3 * b * sig_day^2) / (4 * r_day) to the 1/3 power and add directly to the minimum floor L.

=IF(OR(B3 <= 0, B4 <= 0, B5 <= 0), "Invalid Policy Input", ROUND(B2 + ((3 * B3 * B4^2) / (4 * B5))^(1 / 3), 2))

Total Spread Z, Upper Limit H & Volatility Stress Test

Because Z scales with the cube root of variance (power 2/3 of standard deviation), multiplying daily cash-flow volatility sig_day by 8 (from 10,000 to 80,000) multiplies variance by 64 and widens Z by 64^(1/3) = 4x (from 90,000 to 360,000), raising RP to 170,000 and H to 410,000.

=LET(l_min, B2, b_fee, B3, sig_d, B4, r_day, B5, IF(OR(b_fee <= 0, sig_d <= 0, r_day <= 0), "Invalid Policy Input", ROUND(l_min + 3 * ((3 * b_fee * sig_d^2) / (4 * r_day))^(1 / 3), 2)))

Try the example

Use the original values or change them to test your understanding.

Further reading