flux-analysis

$npx mdskill add vm0-ai/vm0-skills/flux-analysis

Decompose financial variances into actionable drivers and narratives.

  • Analyzes budget versus actuals and period-over-period revenue shifts.
  • Requires structured financial datasets with price and volume metrics.
  • Calculates quantity, pricing, and composition components automatically.
  • Generates waterfall charts and text summaries for variance reviews.

SKILL.md

.github/skills/flux-analysisView on GitHub ↗
---
name: flux-analysis
description: Decompose financial variances into underlying drivers and produce narrative explanations with waterfall bridge analysis. Use for budget vs actual analysis, period-over-period comparison, revenue variance decomposition, expense variance analysis, variance commentary, waterfall charts, forecast accuracy measurement, or P&L flux review.
---

## Decomposition Techniques

### Price x Volume Separation

The foundational split for any metric expressible as unit price multiplied by quantity.

**Two-factor formulas:**
```
Total Movement = Actual Result - Baseline (budget or prior period)

Quantity Component  = (Actual Units - Baseline Units) x Baseline Unit Price
Pricing Component   = (Actual Unit Price - Baseline Unit Price) x Actual Units

Check: Quantity Component + Pricing Component = Total Movement
       (when the interaction term is absorbed into one of the two factors)
```

**Three-factor formulas (isolating composition shifts):**
```
Quantity Component    = (Actual Units - Baseline Units) x Baseline Price x Baseline Mix Weights
Pricing Component     = (Actual Price - Baseline Price) x Baseline Units x Actual Mix Weights
Composition Component = Baseline Price x Baseline Units x (Actual Mix Weights - Baseline Mix Weights)
```

**Worked example — top-line revenue:**
- Baseline plan: 10,000 units at $50/unit = $500,000
- Actual outcome: 11,000 units at $48/unit = $528,000
- Net movement: +$28,000 favorable
  - Quantity uplift: +1,000 units x $50 = +$50,000 (favorable — higher volume)
  - Pricing drag: -$2 x 11,000 = -$22,000 (unfavorable — reduced average selling price)

### Blended Rate / Composition Separation

Applicable when aggregated results blend multiple segments with distinct unit economics.

**Formulas:**
```
Rate Component = Sum across segments of [Actual Volume_i x (Actual Rate_i - Baseline Rate_i)]
Composition Component = Sum across segments of [Baseline Rate_i x (Actual Volume_i - Proportional Volume_i at Baseline Mix)]
```

**Worked example — gross margin compression:**
- Segment X earns 60% margin; Segment Y earns 40% margin
- Plan assumed a 50/50 split -> blended 50% margin
- Actual split was 40/60 -> blended 48% margin
- The 2-point margin decline is attributable to the shift toward the lower-margin segment

### People-Cost Decomposition

Purpose-built for analyzing compensation and headcount-driven expense lines.

```
Total Compensation Movement = Actual Spend - Planned Spend

Break into:
1. Staffing level effect     = (Actual Headcount - Plan Headcount) x Plan Average Cost
2. Per-capita cost effect    = (Actual Average Cost - Plan Average Cost) x Plan Headcount
3. Composition effect        = Residual from shifts in seniority, department, or geography mix
4. Phasing effect            = Impact of hires arriving earlier or later than the plan assumed
5. Attrition benefit         = Savings from unplanned departures (partially offset by replacement and vacancy costs)
```

### Functional Expense Decomposition

For operating cost categories where a price-times-volume model does not apply naturally.

```
Total OpEx Movement = Actual Operating Costs - Planned Operating Costs

Segment into:
1. Headcount-linked costs       (wages, benefits, payroll taxes, recruiting fees)
2. Activity-linked costs        (cloud hosting, payment processing fees, sales commissions, freight)
3. Discretionary programs       (travel, conferences, outside services, campaign spend)
4. Committed / fixed costs      (facility leases, insurance, enterprise software licenses)
5. Non-recurring charges        (severance, litigation, asset write-downs, project-specific outlays)
6. Timing / phasing differences (spend that shifted between periods relative to the plan)
```

## Significance Thresholds & Prioritization

### Calibrating Thresholds

Thresholds govern which movements warrant formal investigation and written explanation. Base them on:

1. **Overall materiality:** Usually 1-5% of a primary benchmark (revenue, total assets, or net income)
2. **Relative line-item scale:** Apply tighter percentage gates to larger balances
3. **Historical volatility:** Allow wider bands for inherently variable accounts to filter noise
4. **Decision relevance:** Would this size of movement influence a management decision or board discussion?

### Suggested Threshold Grid

| Comparison Basis | Suggested Dollar Gate | Suggested Percentage Gate | Trigger Logic |
|---|---|---|---|
| Actual vs. annual plan | Entity-specific | 10% | Whichever is breached first |
| Actual vs. same period last year | Entity-specific | 15% | Whichever is breached first |
| Actual vs. latest forecast | Entity-specific | 5% | Whichever is breached first |
| Sequential month-over-month | Entity-specific | 20% | Whichever is breached first |

*Set the dollar gate at roughly 0.5-1% of revenue for income-statement lines.*

### Triage Order When Multiple Items Exceed Thresholds

1. **Greatest absolute dollar impact** — largest influence on the bottom line
2. **Greatest percentage deviation** — may signal a process breakdown or data error
3. **Counter-trend movements** — direction opposite to what history or forecasts predicted
4. **Newly emerged variances** — items previously on track that have just diverged
5. **Compounding variances** — gaps that have widened in each of the last several periods

## Writing Effective Variance Narratives

### Recommended Structure

```
[Line Item]: [Favorable / Unfavorable] movement of $[amount] ([X]%)
relative to [budget / prior period / forecast] for [reporting period]

Primary driver: [Brief label]
[Two to three sentences explaining the business cause, quantifying each
contributing factor where possible.]

Outlook: [One-time event / Likely to persist / Improving / Worsening]
Next step: [No action / Monitor / Deeper review / Adjust forecast]
```

### Quality Criteria

Strong narratives consistently satisfy these tests:

- **Precise:** Names concrete factors rather than restating the variance itself
- **Measured:** Attaches dollar or percentage weight to each cited driver
- **Explanatory:** Addresses why the movement occurred, not merely that it did
- **Prospective:** States whether the movement is expected to continue, reverse, or evolve
- **Directive:** Identifies any follow-up action or decision prompted by the finding
- **Compact:** Two to four sentences — not padded filler

### Pitfalls to Avoid

- Restating the outcome as its own cause ("Revenue rose because revenue was higher")
- Labeling a variance as "timing" without specifying what shifted and when normalization is expected
- Calling something "one-time" without describing the actual event
- Sweeping a material movement under "various small items" instead of decomposing further
- Explaining only the dominant driver while ignoring meaningful offsets
- Using vague qualifiers ("elevated," "slightly higher") without attached numbers

## Bridge / Waterfall Presentation

### Concept

A bridge (waterfall) chart traces the path from a starting value to an ending value through a sequence of additive and subtractive contributors. It is the visual companion to variance decomposition.

### Data Architecture

```
Starting point:   [Baseline figure — plan, prior period, or forecast]
Contributors:     [Ordered list of signed driver amounts]
Ending point:     [Actual figure]

Integrity check:  Starting point + Sum(all contributors) = Ending point
```

### Text-Format Bridge (When No Charting Tool Is Available)

```
BRIDGE: Operating Expenses — Q4 Actual vs. Q4 Plan

Q4 Planned OpEx                                       $8,000K
  |
  |--[+] Incremental headcount above plan              +$500K
  |--[+] Unplanned outside counsel fees                +$200K
  |--[-] Open-role savings (delayed hiring)            -$350K
  |--[-] Travel spend below budget                     -$180K
  |--[+] Cloud infrastructure overrun                  +$130K
  |--[-] Marketing program deferrals                   -$100K
  |
Q4 Actual OpEx                                        $8,200K

Net Movement: +$200K (+2.5% unfavorable)
```

### Companion Reconciliation Table

| Driver | Amount | Share of Total Movement | Running Total |
|---|---|---|---|
| Incremental headcount | +$500K | 250% | +$500K |
| Outside counsel | +$200K | 100% | +$700K |
| Open-role savings | -$350K | -175% | +$350K |
| Travel underspend | -$180K | -90% | +$170K |
| Cloud overrun | +$130K | 65% | +$300K |
| Marketing deferrals | -$100K | -50% | +$200K |
| **Net movement** | **+$200K** | **100%** | |

*Individual shares can exceed 100% when favorable and unfavorable drivers offset each other.*

### Presentation Guidelines

1. Sequence drivers from most favorable to most unfavorable (or in a logical business narrative order)
2. Cap the driver count at 5-8; roll smaller items into an "All other" bucket
3. Verify arithmetic: opening value plus all drivers equals closing value
4. Use color to distinguish direction — green for favorable, red for unfavorable — in graphical renderings
5. Annotate each segment with both the dollar amount and a short label
6. Include a summary segment showing the net total movement

## Multi-Scenario Comparisons

### Three-Column Layout

| Line Item | Annual Plan | Latest Forecast | Actual | Plan Var ($) | Plan Var (%) | Forecast Var ($) | Forecast Var (%) |
|---|---|---|---|---|---|---|---|
| Revenue | $X | $X | $X | $X | X% | $X | X% |
| Direct costs | $X | $X | $X | $X | X% | $X | X% |
| Gross profit | $X | $X | $X | $X | X% | $X | X% |

### Choosing the Right Baseline

- **Actual vs. annual plan:** Governance and incentive evaluation; the plan is fixed at the start of the fiscal year
- **Actual vs. rolling forecast:** Operational steering and early-warning detection; the forecast is refreshed monthly or quarterly
- **Forecast vs. plan:** Gauges how management expectations have shifted since planning; highlights planning-accuracy gaps
- **Actual vs. prior period (sequential):** Reveals trend direction; especially useful for new ventures or post-acquisition integration where a plan may not yet exist
- **Actual vs. prior year (year-over-year):** Growth assessment adjusted for seasonality

### Tracking Forecast Precision

Measure forecast quality over time to tighten future planning:

```
Period Accuracy = 1 - |Actual - Forecast| / |Actual|

MAPE (Mean Absolute Percentage Error) = Mean of |Actual - Forecast| / |Actual| across all periods
```

| Month | Forecast | Actual | Deviation | Accuracy |
|---|---|---|---|---|
| Jan | $X | $X | $X (X%) | XX% |
| Feb | $X | $X | $X (X%) | XX% |
| ... | ... | ... | ... | ... |
| **Full Year** | | | **MAPE** | **XX%** |

### Reading Variance Trends Across Time

- **Persistently favorable:** Plans may be overly conservative (potential sandbagging)
- **Persistently unfavorable:** Targets may be unrealistic or execution is lagging
- **Widening unfavorable gap:** Performance is deteriorating or external conditions are shifting
- **Narrowing gap:** Forecast accuracy is improving through the year (a healthy signal)
- **Erratic swings:** Business is inherently unpredictable or the forecasting methodology needs refinement

More from vm0-ai/vm0-skills

SkillDescription
account-reconciliationPerform account reconciliations comparing general ledger balances against subledgers, bank statements, or external records. Use for bank reconciliation, GL-to-subledger reconciliation, intercompany reconciliation, balance sheet reconciliation, reconciling item analysis, outstanding item aging, or clearing open items.
agentphoneBuild AI phone agents with AgentPhone API. Use when the user wants to make phone calls, send/receive SMS, manage phone numbers, create voice agents, set up webhooks, or check usage — anything related to telephony, phone numbers, or voice AI.
ahrefsAhrefs SEO API for backlink and keyword analysis. Use when user mentions
amplitudeAmplitude product analytics API. Use when user mentions "Amplitude",
analysis-qaQuality-check a data analysis before sharing — verify joins, aggregations, denominators, time ranges, and metric definitions. Detect pitfalls like survivorship bias, average-of-averages, join explosion, timezone mismatches, incomplete periods, and selection bias. Includes documentation templates for reproducible analyses.
anthropic-managed-agentsAnthropic Managed Agents API for programmatically creating, running, and streaming AI agents on Anthropic's cloud infrastructure. Use when the user mentions "Managed Agents", "Anthropic agent sessions", or needs to create/run/stream an Anthropic agent with tool use (bash, git, web), attach GitHub repositories, or inject secrets via Vault. Do NOT use for standard Claude Messages API — use the Claude API skill instead.
apifyApify web scraping platform. Use when user mentions "scrape website",
asanaAsana API for tasks and projects. Use when user mentions "Asana", "asana.com",
atlassianAtlassian API for Confluence and Jira. Use when user mentions "Confluence
attioAttio REST API for AI-native CRM operations — manage companies, people, deals, and custom objects, plus notes, tasks, lists, and comments. Use when the user mentions "Attio", "CRM record", "create company", "add person", "list entry", "CRM note", or "CRM task".