Why revenue missed forecast
A revenue miss is rarely one thing. This build uses an invented clinic network. It splits the gap into five causes that add exactly to the total, so volume is never mistaken for price, and it writes the explanation from the numbers.
What this shows
- Five causes of the gap that add exactly to the total
- A change in what one billing code pays, and the size of its effect
- A drill from the network to a clinic to a billing code
- Commentary written from the numbers, ranked by size
How I use it
- Closing the month: finding the one or two lines behind most of a miss
- Telling price from volume before anyone reacts
- Writing the variance note so the text and the data agree
Explore the model below. It uses an invented company and invented numbers.
Explore the model
Illustrative model · Synthetic dataWide tables scroll sideways: swipe inside a table to see every column.
Sample build: why a clinic network missed its revenue forecast
An invented network of four clinics, billing five remote monitoring and care management codes for one month. Revenue came in under forecast. The bridge splits the gap into five causes that add exactly to it. A new fee schedule raises the rate for one code a lot and trims another. Drill from the network to a clinic to a billing code, and read the explanation the numbers write.
Invented network and numbers for illustration. Rates are rounded and illustrative, not the fee schedule.
What to try
- Press Without the fee change. The miss grows, because the new rate was covering part of it.
- Click East clinic. At the starting figures its miss is timing, which should post next month.
- Set the East share posted to 90 percent. The timing bar disappears.
- Split the network by billing code. The price change sits in two codes.
- Click North clinic, then Device supply. One code, three causes.
Fee schedule (invented change)
The forecast used last year's rates. The new schedule started this month.
What happened at the clinics
More levers (five)
Showing the network, one month. A plus sign raises revenue against the forecast and a minus sign lowers it. Amounts are in dollars and cents so every part adds exactly.
Forecast revenue
$245.4K
$245,430.00
Actual revenue
$234.8K
$234,835.20
Gap
-$10.6K
-$10,594.80, -4.3% of forecast
The bridge for the network, in the order the causes are swapped in
| Step | Amount | Biggest source | Share of forecast | Rank by size |
|---|---|---|---|---|
| Forecast revenue | $245,430.00 | 100.0% | ||
| Visits | -$8,181.00 | -$9,817.20 | -3.3% | 3 |
| Code mix | -$6,927.12 | -$4,082.40 | -2.8% | 5 |
| Price paid | +$21,022.74 | +$8,767.44 | +8.6% | 1 |
| Share collected | -$7,607.52 | -$6,873.12 | -3.1% | 4 |
| Timing | -$8,901.90 | -$8,901.90 | -3.6% | 2 |
| Actual revenue | $234,835.20 | 95.7% |
The network by clinic. Click a clinic to see its billing codes.
| Clinic | Forecast | Visits | Code mix | Price paid | Share collected | Timing | Actual | Gap |
|---|---|---|---|---|---|---|---|---|
| $98,172.00 | $0.00 | -$2,624.40 | +$8,767.44 | -$6,873.12 | $0.00 | $97,441.92 | -$730.08 | |
| $65,448.00 | -$9,817.20 | -$220.32 | +$4,902.12 | -$734.40 | $0.00 | $59,578.20 | -$5,869.80 | |
| $49,086.00 | $0.00 | $0.00 | +$4,325.40 | $0.00 | -$8,901.90 | $44,509.50 | -$4,576.50 | |
| $32,724.00 | +$1,636.20 | -$4,082.40 | +$3,027.78 | $0.00 | $0.00 | $33,305.58 | +$581.58 | |
| Total for the network | $245,430.00 | -$8,181.00 | -$6,927.12 | +$21,022.74 | -$7,607.52 | -$8,901.90 | $234,835.20 | -$10,594.80 |
- Visits
- More or fewer visits than forecast. A visit is one patient with a check-in in the month.
- Code mix
- A different number of units of each code billed per visit. Fewer added-time blocks per visit lowers revenue even when visits hold.
- Price paid
- A different rate paid for each unit. A fee schedule change lands here.
- Share collected
- A different share of the allowed amount actually paid, after denials and write-offs.
- Timing
- A different share of the month's collections posted before the month closed. The rest posts next month, so this gap should reverse.
All 8 integrity checks pass. See the Checks view below.
Commentary: the network
Written from the numbers above, largest cause first. It rewrites itself when you change the selection or the levers.
Revenue for the network was $234,835.20 against a forecast of $245,430.00, a miss of $10,594.80 (4.3%).
- Price paid added $21,022.74 (8.6% of forecast): higher rates were paid per unit. The biggest source was North clinic (+$8,767.44).
- Timing took off $8,901.90 (3.6% of forecast): more collections slipped past the month end than forecast, and they should post next month. The biggest source was East clinic (-$8,901.90).
- Visits took off $8,181.00 (3.3% of forecast): fewer visits than forecast. The biggest source was South clinic (-$9,817.20).
- Share collected took off $7,607.52 (3.1% of forecast): a smaller share of the allowed amount was collected. The biggest source was North clinic (-$6,873.12).
- Code mix took off $6,927.12 (2.8% of forecast): fewer units were billed per visit than forecast. The biggest source was West clinic (-$4,082.40).
Causes that lowered revenue total $31,617.54. Causes that raised it total $21,022.74.
Timing should reverse next month. Leaving it out, revenue is $1,692.90 below forecast.
The forecast used one set of assumptions for every clinic, built on last year's rates. The actual month differs in the places marked below. In this invented case the payer's new fee schedule raised the rate for the first 20 minutes of treatment management a lot and trimmed the rate for device supply a little. Neither is a real rate change, and the rates are rounded and illustrative, not the fee schedule. A visit is one patient with a check-in in the month.
Billing codes and rates per unit
| Billing code | Forecast rate | Actual rate | Change |
|---|---|---|---|
| Setup (99453)Setting the patient up on the device and teaching them to use it. Billed once for each patient, so units per visit is the share of visits that are for new patients. | $20.00 | $20.00 | 0% |
| Device supply (99454)The device is supplied and sends readings on at least 16 of the 30 days. | $45.00 | $43.00 | -4.4% |
| First 20 minutes (99457)Clinical staff time reviewing the readings and managing treatment, with at least one live two-way contact with the patient or caregiver. | $50.00 | $65.00 | +30% |
| Added 20 minutes (99458)Each further 20 minutes of treatment management in the same month. | $40.00 | $40.00 | 0% |
| Care management (99490)The first 20 minutes of clinical staff time in the month spent managing a patient with long-term conditions. The same minutes cannot also count toward remote monitoring. | $60.00 | $60.00 | 0% |
Visits and timing by clinic
| Clinic | Forecast visits | Actual visits | Forecast share posted | Actual share posted |
|---|---|---|---|---|
| North clinic | 1,200 | 1,200 | 90% | 90% |
| South clinic | 800 | 680 | 90% | 90% |
| East clinic | 600 | 600 | 90% | 75% |
| West clinic | 400 | 420 | 90% | 90% |
Units billed per visit, by clinic and code. Where the actual differs, the forecast is shown beneath it.
| Clinic | Setup | Device supply | First 20 minutes | Added 20 minutes | Care management |
|---|---|---|---|---|---|
| North clinic | 0.10 | 0.74forecast 0.80 | 0.70 | 0.40 | 0.20 |
| South clinic | 0.08forecast 0.10 | 0.80 | 0.70 | 0.40 | 0.20 |
| East clinic | 0.10 | 0.80 | 0.70 | 0.40 | 0.20 |
| West clinic | 0.10 | 0.80 | 0.70 | 0.25forecast 0.40 | 0.10forecast 0.20 |
Share of the allowed amount collected, by clinic and code
| Clinic | Setup | Device supply | First 20 minutes | Added 20 minutes | Care management |
|---|---|---|---|---|---|
| North clinic | 90% | 70%forecast 90% | 90% | 90% | 90% |
| South clinic | 90% | 90% | 90% | 90% | 80%forecast 90% |
| East clinic | 90% | 90% | 90% | 90% | 90% |
| West clinic | 90% | 90% | 90% | 90% | 90% |
Revenue for one clinic and one billing code is visits × units billed per visit × rate paid per unit × share collected × share posted in the month. The forecast fixes one value for each of the five. The actual month has another.
The bridge swaps the forecast values for the actual ones, one at a time, in a fixed order. The change in revenue at each swap is that cause. After the fifth swap, revenue equals the actual, so the five causes add exactly to the gap.
- Visits. More or fewer visits than forecast. A visit is one patient with a check-in in the month.
- Code mix. A different number of units of each code billed per visit. Fewer added-time blocks per visit lowers revenue even when visits hold.
- Price paid. A different rate paid for each unit. A fee schedule change lands here.
- Share collected. A different share of the allowed amount actually paid, after denials and write-offs.
- Timing. A different share of the month's collections posted before the month closed. The rest posts next month, so this gap should reverse.
Each swap is measured with the earlier swaps already made and the later ones still at forecast. When two causes act on the same revenue, such as a new rate and a clinic that posts late, the overlap lands on the cause that comes later in the order. Reversing the order moves some of the amount from one cause to another and never changes the total. Every amount is held in whole cents at each clinic and code, so every sum is exact.
Running revenue for the network, after each swap
| Step | Revenue | Change |
|---|---|---|
| Forecast | $245,430.00 | |
| Visits at actual | $237,249.00 | -$8,181.00 |
| Code mix at actual | $230,321.88 | -$6,927.12 |
| Price paid at actual | $251,344.62 | +$21,022.74 |
| Share collected at actual | $243,737.10 | -$7,607.52 |
| Timing at actual, which is actual revenue | $234,835.20 | -$8,901.90 |
The same gap in two orders, the network
| Cause | Fixed order | Reverse order | Shift |
|---|---|---|---|
| Visits | -$8,181.00 | -$8,927.82 | -$746.82 |
| Code mix | -$6,927.12 | -$6,097.68 | +$829.44 |
| Price paid | +$21,022.74 | +$21,251.70 | +$228.96 |
| Share collected | -$7,607.52 | -$8,640.00 | -$1,032.48 |
| Timing | -$8,901.90 | -$8,181.00 | +$720.90 |
| Total gap | -$10,594.80 | -$10,594.80 |
The fixed order is visits, code mix, price paid, share collected, timing. The reverse order starts with timing and ends with visits.
These checks run again on every change. Each bridge is compared with revenue worked out straight from the drivers, and each level is compared with the levels below it. 8 of 8 pass.
- PassThe five causes add to the gap at every level30 bridges checked: the network, 4 clinics, 5 codes and 20 clinic and code pairs. Each one adds exactly.
- PassThe clinics add to the networkThe 4 clinics add exactly to the level above, for the forecast, the actual and each of the five causes.
- PassThe billing codes add to the networkThe 5 billing codes add exactly to the level above, for the forecast, the actual and each of the five causes.
- PassThe billing codes add to each clinicAll 4 clinics match the sum of their 5 codes.
- PassThe clinics add to each billing codeAll 5 codes match the sum of their 4 clinics.
- PassThere is one row for each clinic and code pair20 rows, 4 clinics by 5 codes.
- PassVisits, units and rates are not negative, and shares are between 0 and 100 percentEvery forecast and actual driver is in range.
- PassCodes billed once a month have at most one unit per visitSetup, device supply, the first 20 minutes and care management stay at one unit or less per visit.
The network: revenue $234,835.20 against a forecast of $245,430.00, $10,594.80 below forecast. The largest cause is price paid, +$21,022.74.