# Build a Full Financial Model from Scratch

This guide walks you through building a full financial model in Model Reef without relying on an existing template. You will create structure, variables, timing logic and drivers, then review the automatically generated financial statements and valuation outputs.

## Before you start

You should have:

* A clear idea of how the business makes money (products, services, contracts).
* A basic sense of cost structure (COGS, opex, staff, capex, debt).
* Any historical data you want to use (optional but recommended).

You do not need a spreadsheet. All modelling is done directly inside Model Reef using variables and drivers.

## What you will build

By the end of this guide you will have:

* A branch structure that represents the business.
* Core variables for revenue, COGS, opex, staff, tax, assets, liabilities and equity.
* Timing rules that control accruals, cash timing, AR and AP.
* Automatically generated P\&L, Balance Sheet, Cashflow Statement and Cash Waterfall.
* A baseline valuation using FCFF and FCFE.

{% stepper %}
{% step %}

### Create a new model

* Go to your workspace and click **New Model**.
* Choose:
  * **Currency** for the model.
  * **Base periodicity** (monthly is typical, weekly for high frequency cash).
  * **Model start date** and **end date**.
* Confirm and open the empty model.

Model Reef now creates an empty structure with a single root branch and blank statements.
{% endstep %}

{% step %}

### Design the branch structure

Branches represent business units, entities, products or projects.

* Decide how you want to segment the business. Common patterns:
  * Divisions (Retail, Online, Wholesale).
  * Entities (HoldCo, OpCo A, OpCo B).
  * Projects (Project A, Project B).
* In the branch panel:
  * Create one branch for each division or entity.
  * Keep the root branch as **Group** or **Consolidated**.
* For shared costs:
  * Plan a **Shared** or **Central** branch for overheads.

You now have the structural backbone for your model.
{% endstep %}

{% step %}

### Add core revenue variables

Revenue is the main driver of the model.

For each revenue stream:

* Select the appropriate branch.
* Create a **Revenue variable** with a clear name, for example:
  * `Revenue - Online Subscriptions`
  * `Revenue - Retail Stores`
* In the revenue modal, set:
  * **Start date** and **end date** for the revenue stream.
  * **Units and price**:
    * Either enter units and price directly.
    * Or link to drivers (for example units and price drivers in the Data Library).
  * **Frequency** (monthly, quarterly, annual) and any **seasonality**.
  * **Delay** for cash timing to model AR (for example 30 days, 45 days, 60 days).

Repeat for each major revenue stream.
{% endstep %}

{% step %}

### Add COGS and margin structure

For each revenue stream or group of streams:

* Create **COGS variables** in the same branch or in a COGS sub branch.
* Set:
  * **Type** to COGS.
  * **Behaviour**:
    * Cost per unit (linked to the same unit driver as revenue).
    * Percentage of revenue (via formula: `COGS = Revenue × cost_margin`).
  * **Delay** for supplier payment terms to create AP.
* Check the P\&L preview in the variable modal to ensure:
  * Revenue and COGS patterns look sensible.
  * Gross profit and gross margin behave as expected.
    {% endstep %}

{% step %}

### Add opex and staff

* Create **Opex variables** for major expense categories:
  * Rent, utilities, marketing, software, other overheads.
* For each opex variable:
  * Choose a frequency (monthly, quarterly).
  * Decide whether amounts are fixed or driver based.
  * Set delays for payment timing (for AP behaviour).
* Create **Staff variables** for payroll:
  * Use staff type variables to model salary, superannuation and payroll tax.
  * Link to headcount drivers or enter fixed headcount values.
  * Set pay frequency (weekly, fortnightly, monthly) and delays.

Opex and staff will automatically flow into EBITDA and net cashflows.
{% endstep %}

{% step %}

### Add tax, capex and debt

Tax

* Open the tax settings or create a **Tax variable** if your configuration allows.
* Set the effective tax rate per entity or consolidated group.
* Choose tax payment frequency (monthly, quarterly, annual).

Capex and depreciation

* For each major asset:
  * Create an **Asset variable**.
  * Enter purchase cost and purchase date.
  * Set depreciation method (straight line, reducing balance or units).
  * Set asset life.
* Confirm:
  * Depreciation appears below EBITDA in the P\&L.
  * Capex appears in Investing Cashflow.
  * Asset balances decline over time.

Debt

* For each loan:
  * Create a **Liability variable**.
  * Define:
    * Principal.
    * Interest rate.
    * Term and amortisation pattern.
    * Drawdown timing.
  * Set payment frequency and any bullet repayments.
* Confirm:
  * Interest appears in the P\&L.
  * Loan balances adjust in the Balance Sheet.
  * Drawdowns and repayments appear in Financing Cashflow.
    {% endstep %}

{% step %}

### Configure equity and opening balances

If you are modelling an existing business:

* Use opening balance tools or variables to enter:
  * Opening cash.
  * Existing assets and liabilities.
  * Opening retained earnings and share capital.
* For new capital injections:
  * Create **Equity variables** with:
    * Injection amounts.
    * Timing of injections.
  * Confirm:
    * Share capital increases in the Balance Sheet.
    * Cash increases in the Cashflow Statement.
      {% endstep %}

{% step %}

### Review statements and Cash Waterfall

Open the system reports:

* **P\&L**
  * Check Revenue, COGS, Gross Profit, Opex, Staff, EBITDA, Depreciation, EBIT, Interest, Tax and NPAT.
* **Balance Sheet**
  * Ensure Assets = Liabilities + Equity.
  * Confirm AR, AP, loans and equity behave as expected.
* **Cashflow Statement**
  * Verify Operating, Investing and Financing sections.
* **Cash Waterfall**
  * Check the bridge from EBITDA to net cash:
    * Change in Net Working Capital.
    * Capex.
    * Debt movements.
    * Equity movements.
    * Dividends.

If anything looks wrong, trace back to the underlying variables using drilldown.
{% endstep %}

{% step %}

### Set valuation assumptions

* Open the valuation settings.
* Set:
  * WACC for FCFF discounting.
  * Equity discount rate for FCFE.
  * Terminal multiple and / or terminal growth rate.
  * Purchase price if modelling a transaction.
* Review valuation outputs:
  * Project and equity NPV.
  * IRR.
  * Money multiple.
  * Payback period.
    {% endstep %}
    {% endstepper %}

## Check your work

Use this checklist:

* Branch structure matches the real business.
* Every major revenue stream has at least one revenue variable.
* COGS correctly links to units or revenue.
* Opex and staff are modelled with sensible timing and frequencies.
* Tax, capex and debt rules are configured.
* Balance Sheet balances in every period.
* Cash Waterfall reconciles to Cashflow Statement.
* Valuation outputs look broadly plausible.

## Troubleshooting

<details>

<summary>Balance Sheet does not balance</summary>

Check opening balances and ensure every asset or liability has a valid counterpart equity or retained earnings entry.

</details>

<details>

<summary>Cash pattern looks odd</summary>

Inspect delay fields for revenue, COGS and opex. Incorrect delays create unexpected AR or AP swings.

</details>

<details>

<summary>Valuation is extremely volatile</summary>

Look for unrealistic terminal multiples, growth rates or discount rates.

</details>

## Related guides

* [Financial Services, Lending & Fintech](/use-cases/financial-services-lending-and-fintech.md)
* [Financial Outputs & Valuation](/help/financial-outputs-and-valuation.md)
* [EBITDA Logic](/help/financial-outputs-and-valuation/ebitda-logic.md)
* [Formula Editor Layout](/syntax/formula-syntax/formula-editor-layout.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.modelreef.io/how-tos/core-modelling/build-a-full-financial-model-from-scratch.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
