By MCP Analytics Team | Published , updated
Churn in SaaS and readmission in healthcare are both questions of how long until something happens, so the same survival methods often apply. The vocabulary and the traps differ.
The analyses filed under this industry. Each card opens the analysis page, where you can run it on a file.
Budget against actual is the monthly finance question. This runs on the library's sample budget file.
The data. standard_variance_analysis.csv, the published sample file for Budget vs Actual (Variance Analysis): 22 rows; columns line_item, budget, actual. Sample data, not a customer's.
The calculation. Python, standard library only. This exact code ran against the file when this page was built, and printed the output below it.
import csv
rows = list(csv.DictReader(open("standard_variance_analysis.csv")))
gaps = sorted(((float(r["actual"]) - float(r["budget"]),
r["line_item"], float(r["budget"])) for r in rows),
key=lambda g: -abs(g[0]))
for gap, item, budget in gaps[:4]:
print(item, f"{gap:+,.0f}", f"({gap / budget:+.1%} of budget)")
print("lines exactly on budget:", sum(1 for g in gaps if g[0] == 0))
Subscription revenue -108,000 (-4.5% of budget)
Contractors +65,100 (+31.0% of budget)
Services revenue -45,600 (-12.0% of budget)
Cloud hosting +31,900 (+19.0% of budget)
lines exactly on budget: 3
What it says. Ranked by size of the gap in money, Subscription revenue leads (-108,000, -4.5%). In percent the picture changes: among those four lines Contractors moved furthest from its budget (+31.0%). The sign means opposite things on the two sides of the ledger: a minus on revenue is a shortfall, a plus on a cost line is an overspend.
What it does not say. A variance shows where the budget and the result parted, not why. Splitting it into price, volume and timing effects needs more columns than this file has.
Run Budget vs Actual (Variance Analysis) on this file or your own, or open its stored sample report.
The stored sample report for Benford's Law Screening. Each analysis has its own report layout; open its page to see what it returns.
Tell us what went wrong, in your own words. We capture the page you're on automatically, so no need to describe where you are.