Skip to content

FPP_FORECAST_RESIDUAL_DCF

This report delivers the forecast residual default contribution factors (DCF) effective for a billing period (aligned to the settlement week)

Column Schema

CONSTRAINTID

Constraint ID (binding constraint ID from FCAS data used in FPP calculations)

SQL Type: VARCHAR2(20) Polars Type: pl.Categorical

This column is mandatory, and a primary key.

Examples:

  • F_I+BIP_ML_L5
  • F_I+GFT_TG_R5
  • F_I+LREG_0210
  • F_I+ML_L5_APD
  • F_I+ML_L5_APD_LD
  • F_I+NIL_APD_TL_L5
  • F_I+NIL_MG_R5
  • F_I+NIL_MREH_TL_L5
  • F_I+RREG_0220
  • F_I+TTS_TG_R5

EFFECTIVE_END_DATETIME

Effective period end date and time (DD/MM/YYYY HH24:MI:SS) fixed to the UTC+10 time zone (NEM time) of the effective period for this residual default contribution factor related to the constraint. This is the billing period over which these default contribution factors will be effective / applied. Effective end date will align with the end of a settlement week.

SQL Type: DATE Polars Type: pl.Datetime()

This column is mandatory, and a primary key.

Example: 2025/01/19 00:00:00

EFFECTIVE_START_DATETIME

Effective period start date and time (DD/MM/YYYY HH24:MI:SS) fixed to the UTC+10 time zone (NEM time) of the effective period for this residual default contribution factor related to the constraint. This is the billing period over which these default contribution factors will be effective / applied. In most cases this will align to the settlement week, however there are some cases (like a new constraint) where the effective start date will be prorated to align with the change.

SQL Type: DATE Polars Type: pl.Datetime()

This column is mandatory, and a primary key.

Example: 2025/01/12 00:05:00

VERSIONNO

The version number. In most cases this version will be the historical performance calculation run number from the FPP database (which is different from the FPP run number), however there are some cases (like a new constraint) where the version number listed here will be the FPP run number from the FPP database (this will be where the effective start date time will be prorated to align with the detection of this change).

SQL Type: NUMBER(10) Polars Type: pl.UInt64

This column is mandatory, and a primary key.

Examples: 1, 127

BIDTYPE

Bid type (the bid type saved in relation to constraint ID from FCAS data used in FPP calculations)

The SQL type is VARCHAR2(10). This is actually a factor/enum, with values:

  • ENERGY

  • LOWERREG

  • LOWER60SEC

  • RAISE5MIN

  • LOWER5MIN

  • LOWER6SEC

  • RAISE60SEC

  • RAISE6SEC

  • RAISEREG

  • RAISE1SEC

  • LOWER1SEC

This column is not mandatory.

DCF_ABS_NEGATIVE_PERF_TOTAL

The sum of absolute negative performance in MWHz for the combination of constraint (raise or lower). This is used as the denominator in normalising default contribution factors (DCF). For further details please see the FPP procedure document. >0 = Performance was calculated for the units NULL = Performance for the units was unavailable

SQL Type: NUMBER(18,8) Polars Type: pl.Float64

This column is not mandatory.

Examples: 7.92472, 825.76042

LASTCHANGED

Last date and time record changed

For more information, see the dedicated documentation page.

SQL Type: DATE Polars Type: pl.Datetime()

This column is not mandatory.

Example: 2026/05/16 18:06:11

RESIDUAL_DCF

Calculated residual default contribution factor from the historical performance period. For further details please see the FPP procedure document.

SQL Type: NUMBER(18,8) Polars Type: pl.Float64

This column is not mandatory.

Examples: -0.01986441, -0.72109913

RESIDUAL_DCF_REASON_FLAG

The reason flag showing the decision matrix for the residual default contribution factor (DCF)

SQL Type: NUMBER(5) Polars Type: pl.Boolean

This column is not mandatory.

Example: 0

New Data Timing

Approval of an FPP historical default contribution factor calculation run (i.e. every week)

Code Examples

Polars

Casting is enums, categoricals etc is not essential, but may speed up parsing. Swapping int for pl.UInt16, pl.Int32 would also speed up parsing. However some of the datatypes are inferred, so they may be wrong.

This code deduplicates for you. Deduplication is normally only required across multiple months.

This code assumes that all columns are present, which may not be true for older files.

import polars as pl
import polars.selectors as cs

# e.g. "2029/03/15 00:05:00"
dt_s_fmt = "%Y/%m/%d %H:%M:%S"

csv_paths = ["SOMEFILE.CSV", "OTHERFILE.CSV"]

lf = (
    pl.concat(
        [
            pl.scan_csv(
                csv_path,  # must be unzipped beforehand
                skip_rows=1,  # skip the header
                infer_schema=False,  # much faster
            )
            .filter(cs.by_index(0) == "D")  # drop the footer
            .select(~cs.by_index(range(4)))  # drop metadata columns
            for csv_path in csv_paths
        ],
        how="diagonal_relaxed",
    )
    .with_columns(
        pl.col(
            "EFFECTIVE_END_DATETIME", "EFFECTIVE_START_DATETIME", "LASTCHANGED"
        ).str.strptime(pl.Datetime, dt_s_fmt),
    )
    # Polars can't cast string straight to bool. Need to go via something else.
    .cast({"RESIDUAL_DCF_REASON_FLAG": pl.UInt8})
    .cast(
        {
            "CONSTRAINTID": pl.Categorical,
            "VERSIONNO": int,  # or pl.UInt64
            "BIDTYPE": pl.Enum(
                [
                    "ENERGY",
                    "LOWERREG",
                    "LOWER60SEC",
                    "RAISE5MIN",
                    "LOWER5MIN",
                    "LOWER6SEC",
                    "RAISE60SEC",
                    "RAISE6SEC",
                    "RAISEREG",
                    "RAISE1SEC",
                    "LOWER1SEC",
                ]
            ),
            "DCF_ABS_NEGATIVE_PERF_TOTAL": pl.Float64,
            "RESIDUAL_DCF": pl.Float64,
            "RESIDUAL_DCF_REASON_FLAG": pl.Boolean,
        }
    )
    # Deduplicate
    # We want one row per ['CONSTRAINTID', 'EFFECTIVE_END_DATETIME', 'EFFECTIVE_START_DATETIME', 'VERSIONNO']
    # Tie-breaker: greatest value of LASTCHANGED
    .sort(LASTCHANGED, descending=False)
    .unique(
        subset=[
            "CONSTRAINTID",
            "EFFECTIVE_END_DATETIME",
            "EFFECTIVE_START_DATETIME",
            "VERSIONNO",
        ],
        keep="last",
    )
)

Nemosis

This table is not yet available in Nemosis.

Example File

From PUBLIC_ARCHIVE_FPP_FORECAST_RESIDUAL_DCF_FILE01_202609010000.zip

CONSTRAINTIDEFFECTIVE_START_DATETIMEEFFECTIVE_END_DATETIMEVERSIONNOBIDTYPERESIDUAL_DCFRESIDUAL_DCF_REASON_FLAGDCF_ABS_NEGATIVE_PERF_TOTALLASTCHANGED
F_MAIN++RREG_02202025/04/01 17:35:002025/04/06 00:00:001RAISEREG-0.226175120394.29995
F_T+NIL_ML_RECL_L52026/04/06 20:40:002026/04/12 00:00:001LOWERREG-0.49971917011.09213
F_MAIN++RREG_02202025/10/01 11:40:002025/10/05 00:00:001RAISEREG-0.267245190395.7422
F_MAIN+LREG_02102025/11/09 00:10:002025/11/16 00:00:001LOWERREG-0.244308240323.46387
F_MAIN++LREG_02102025/11/09 00:20:002025/11/16 00:00:001LOWERREG-0.244308240323.46387
F_TASCAP_RREG_02202025/11/09 00:20:002025/11/16 00:00:001RAISEREG-0.258415630459.24555
F_I+NIL_APD_TL_L52025/11/09 00:30:002025/11/16 00:00:001LOWERREG-0.249183030357.06003
F_I+LREG_02102025/11/09 00:35:002025/11/16 00:00:001LOWERREG-0.249183030357.06003
F_TASCAP_LREG_02102025/11/09 00:45:002025/11/16 00:00:001LOWERREG-0.244308240323.46387
F_MAIN+ML_L5_APD2025/11/09 11:20:002025/11/16 00:00:001LOWERREG-0.244308240323.46387
F_MAIN++NIL_MG_R52025/12/20 17:35:002025/12/21 00:00:001RAISEREG-0.17805990797.0726
...

CSETP.WORLDDVD_FPP_FORECAST_RESIDUAL_DCFAEMOPUBLIC2026/10/0917:50:52001791532252183MONTHLY_ARCHIVE001791532252183
IFPPFORECAST_RESIDUAL_DCF1CONSTRAINTIDEFFECTIVE_START_DATETIMEEFFECTIVE_END_DATETIMEVERSIONNOBIDTYPERESIDUAL_DCFRESIDUAL_DCF_REASON_FLAGDCF_ABS_NEGATIVE_PERF_TOTALLASTCHANGED
DFPPFORECAST_RESIDUAL_DCF1F_MAIN++RREG_02202025/04/01 17:35:002025/04/06 00:00:001RAISEREG-0.226175120394.29995
DFPPFORECAST_RESIDUAL_DCF1F_T+NIL_ML_RECL_L52026/04/06 20:40:002026/04/12 00:00:001LOWERREG-0.49971917011.09213
DFPPFORECAST_RESIDUAL_DCF1F_MAIN++RREG_02202025/10/01 11:40:002025/10/05 00:00:001RAISEREG-0.267245190395.7422
DFPPFORECAST_RESIDUAL_DCF1F_MAIN+LREG_02102025/11/09 00:10:002025/11/16 00:00:001LOWERREG-0.244308240323.46387
DFPPFORECAST_RESIDUAL_DCF1F_MAIN++LREG_02102025/11/09 00:20:002025/11/16 00:00:001LOWERREG-0.244308240323.46387
DFPPFORECAST_RESIDUAL_DCF1F_TASCAP_RREG_02202025/11/09 00:20:002025/11/16 00:00:001RAISEREG-0.258415630459.24555
DFPPFORECAST_RESIDUAL_DCF1F_I+NIL_APD_TL_L52025/11/09 00:30:002025/11/16 00:00:001LOWERREG-0.249183030357.06003
DFPPFORECAST_RESIDUAL_DCF1F_I+LREG_02102025/11/09 00:35:002025/11/16 00:00:001LOWERREG-0.249183030357.06003
DFPPFORECAST_RESIDUAL_DCF1F_TASCAP_LREG_02102025/11/09 00:45:002025/11/16 00:00:001LOWERREG-0.244308240323.46387
DFPPFORECAST_RESIDUAL_DCF1F_MAIN+ML_L5_APD2025/11/09 11:20:002025/11/16 00:00:001LOWERREG-0.244308240323.46387
DFPPFORECAST_RESIDUAL_DCF1F_MAIN++NIL_MG_R52025/12/20 17:35:002025/12/21 00:00:001RAISEREG-0.17805990797.0726
...
CEND OF REPORT1003

CONSTRAINTID,EFFECTIVE_START_DATETIME,EFFECTIVE_END_DATETIME,VERSIONNO,BIDTYPE,RESIDUAL_DCF,RESIDUAL_DCF_REASON_FLAG,DCF_ABS_NEGATIVE_PERF_TOTAL,LASTCHANGED
F_MAIN++RREG_0220,"2025/04/01 17:35:00","2025/04/06 00:00:00",1,RAISEREG,-0.22617512,0,394.29995,
F_T+NIL_ML_RECL_L5,"2026/04/06 20:40:00","2026/04/12 00:00:00",1,LOWERREG,-0.49971917,0,11.09213,
F_MAIN++RREG_0220,"2025/10/01 11:40:00","2025/10/05 00:00:00",1,RAISEREG,-0.26724519,0,395.7422,
F_MAIN+LREG_0210,"2025/11/09 00:10:00","2025/11/16 00:00:00",1,LOWERREG,-0.24430824,0,323.46387,
F_MAIN++LREG_0210,"2025/11/09 00:20:00","2025/11/16 00:00:00",1,LOWERREG,-0.24430824,0,323.46387,
F_TASCAP_RREG_0220,"2025/11/09 00:20:00","2025/11/16 00:00:00",1,RAISEREG,-0.25841563,0,459.24555,
F_I+NIL_APD_TL_L5,"2025/11/09 00:30:00","2025/11/16 00:00:00",1,LOWERREG,-0.24918303,0,357.06003,
F_I+LREG_0210,"2025/11/09 00:35:00","2025/11/16 00:00:00",1,LOWERREG,-0.24918303,0,357.06003,
F_TASCAP_LREG_0210,"2025/11/09 00:45:00","2025/11/16 00:00:00",1,LOWERREG,-0.24430824,0,323.46387,
F_MAIN+ML_L5_APD,"2025/11/09 11:20:00","2025/11/16 00:00:00",1,LOWERREG,-0.24430824,0,323.46387,
F_MAIN++NIL_MG_R5,"2025/12/20 17:35:00","2025/12/21 00:00:00",1,RAISEREG,-0.1780599,0,797.0726,
...
C,SETP.WORLD,DVD_FPP_FORECAST_RESIDUAL_DCF,AEMO,PUBLIC,2026/10/09,17:50:52,001791532252183,MONTHLY_ARCHIVE,001791532252183
I,FPP,FORECAST_RESIDUAL_DCF,1,CONSTRAINTID,EFFECTIVE_START_DATETIME,EFFECTIVE_END_DATETIME,VERSIONNO,BIDTYPE,RESIDUAL_DCF,RESIDUAL_DCF_REASON_FLAG,DCF_ABS_NEGATIVE_PERF_TOTAL,LASTCHANGED
D,FPP,FORECAST_RESIDUAL_DCF,1,F_MAIN++RREG_0220,"2025/04/01 17:35:00","2025/04/06 00:00:00",1,RAISEREG,-0.22617512,0,394.29995,
D,FPP,FORECAST_RESIDUAL_DCF,1,F_T+NIL_ML_RECL_L5,"2026/04/06 20:40:00","2026/04/12 00:00:00",1,LOWERREG,-0.49971917,0,11.09213,
D,FPP,FORECAST_RESIDUAL_DCF,1,F_MAIN++RREG_0220,"2025/10/01 11:40:00","2025/10/05 00:00:00",1,RAISEREG,-0.26724519,0,395.7422,
D,FPP,FORECAST_RESIDUAL_DCF,1,F_MAIN+LREG_0210,"2025/11/09 00:10:00","2025/11/16 00:00:00",1,LOWERREG,-0.24430824,0,323.46387,
D,FPP,FORECAST_RESIDUAL_DCF,1,F_MAIN++LREG_0210,"2025/11/09 00:20:00","2025/11/16 00:00:00",1,LOWERREG,-0.24430824,0,323.46387,
D,FPP,FORECAST_RESIDUAL_DCF,1,F_TASCAP_RREG_0220,"2025/11/09 00:20:00","2025/11/16 00:00:00",1,RAISEREG,-0.25841563,0,459.24555,
D,FPP,FORECAST_RESIDUAL_DCF,1,F_I+NIL_APD_TL_L5,"2025/11/09 00:30:00","2025/11/16 00:00:00",1,LOWERREG,-0.24918303,0,357.06003,
D,FPP,FORECAST_RESIDUAL_DCF,1,F_I+LREG_0210,"2025/11/09 00:35:00","2025/11/16 00:00:00",1,LOWERREG,-0.24918303,0,357.06003,
D,FPP,FORECAST_RESIDUAL_DCF,1,F_TASCAP_LREG_0210,"2025/11/09 00:45:00","2025/11/16 00:00:00",1,LOWERREG,-0.24430824,0,323.46387,
D,FPP,FORECAST_RESIDUAL_DCF,1,F_MAIN+ML_L5_APD,"2025/11/09 11:20:00","2025/11/16 00:00:00",1,LOWERREG,-0.24430824,0,323.46387,
D,FPP,FORECAST_RESIDUAL_DCF,1,F_MAIN++NIL_MG_R5,"2025/12/20 17:35:00","2025/12/21 00:00:00",1,RAISEREG,-0.1780599,0,797.0726,
...
C,"END OF REPORT",1003

Availability

Visibility: Public

This table is in the public monthly MMSDM archive.

I have collated the list of all those files into one place, in this CSV metadata file. (Columns year, month, url, compressed_size in bytes).

The earliest available data is month 12 of 2024. The most recent available data is month 9 of 2026.

Every month in between has a file. (No gaps.)

Data Size

Each year of data is approximately 503 KB when zipped, 5 MB as unzipped CSV.

Deduplication and PDR Loader Configuration

The primary keys are:

The transaction type is "insert", which means that you will usually not see duplicate data. If you do, you can deduplicate based on the primary keys, without sorting first. Rows from different files with the same primary keys should have the same values.

PDR Loader configuration is:

Report Name Report Subtype Version
FPP FORECAST_RESIDUAL_DCF 1

This means that the CSV files start with metadata columns:

I,FPP,FORECAST_RESIDUAL_DCF,1,...
D,FPP,FORECAST_RESIDUAL_DCF,1,...

This page as JSON (schema documented here, but may change)

Download a JSON Schema specification for this table.

Official AEMO schema documentation

Other Information

Package: FPP