> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dash360.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Uncertainty Classes

> Define reusable cost and schedule uncertainty profiles for a project, set Basis Code defaults, and seed the standard set of classes used by the Monte Carlo engine.

<img src="https://mintlify.s3.us-west-1.amazonaws.com/dash360/images/admin/uncertainty-classes.png" alt="Uncertainty Classes" />

## Overview

An Uncertainty Class is a reusable profile that describes how much a cost or a duration is expected to vary around its point estimate. Each class holds a distribution method and a set of percentage factors (Min, Most Likely, Max) for both the schedule and the cost dimension. Classes are assigned to Activities and Resource Assignments (directly or through the cascade), and the unified Monte Carlo engine samples from them to produce the cost and finish-date distributions on the Risk Analysis page.

Uncertainty Classes are managed per project on the Edit Project screen, alongside the Basis Code Defaults that drive the "Apply Uncertainty to Work Package" button on the Budget Form.

**Location:** Admin > Projects > Edit Project > **Uncertainty Classes** section.

<Tip>
  Prefer to watch? See [How to Set Up Uncertainty Classes](/user-guide/risk/how-to/uncertainty-classes) for a video walkthrough.
</Tip>

## Prerequisites

* Your account must have administrative access to the project.
* A project (snapshot) must be selected.

***

## The Uncertainty Classes table

The table lists every class defined for the project with these columns:

| Column                   | Description                                                                                              |
| ------------------------ | -------------------------------------------------------------------------------------------------------- |
| **Resource Type**        | Who the class applies to: All, Labor, Non-Labor, or Travel                                               |
| **Name**                 | The label shown in the Activity and Resource Assignment pickers (for example, "Low", "Moderate", "High") |
| **Distribution Method**  | How values are sampled: PERT, Triangular, Uniform, or Single Point                                       |
| **Schedule Factors (%)** | Min, Most Likely, and Max as a percentage of the deterministic duration                                  |
| **Cost Factors (%)**     | Min, Most Likely, and Max as a percentage of the deterministic cost                                      |
| **Actions**              | Edit or delete the class                                                                                 |

### What the factors mean

Factors are expressed as a percentage of the deterministic (point-estimate) value, where 100% means "no change":

* A schedule **Min Factor** of 80, **Most Likely** of 100, and **Max** of 150 means a 10-day activity is sampled between 8 and 15 days, peaking at 10.
* A cost **Min Factor** of 90, **Most Likely** of 100, and **Max** of 130 means a $10,000 assignment is sampled between $9,000 and $13,000, peaking at $10,000.

Because factors are ratios, the same class applies cleanly to any baseline value.

### Distribution methods

| Method           | Inputs used           | Shape                                                                                                           |
| ---------------- | --------------------- | --------------------------------------------------------------------------------------------------------------- |
| **PERT**         | Min, Most Likely, Max | Smooth, bell-like; weights the Most Likely value heavily. Recommended for most estimates.                       |
| **Triangular**   | Min, Most Likely, Max | Straight-sided triangle; simpler and more conservative in the tails than PERT.                                  |
| **Uniform**      | Min, Max              | Every value between Min and Max is equally likely (Most Likely is ignored).                                     |
| **Single Point** | Most Likely           | No spread; always returns the point estimate. Use to disable uncertainty for a class while keeping it assigned. |

## Adding or editing a class

1. Click **Add Uncertainty Class** (or the edit action on an existing row).
2. Set the **Resource Type**, **Name**, and an optional **Description** and **Type of Estimate Description**.
3. Choose a **Distribution Method**.
4. Enter the **Schedule Factors** (% of deterministic duration) and **Cost Factors** (% of deterministic cost). Only the inputs relevant to the chosen method are required.
5. Click **Save Uncertainty Class**.

A class can carry meaningful spread on one dimension and none on the other. For example, a class might leave cost at 100/100/100 (no cost variation) while giving the schedule an 80/100/150 spread.

## Add Default Classes

Click **Add Default Classes** to seed the standard set of classes (a Low-through-High style ladder). The action skips any class whose name already exists, so it is safe to run on a project that already has some classes defined. This is the fastest way to get a project ready for Monte Carlo analysis.

## Basis Code Defaults

Below the classes table, the **Basis Code Defaults** section maps each Basis Code to a default **Cost** Uncertainty Class and a default **Schedule** Uncertainty Class.

These defaults drive the **Apply Uncertainty to Work Package** button on the Budget Form: when a user applies uncertainty to a work package, each resource assignment receives the class mapped to its basis code. A blank dropdown means there is no auto-default for that basis code, and those assignments are left unassigned.

To set a default, pick a Cost class and a Schedule class next to a basis code and save. If a mapping references a class that no longer exists (for example, after a basis code file swap), a warning appears so you can re-map it.

Swapping a project's Basis Code File can also leave mappings behind for codes the new file does not contain. When that happens the warning reports how many, and **Remove Orphaned Mappings** deletes them. It only removes mappings whose basis code is absent from the project's current Basis Code File; it never changes a class assignment on an activity or a resource assignment.

## Where classes are used next

* **Assigning a class** to Activities and Resource Assignments: see the Estimating guide on [Cost Overlay and Uncertainty](/user-guide/estimating/uncertainty-and-cost-overlay).
* **The cascade and the simulation**: see the [Risk Analysis](/user-guide/risk/risk-analysis) guide.
