Variance analysis

FX Variance Bridge

Separate constant-currency performance from exchange-rate movement, with a bridge that reconciles to reported actuals and names the residual when it does not.

Save or open an analysis file

Download a copy of the current inputs and answer to keep on your device. The file contains financial values and labels and is not encrypted. Opening it here stays in this browser; nothing is uploaded or automatically saved on this device. Keep the file somewhere you trust.

An opened file keeps its original answer. Recalculate separately when you want a result from the current method. Account workspace saves currently keep inputs only.

Review FX across months and P&L lines

Translate each entity/line/month using its supplied rate, then sum translated amounts. Compare those calculations with your reported figures. Files stay in this page session; this review is separate from the calculator below and is not included in account saves or its portable analysis files.

Required CSV/TSV columns and method

Entity, LineItem, Nature, BaselinePeriod, ComparisonPeriod, Currency, ReportingCurrency, BaselineLocal, ComparisonLocal, BaselineRate, ComparisonRate, RateConvention, RateBasis, BaselineReported, ComparisonReported, RowRole

Use YYYY-MM periods, income/expense natures and detail/subtotal roles. Every entity/line needs each monthly pair, including explicit zero observations where applicable. Period windows must be contiguous and paired in order. RateConvention is reporting_per_local or local_per_reporting; RateBasis describes the rates you supplied. Expenses use positive amounts for costs and negative amounts for reversals. Declared subtotals are excluded, not independently validated.

Operational = local amount change × baseline rate. FX = comparison local amount × rate change; interaction is already included. Rates are normalized to reporting currency per local unit before calculation. This is attribution using your rates, not an accounting compliance determination, transaction/settlement FX or hedge accounting. No annual average rate is substituted.

Import a table from Excel or CSV

Read a file locally, choose its table or range, and review the mapping before replacing inputs. No file is uploaded. Macros and formulas are never run. Account saves keep the imported input rows only; downloaded analysis files can also keep source references.

Input data

Enter rates in whichever direction your source uses, then declare it below.

Rate direction and number format
Rate direction
Number format

Applies to what you type and to every figure on the page. Switching rewrites the numbers already in the table.

Which way round are your rates?

Directin use
Reporting currency per 1 local unit
1 CAD = 0.8 USD
Indirect
Local currency per 1 reporting unit
1 USD = 1.25 CAD

Enter your rates either way round — just make sure the matching button is selected.

Switching direction re-reads the numbers already typed. 0.80 as direct is 1 CAD = 0.80 USD. The same 0.80 as indirect is 1 USD = 0.80 CAD. To keep the bridge you have, invert the rates instead.

Canada budget rate 0.8 reads as 1 CAD = 0.8 USD. Under the other direction the same number would mean 1 USD = 0.8 CAD.

FX variance inputs by entity. Rates are entered as USD per 1 local unit.
EntityLocal currencyBudget localActual localBudget FXUSD per 1 local unitActual FXUSD per 1 local unit · Not stated
= 1 USD per USD= 1 USD per USD
= 1.25 CAD per USD= 1.6129 CAD per USD
= 0.769231 GBP per USD= 1 GBP per USD
= 0.909091 EUR per USD= 1.16279 EUR per USD

Tip: paste a rectangular range from Excel or Sheets.

Your financial data is processed locally in your browser and is not uploaded to Consilium.

Reported variance

+$6.80m

Underlying Revenue was $17.30m above budget at constant currency, but a $10.50m FX headwind partly offset it, leaving reported Revenue $6.80m above budget.

Operational variance
+$17.30m
FX impact
-$10.50m
Actual reported
$61.30m

FX waterfall

Budget to reported actual, through constant currency

Adds up

Budget

$54.50m

Operational

+$17.30m

FX

-$10.50m

Actual

$61.30m

Show as table
Financial bridge values
LineValueContext
Budget$54.50mEndpoint
Operational+$17.30mfavourable
FX-$10.50munfavourable
Actual$61.30mEndpoint
FX is measured on actual local volume

Largest FX impacts

Ranked by absolute contribution to total FX movement

Operational and FX variance by entity, ranked by absolute FX movement.
EntityActual rate appliedNot statedOperationalFXFX share
France · EUR1 EUR = 0.86 USD+$4.40m-$3.60m34.3%
Canada · CAD1 CAD = 0.62 USD+$4.00m-$3.60m34.3%
United Kingdom · GBP1 GBP = 1 USD+$3.90m-$3.30m31.4%
United States · USD1 USD = 1 USD+$5.00m$0.00m0.0%

Take the operational bar further

Operational is the local-currency movement translated at the budget rate. What is price, what is volume and what is mix inside it is a separate analysis.

Price Volume Mix Analysis →

Next tools

What has been checked

The calculation adds up from the entered rows. Business meaning and source completeness have not been independently verified.

  • Arithmetic agreement does not verify the selected source, period, business meaning or statement completeness.
  • This is the current calculation, not an immutable historical snapshot.
  • FX includes the rate/volume interaction; a separately displayed interaction is a split of FX, not an additional driver.
  • Entity names are entered labels, not independently confirmed entity identities.

Period labels are entered text; a monthly dataset comparison is not currently linked.

Source references: input row 1, input row 2, input row 3, input row 4. Imported references identify the selected source at import; editing a row clears its direct reference. Account saves keep input rows only.

Create an editable PowerPoint slide locally. The notes include calculation values, period labels and source references, including source file names when present. Edits in PowerPoint are not recalculated. No file is uploaded.

Reuse the analysis

Copy the summary or export full-precision row data.

Transparent by design

How this calculation works

Rates may be entered in either direction. Whichever you declare, the bridge restates them to reporting currency units per one local unit before calculating, so both readings of the same pair give the same answer. It calculates at full precision and rounds only for display.

Constant currency here is budget-rate constant currency: actual local amounts translated at the budget rate. FX is then measured on the actual local volume, so the interaction between the rate movement and the volume movement — the local growth that was never budgeted for, translated at the change in rate — sits inside the FX step rather than beside it.

Whether a movement reads as favourable follows the metric’s nature, so a falling expense and a rising revenue are both coloured as good news. Asset and liability movements use neutral colours and describe increases or decreases. The FX step is retranslation, and a gain or loss already booked in local currency sits inside the actual local amounts: it is translated at the budget rate in the operational step and retranslated with everything else in the FX step, so there is no separate transaction-exposure input. Nothing here is a hedge, a translation reserve or an average-rate adjustment; none of those is inferred from the figures you enter.

Rate restatement

Local per reporting entry → 1 ÷ entered rate

Budget reported

Budget local currency × Budget FX rate

Constant currency

Actual local currency × Budget FX rate

Operational variance

(Actual local − Budget local) × Budget FX rate

FX variance

Actual local currency × (Actual FX rate − Budget FX rate)

Interaction, inside FX

(Actual local − Budget local) × (Actual FX rate − Budget FX rate)

Actual reported

Actual local currency × Actual FX rate

This is one variance. Consilium is being built to explain the full reporting package.

Move from a manual bridge to a recurring financial review.

Explore Consilium

Keep this analysis for later. Saving is optional.

Feedback

Save this analysis

We will store the name and this tool’s supported calculation inputs, assumptions, labels, currency and number format, plus its identifier, save dates and your account ID. Outputs are recalculated when you open it.

Chart export styling, materiality filters, monthly review datasets and connected supporting analyses are not included in account saves.

No source workbook or chart file is uploaded. Your inputs stay in the browser until you sign in and confirm saving. A temporary draft stays in this tab for up to 30 minutes while you sign in.

Saved inputs are stored on Cloudflare in Western Europe until you delete them or your account. Deleted data may remain in restricted, encrypted backups in Asia-Pacific until their 30-day expiry. A separate encrypted recovery log keeps record IDs, protected email fingerprints and deletion or unsubscribe times for 35 days so a restore does not bring deleted data back. It contains no financial inputs. Expiry runs automatically and may not remove records at the exact deadline.