> For the complete documentation index, see [llms.txt](https://docs.rootcause.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rootcause.ai/more-details/digital-twin/temporal-simulations.md).

# Temporal Simulations

A **temporal** Digital Twin — one built on time-series data — supports its own family of simulations, parallel to the [static simulation types](/more-details/digital-twin/simulation-types.md) but aware of time. Where a static simulation answers a question about a single moment, a temporal simulation answers it across a horizon: not "what is the outcome?" but "how does the outcome evolve, step by step?"

The twin type is chosen by the **Type** selector in the builder's **Choose your data** step, where the platform marks the most specific type your data supports as Recommended and preselects it — so a dataset with a usable time column arrives pre-selected as **Temporal**, and the temporal types then ask for a time column. You can pick another supported type instead; a new version of an existing twin keeps its type. On a temporal twin, the **New Simulation** picker shows the temporal family in place of the static one.

## The temporal family

| Type                                                                    | Question it answers                                                        | Static counterpart       |
| ----------------------------------------------------------------------- | -------------------------------------------------------------------------- | ------------------------ |
| [Forecast](/more-details/digital-twin/temporal-simulations/forecast.md) | How will these variables evolve over the next *n* steps?                   | Prediction               |
| **Temporal Intervention**                                               | How does a time-bounded change affect outcomes over time?                  | Intervention             |
| **Temporal Optimization**                                               | What actions over time best meet a goal, given constraints?                | Optimization             |
| **Temporal Best Action**                                                | What is the minimum change over time needed to reach a target?             | Best Action              |
| **Temporal Explanation**                                                | What time-dependent relationships drive an outcome?                        | Explanation              |
| **Time-Series Root Cause Analysis**                                     | How did a variable drift from its expected trajectory, and what caused it? | Root Cause Analysis      |
| **Time-Series Anomaly Scan & Diagnosis**                                | Which timesteps are anomalous, and why?                                    | Anomaly Scan & Diagnosis |
| **Causal Health Monitor**                                               | What emerging issues should I be alerted to before they escalate?          | *(temporal only)*        |

Every type in the table is in the **New Simulation** picker on a temporal twin today. [Forecast](/more-details/digital-twin/temporal-simulations/forecast.md) has a dedicated page; Temporal Intervention and the Causal Health Monitor are covered in [Step 6: Run Simulations](/user-guide/simulations.md); the rest are configured exactly like their static counterparts, linked in the right-hand column, with the time-aware settings the wizard adds. Panel time-series twins get the same set as per-environment **Panel** variants.

## Outside the UI

The SDK picks the temporal or panel spelling from the twin's kind, so the call is the one you would write against a static twin. Two arguments exist only because there is a time axis: `horizon=` on an optimization (required for a temporal twin), and a step to diagnose or a step window on the two diagnosis verbs.

```python
>>> twin.forecast(horizon=24, targets=["revenue"])
>>> twin.explain(effect="revenue")
>>> twin.optimise([objective], decision_vars=["price"], horizon=12)
>>> twin.root_cause("revenue", observed, timestep=17)
>>> twin.anomalies(observed, start_step=4, end_step=9)
```

[Temporal and Panel Twins](/api-and-integrations/sdk-getting-started/sdk-temporal-and-panel-twins.md) covers the full set, including scoping a run to a subset of environments or a saved environment group, and [Running Simulations over REST](/api-and-integrations/rest-running-simulations.md) has the scenario `type` to send for each.
