> For the complete documentation index, see [llms.txt](https://docs.fabricplan.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fabricplan.com/planning-sheets/how-tos/forecast-data-to-predict-future-trends/create-a-p-and-l-forecast.md).

# Create a P\&L forecast

Use the Forecast feature to extend the time horizon of a planning sheet by creating a visual measure for future periods. For example, if a planning sheet contains data for 2024 and 2025, create a forecast measure to project values for 2026. You can visualize future-period projections alongside historical or existing planning data without modifying the underlying planning data.

In this article, you learn to:

* Create a forecast using historical actuals as a baseline
* Create a zero-based forecast
* Top-down and bottom-up forecast allocation
* Lock forecast values
* Create statistical forecasts using Predict
* Generate deviation between budgets and forecasts

### Prerequsites

* Create a planning sheet and assign row and column dimensions.
* The column dimension should be a standard date hierarchy such as Year > Quarter > Month.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FlVbfL9HHxC4wpzlrGvd1%2Fimage.png?alt=media&amp;token=3a168231-6dae-448a-9c0d-f48a359addf8" alt=""><figcaption></figcaption></figure>

### Create a forecast from historical actuals

Configure forecasts using historical actuals as the starting point for future periods. This approach carries forward historical trends and values to provide a baseline for forecasting, which can then be adjusted in response to expected business changes.

1. In the **Model** ribbon, select **Forecast**.
2. The default measure name is set to *Forecast.* Set a custom name if required, then select the future period to forecast. Plan automatically populates the forecast period based on the existing data. Select **Next** to configure closed periods.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2F0EMvAUJNjOhoYp4OyKfe%2Fimage.png?alt=media&amp;token=2760309d-92a5-4f56-8c81-069b211a048b" alt=""><figcaption></figcaption></figure>

3. Closed periods represent past periods for which actual data is available. Forecast values for closed periods are locked and cannot be edited. Use an existing measure or formula to populate closed forecast periods.

To use existing measure values for closed forecasts, select **Link to Measure** and choose the measure from **Source Measure**. In this example, you populate closed periods with values from the *Actuals* measure. Select **Next** to configure open periods.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FB9JxoZwLcMJWOMMez5zZ%2Fimage.png?alt=media&amp;token=e930cc34-cbfa-4c69-aeca-7e657b849136" alt=""><figcaption></figcaption></figure>

4. To manually enter forecast data, select **Data Input** and retain the default **None** option for **Default Value.**

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FLqD3tVc5NhxUDot0xaBY%2Fimage.png?alt=media&amp;token=a2850a65-c425-442b-9a1d-ea3560bd449f" alt=""><figcaption></figcaption></figure>

5. To pre-populate open forecasts from historical data, expand the **Pre-fill Open Periods** section.
6. To initialize forecast values from a specific historical period:

* Configure **Copy from** with the measure that contains the source values.
* Set **Operation** to **Period Range**
* Define the periods to copy by specifying the **Source Range** as the historical period and the **Target Range** as the future period. Plan copies the values from the source range to the corresponding periods in the target range to initialize the forecast.

In this example, you initialize the 2026 *Budget* with the 2025 *Actuals*.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FmAVyHoWRv8KpQqCuB2Dc%2Fimage.png?alt=media&amp;token=ef6d47e7-27d0-412f-a4c9-3d393b245de6" alt=""><figcaption></figcaption></figure>

After saving the configuration, plan creates the *Budget* measure as a time extension for 2026. Notice that *Actuals* are not available for the forecast period.

* The *Budget* measure is locked for 2023, 2024, and 2025 and populated with *Actuals* according to the configuration in Step 3.
* The 2026 *Budget* remains available for forecasting.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2F12uOSJT1P2MbFdooy3VW%2Fimage.png?alt=media&amp;token=1893611a-415b-487d-9b3f-6e30362dc9a2" alt=""><figcaption></figcaption></figure>

7. To analyze specific periods in a forecast, select **Period** from the **Model** ribbon. Select the **Calendar** icon to define the required time range. To focus only on actual and forecast values, unselect **Show Closed Periods** to hide locked historical values from the view.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FnaKsQgkMz56hzjZDDKiU%2Fimage.png?alt=media&amp;token=39c3bd12-f2a6-4863-b3c8-ef28371e4cc0" alt=""><figcaption></figcaption></figure>

In Step 6, you selected **Period Range** to initialize the open forecast periods. Based on this configuration, plan creates the 2026 *Budget* by copying the corresponding *Actuals* values from 2025. This provides an initial forecast for 2026 using the values from the selected historical period.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2Fc9pERe01XBAXyMQvr4oJ%2Fimage.png?alt=media&amp;token=dd794681-6cd5-4cad-865f-b4e284e5e95e" alt=""><figcaption></figcaption></figure>

### Create a zero-based forecast

Use zero-based forecasts to enter new forecast values based on current assumptions, targets, or business expectations.

1. To create another forecast measure, expand the **Measures** pane and select **Add new measure.**

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2F1B0NE3kdDPJi2R1ocLjp%2Fimage.png?alt=media&amp;token=3e2aaf50-f567-44dd-a87b-58f16d6c9013" alt=""><figcaption></figcaption></figure>

2. Follow the same steps as in the previous section to configure the forecast timeframe and closed periods.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FvbPvmFfsXguIzEXzZjDp%2Fimage.png?alt=media&amp;token=02a8463f-38fb-404a-931e-2cb275f8b765" alt=""><figcaption></figcaption></figure>

3. In the **Open Period** configuration, ensure that you select **Data Input.** Leave the other options unchanged. Select **Save**.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FoDOP2E0r0o6xWHM7a40S%2Fimage.png?alt=media&amp;token=179e6d73-e566-4449-90ff-681077743f80" alt=""><figcaption></figcaption></figure>

The screenshot shows the *Budget* sourced from *Actuals* alongside the zero-based *Forecast*. The budget values are initialized using the corresponding actuals, while the forecast starts with zero values for the open forecast periods.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FuYt9MOeW09sbUUDsneFZ%2Fimage.png?alt=media&amp;token=7768e25d-0106-40cc-8ad7-8e8eb87c38b4" alt=""><figcaption></figcaption></figure>

### Allocate forecasts across hierarchical data

Top-down and bottom-up allocation provide complementary approaches to distributing forecast values across business dimensions.

Top-down allocation starts with a high-level forecast and distributes it to lower-level entities, while bottom-up allocation builds the forecast from detailed inputs and aggregates them to higher levels.

1. Before allocation, in the **Planning** ribbon, change the scaling to **None**.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FklFzdL81UfKGGuGKUhos%2Fimage.png?alt=media&amp;token=ee32fb7b-5ebd-4d79-a8a9-1b7d0a517e9b" alt=""><figcaption></figcaption></figure>

2. For top-down allocation, double-click the grand total cell for *Budget* and enter the new value.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FTZ1pjmW5v9vukGowWXrw%2Fimage.png?alt=media&amp;token=00465100-dff6-4cd5-8f43-3d4d0595acc2" alt="" width="563"><figcaption></figcaption></figure>

3. The value entered is automatically allocated to child nodes.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FBPq2hw8JbUEtebEtniIT%2Fimage.png?alt=media&amp;token=51c64516-321b-4119-9e9c-03695121b32e" alt="" width="563"><figcaption></figcaption></figure>

4. You can enable subtotals before bottom-up allocations. In the **Planning** tab, set **Column Subtotal** to **Left**. This action shows the *2026 Total* column.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FjsQD88pOZiTjH33Inevq%2Fimage.png?alt=media&amp;token=b6684cda-5ba5-42ff-9c6a-cba7f5d09a29" alt=""><figcaption></figcaption></figure>

5. Select a leaf node or subtotal node and enter the required value.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2F9Hswz1d3uDOVbkbBRUrj%2Fimage.png?alt=media&amp;token=dfe45ef9-468b-47a8-a334-99f14a6d0997" alt=""><figcaption></figcaption></figure>

6. The value entered is aggregated to the grand total *Budget*.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FOWqsowTWsYJjCavL894M%2Fimage.png?alt=media&amp;token=8f4af5fa-42fe-4b92-b87c-ba4a26ad67af" alt=""><figcaption></figcaption></figure>

### Lock forecasts

Lock values entered in a planning sheet to prevent further edits and preserve approved planning data.

1. In the **Model** ribbon, go to **Rules** > **Locking Rule**.
2. To lock edits to the *Budget* measure, set **Apply to Measures** to **Selected Measures**, and then select *Budget* from **Choose Measures**. Select **Apply to Children** to prevent editing child nodes.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FWAkb7Yokn9PgEnO0oa3u%2Fimage.png?alt=media&amp;token=1f3f40e3-52be-4fc6-9864-d372b9d28c3f" alt=""><figcaption></figcaption></figure>

3. Select **Create**. This rule locks the Budget measure.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FxsnWP6WnzCkwkjfuTQAW%2Fimage.png?alt=media&amp;token=c9440765-ab30-4213-87c2-33b670beb392" alt=""><figcaption></figcaption></figure>

### Create statistical forecasts based on seasonality and trends

Statistical forecasting uses historical data and statistical models to identify patterns and trends, and generates forecasts without manual input. For more information about Predict, see [Generating statistical forecasts](/planning-sheets/how-tos/forecast-data-to-predict-future-trends/generate-forecasts-from-statistical-data.md).

1. Before using **Predict**, in the **Model** ribbon, go to **Period** to display historical data from 2023 and 2024. Hide closed forecasts to focus on historical data and the periods available for forecasting.
2. Predict works on any hierarchy level. In this example, select the grand total *Forecast,* then select **Predict** on the **Model** ribbon. Plan displays the selected row and measure.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2Ff2XoTXmwmMvBZpRom12M%2Fimage.png?alt=media&amp;token=e2cb838b-b884-4fb5-bf3b-79641a876b0b" alt=""><figcaption></figcaption></figure>

3. Set **Evaluation** to **Bottom Up**. This option generates the predicted future value based on the trend of individual leaf nodes; in this example, the chart of accounts,
4. The **Trend Decomposition** forecasting algorithm is selected by default. For more information about algorithms, see [Statistical forecasting algorithms](/planning-sheets/concepts/forecasting/predict-statistical-forecasting-algorithm.md). Select **Year** for **Set Seasonality** and select **Run Forecast**.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2F3OY2IZjjGsrJxs1vr6cL%2Fimage.png?alt=media&amp;token=f2b930ef-a5a3-42f0-8cdd-92e23cbfa00d" alt=""><figcaption></figcaption></figure>

5. Preview the predicted forecast values in a graph to visualize the expected trends and patterns across future periods.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2Fnh2qcriBKr3LIggHIHP8%2Fimage.png?alt=media&amp;token=9a321061-50ab-4c09-8e80-d0d77681668b" alt=""><figcaption></figcaption></figure>

6. Scroll down to view the actual predicted values and the confidence interval and range for each value.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FxZqvsomQddGINnRsO040%2Fimage.png?alt=media&amp;token=2a4a4f5f-1988-434b-b8d5-f0d8f48a1c70" alt=""><figcaption></figcaption></figure>

7. Select **Save Forecast**. Review the forecast measure and period, and then select **Save** to apply the predicted values in the planning sheet.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FFeZ8gC4QUpeQl9rtZ1qE%2Fimage.png?alt=media&amp;token=06f7ae1d-a5d7-4709-bb82-aedcf0f74634" alt=""><figcaption></figcaption></figure>

### Generate deviation between Budget and Forecast

Deviation shows how actual or forecasted results differ from the original budget or target. It helps identify where performance is above or below expectations and highlights areas that may require corrective action.

1. In the **Planning** ribbon, select **Forecast**. Set the **Measure Name** to **Deviation**. Retain the default forecast period for Jan - Dec 2026.
2. In the **Closed Period** configuration, select **Formula** and enter the formula to calculate the deviation between *Budget* and *Forecast*.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2F4B2a1Vq1cjZ6YgLwIA06%2Fimage.png?alt=media&amp;token=a48c3521-7c75-46cc-90d6-17f9de7dbf58" alt=""><figcaption></figcaption></figure>

3. Use the same configuration for open periods. Select **Save**.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FWyWTgbgoNswnLjph4nyR%2Fimage.png?alt=media&amp;token=1f951e5f-605f-4872-aa7c-5bd100275142" alt=""><figcaption></figcaption></figure>

This action creates the deviation measure.

<figure><img src="https://257222532-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUtolck8kt8atqxFPsEBn%2Fuploads%2FhtBsgWCrBE8h5ypTuVKj%2Fimage.png?alt=media&amp;token=8d207682-db29-42d2-a98a-1a2850d586a6" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.fabricplan.com/planning-sheets/how-tos/forecast-data-to-predict-future-trends/create-a-p-and-l-forecast.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
