Skip to main content

Variance Analysis Guide

Konsolidat compares actual financial results against budget to produce variance measures with favorable/unfavorable classification.

Variance Data Flow

graph LR
TB[gold_trial_balance<br/>Actual amounts] --> VAR[gold_variance_analysis]
BUD[gold_spread_budget<br/>Budget amounts] --> VAR
VAR --> VYTD[gold_variance_ytd<br/>YTD variance]
VAR --> VQ[gold_variance_quarterly<br/>Quarterly variance]
VAR --> API[Frappe API<br/>scenario=variance]

Variance Measures

Five measures are available through the variance scenario:

MeasureFormulaDescription
actual_amountFrom gold_trial_balanceActual period amount
budget_amountFrom gold_spread_budgetBudget period amount
variance_absactual_amount − budget_amountAbsolute variance
variance_pctvariance_abs / budget_amountPercentage variance
variance_favorableSee below1 if favorable, 0 if unfavorable

Favorable/Unfavorable Logic

The definition of "favorable" depends on the account type:

Account TypeFavorable WhenRationale
RevenueActual > BudgetHigher revenue is good
ExpenseActual < BudgetLower spending is good
If account_type = 'Revenue':
variance_favorable = 1 when actual_amount > budget_amount
If account_type = 'Expense':
variance_favorable = 1 when actual_amount < budget_amount

Tests

TestAssertion
assert_favorable_revenueRevenue: favorable=1 when actual > budget
assert_favorable_expenseExpense: favorable=1 when actual < budget
assert_variance_abs_formula|variance_abs − (actual − budget)| ≤ 0.01

Querying Variance Data

From Excel

' Absolute variance (default for EPM_VARIANCE)
=EPM_VARIANCE("USMF", 2025, 5, "6100")

' Equivalent to:
=EPM("USMF", 2025, 5, "6100", "variance_abs", "variance")

' Other variance measures:
=EPM("USMF", 2025, 5, "6100", "actual_amount", "variance")
=EPM("USMF", 2025, 5, "6100", "budget_amount", "variance")
=EPM("USMF", 2025, 5, "6100", "variance_pct", "variance")
=EPM("USMF", 2025, 5, "6100", "variance_favorable", "variance")

Period Ranges

Variance supports the same period range codes:

=EPM_VARIANCE("USMF", 2025, "Q1", "6100") ' Q1 variance
=EPM_VARIANCE("USMF", 2025, "H1", "6100") ' H1 variance
=EPM_VARIANCE("USMF", 2025, "FY", "6100") ' Full year variance

With Dimension Filters

=EPM_VARIANCE("USMF", 2025, "FY", "6100", "SALES", "SALES")

YTD Variance

The gold_variance_ytd model provides cumulative year-to-date comparison:

ColumnDescription
ytd_actualCumulative actual through the period
ytd_budgetCumulative budget through the period

Useful for tracking whether the business is on track as the year progresses.

Quarterly Variance

The gold_variance_quarterly model aggregates variance by quarter (Q1–Q4), useful for quarterly business reviews.

Prior Year Comparison

Beyond budget variance, gold_prior_year_comparison provides year-over-year analysis:

ColumnDescription
current_amountCurrent year period amount
prior_year_amountSame period, prior year
yoy_variance_abscurrent_amount − prior_year_amount

Building a Variance Report in Excel

ABCDE
1Entity:USMFYear:2025
2AccountActualBudgetVarianceFav?
3Revenue (4100)=EPM("USMF",2025,"FY","4100","actual_amount","variance")=EPM("USMF",2025,"FY","4100","budget_amount","variance")=EPM_VARIANCE("USMF",2025,"FY","4100")=EPM("USMF",2025,"FY","4100","variance_favorable","variance")
4Expenses (6100)............

Use conditional formatting on column E: 1 = green (favorable), 0 = red (unfavorable).

Next Steps