FPP_EST_RESIDUAL_COST_RATE
This report delivers the estimated residual cost rate for each constraint for each 5 minute trading interval
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+GFT_TG_R5F_I+LREG_0210F_I+NIL_APD_TL_L5F_I+NIL_MG_R5F_I+RREG_0220F_MAIN++APD_TL_L5F_MAIN++LREG_0210F_MAIN++RREG_0220F_MAIN+LREG_0210F_MAIN+RREG_0220
INTERVAL_DATETIME
Date and time of the trading interval (DD/MM/YYYY HH24:MI:SS) fixed to the UTC+10 time zone (NEM time)
SQL Type: DATE
Polars Type: pl.Datetime()
This column is mandatory, and a primary key.
Example: 2026/09/01 00:05:00
VERSIONNO
The version number. In most cases this version will be the FPP run number from the FPP database, however there are some cases (like a new pricing run of the constraint FCAS processor received by the FPP system) where the version number listed here will be the financial estimate run number from the FPP database (this number is a different sequence from the FPP run number because there is no recalculation of performance or contribution, just changes to pricing / p regulation hence only the financial estimation is performed).
SQL Type: NUMBER(10)
Polars Type: pl.UInt64
This column is mandatory, and a primary key.
Example: 1
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.
FPP
FPP in AUD/MWh (the financial estimate of frequency performance payment calculated). This value can be either positive (credit) or negative (debit). For details on the calculation, please see FPP procedure and supporting documentation.
SQL Type: NUMBER(18,8)
Polars Type: pl.Float64
This column is not mandatory.
Examples:
-0.0000019, 0.00000221, 0, 0.60282409
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/09/01 00:10:25
RELEVANT_REGIONS
Relevant regions (a comma separated list of the relevant regions for the constraint from FCAS data)
SQL Type: VARCHAR2(200)
Polars Type: str
This column is not mandatory.
Examples:
NSW1,QLD1,SA1,TAS1,VIC1NSW1,QLD1,SA1,VIC1TAS1
UNUSED_FCAS
Unused recovery FCAS in AUD/MWh (the financial estimate of the recovery of unused FCAS calculated). This value will be either 0 (nil), or a negative value (debit) only. For details on the calculation, please see FPP procedure and supporting documentation.
SQL Type: NUMBER(18,8)
Polars Type: pl.Float64
This column is not mandatory.
Examples:
-0.00000014, 0, -2.60891348
USED_FCAS
Used recovery FCAS in AUD/MWh (the financial estimate of the recovery of used FCAS calculated). This value will be either 0 (nil), or a negative value (debit) only. For details on the calculation, please see FPP procedure and supporting documentation.
SQL Type: NUMBER(18,8)
Polars Type: pl.Float64
This column is not mandatory.
Examples:
-0.00000002, 0, -0.38256636
New Data Timing
At the completion of an FPP calculation run for a closed trading interval (i.e. every 5 minutes)
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",
)
.rename(
{
# These columns have names that conflict with metadata columns
"FPP_duplicated_0": "FPP"
}
)
.with_columns(
pl.col("INTERVAL_DATETIME", "LASTCHANGED").str.strptime(pl.Datetime, dt_s_fmt),
)
.cast(
{
"CONSTRAINTID": pl.Categorical,
"VERSIONNO": int, # or pl.UInt64
"BIDTYPE": pl.Enum(
[
"ENERGY",
"LOWERREG",
"LOWER60SEC",
"RAISE5MIN",
"LOWER5MIN",
"LOWER6SEC",
"RAISE60SEC",
"RAISE6SEC",
"RAISEREG",
"RAISE1SEC",
"LOWER1SEC",
]
),
"FPP": pl.Float64,
"RELEVANT_REGIONS": str,
"UNUSED_FCAS": pl.Float64,
"USED_FCAS": pl.Float64,
}
)
# Deduplicate
# We want one row per ['CONSTRAINTID', 'INTERVAL_DATETIME', 'VERSIONNO']
# Tie-breaker: greatest value of LASTCHANGED
.sort(LASTCHANGED, descending=False)
.unique(subset=["CONSTRAINTID", "INTERVAL_DATETIME", "VERSIONNO"], keep="last")
)
Nemosis
This table is not yet available in Nemosis.
Example File
From PUBLIC_ARCHIVE_FPP_EST_RESIDUAL_COST_RATE_FILE01_202609010000.zip
| INTERVAL_DATETIME | CONSTRAINTID | VERSIONNO | BIDTYPE | RELEVANT_REGIONS | FPP | USED_FCAS | UNUSED_FCAS | LASTCHANGED |
| 2026/09/01 00:05:00 | F_T+LREG_0050 | 1 | LOWERREG | TAS1 | 0 | 0 | -0.05275887 | 2026/09/01 00:10:25 |
| 2026/09/01 00:05:00 | F_T+RREG_0050 | 1 | RAISEREG | TAS1 | 0.03163034 | 0 | -0.02121746 | 2026/09/01 00:10:25 |
| 2026/09/01 00:05:00 | F_TASCAP_LREG_0210 | 1 | LOWERREG | NSW1,QLD1,SA1,VIC1 | 0 | 0 | -0.00206876 | 2026/09/01 00:10:25 |
| 2026/09/01 00:05:00 | F_TASCAP_RREG_0220 | 1 | RAISEREG | NSW1,QLD1,SA1,VIC1 | -0.05663837 | -0.01238675 | -0.00343498 | 2026/09/01 00:10:25 |
| 2026/09/01 00:10:00 | F_T+LREG_0050 | 1 | LOWERREG | TAS1 | -0.00865731 | -0.00045819 | -0.05222991 | 2026/09/01 00:14:25 |
| 2026/09/01 00:10:00 | F_T+RREG_0050 | 1 | RAISEREG | TAS1 | 0.03481797 | 0 | -0.02171622 | 2026/09/01 00:14:25 |
| 2026/09/01 00:10:00 | F_TASCAP_LREG_0210 | 1 | LOWERREG | NSW1,QLD1,SA1,VIC1 | 0 | 0 | -0.00348065 | 2026/09/01 00:14:25 |
| 2026/09/01 00:10:00 | F_TASCAP_RREG_0220 | 1 | RAISEREG | NSW1,QLD1,SA1,VIC1 | -0.03040898 | -0.00794523 | -0.00478411 | 2026/09/01 00:14:25 |
| 2026/09/01 00:15:00 | F_TASCAP_RREG_0220 | 1 | RAISEREG | NSW1,QLD1,SA1,VIC1 | -0.06552668 | -0.01589421 | -0.0109247 | 2026/09/01 00:20:25 |
| 2026/09/01 00:15:00 | F_T+LREG_0050 | 1 | LOWERREG | TAS1 | -0.01611391 | -0.00132203 | -0.0519284 | 2026/09/01 00:20:25 |
| 2026/09/01 00:15:00 | F_T+RREG_0050 | 1 | RAISEREG | TAS1 | 0.05153217 | 0 | -0.02232375 | 2026/09/01 00:20:25 |
| ... |
| C | SETP.WORLD | DVD_FPP_EST_RESIDUAL_COST_RATE | AEMO | PUBLIC | 2026/10/09 | 17:50:10 | 001791532210260 | MONTHLY_ARCHIVE | 001791532210260 | |||
| I | FPP | EST_RESIDUAL_COST_RATE | 1 | INTERVAL_DATETIME | CONSTRAINTID | VERSIONNO | BIDTYPE | RELEVANT_REGIONS | FPP | USED_FCAS | UNUSED_FCAS | LASTCHANGED |
| D | FPP | EST_RESIDUAL_COST_RATE | 1 | 2026/09/01 00:05:00 | F_T+LREG_0050 | 1 | LOWERREG | TAS1 | 0 | 0 | -0.05275887 | 2026/09/01 00:10:25 |
| D | FPP | EST_RESIDUAL_COST_RATE | 1 | 2026/09/01 00:05:00 | F_T+RREG_0050 | 1 | RAISEREG | TAS1 | 0.03163034 | 0 | -0.02121746 | 2026/09/01 00:10:25 |
| D | FPP | EST_RESIDUAL_COST_RATE | 1 | 2026/09/01 00:05:00 | F_TASCAP_LREG_0210 | 1 | LOWERREG | NSW1,QLD1,SA1,VIC1 | 0 | 0 | -0.00206876 | 2026/09/01 00:10:25 |
| D | FPP | EST_RESIDUAL_COST_RATE | 1 | 2026/09/01 00:05:00 | F_TASCAP_RREG_0220 | 1 | RAISEREG | NSW1,QLD1,SA1,VIC1 | -0.05663837 | -0.01238675 | -0.00343498 | 2026/09/01 00:10:25 |
| D | FPP | EST_RESIDUAL_COST_RATE | 1 | 2026/09/01 00:10:00 | F_T+LREG_0050 | 1 | LOWERREG | TAS1 | -0.00865731 | -0.00045819 | -0.05222991 | 2026/09/01 00:14:25 |
| D | FPP | EST_RESIDUAL_COST_RATE | 1 | 2026/09/01 00:10:00 | F_T+RREG_0050 | 1 | RAISEREG | TAS1 | 0.03481797 | 0 | -0.02171622 | 2026/09/01 00:14:25 |
| D | FPP | EST_RESIDUAL_COST_RATE | 1 | 2026/09/01 00:10:00 | F_TASCAP_LREG_0210 | 1 | LOWERREG | NSW1,QLD1,SA1,VIC1 | 0 | 0 | -0.00348065 | 2026/09/01 00:14:25 |
| D | FPP | EST_RESIDUAL_COST_RATE | 1 | 2026/09/01 00:10:00 | F_TASCAP_RREG_0220 | 1 | RAISEREG | NSW1,QLD1,SA1,VIC1 | -0.03040898 | -0.00794523 | -0.00478411 | 2026/09/01 00:14:25 |
| D | FPP | EST_RESIDUAL_COST_RATE | 1 | 2026/09/01 00:15:00 | F_TASCAP_RREG_0220 | 1 | RAISEREG | NSW1,QLD1,SA1,VIC1 | -0.06552668 | -0.01589421 | -0.0109247 | 2026/09/01 00:20:25 |
| D | FPP | EST_RESIDUAL_COST_RATE | 1 | 2026/09/01 00:15:00 | F_T+LREG_0050 | 1 | LOWERREG | TAS1 | -0.01611391 | -0.00132203 | -0.0519284 | 2026/09/01 00:20:25 |
| D | FPP | EST_RESIDUAL_COST_RATE | 1 | 2026/09/01 00:15:00 | F_T+RREG_0050 | 1 | RAISEREG | TAS1 | 0.05153217 | 0 | -0.02232375 | 2026/09/01 00:20:25 |
| ... | ||||||||||||
| C | END OF REPORT | 1003 |
INTERVAL_DATETIME,CONSTRAINTID,VERSIONNO,BIDTYPE,RELEVANT_REGIONS,FPP,USED_FCAS,UNUSED_FCAS,LASTCHANGED
"2026/09/01 00:05:00",F_T+LREG_0050,1,LOWERREG,TAS1,0,0,-0.05275887,"2026/09/01 00:10:25"
"2026/09/01 00:05:00",F_T+RREG_0050,1,RAISEREG,TAS1,0.03163034,0,-0.02121746,"2026/09/01 00:10:25"
"2026/09/01 00:05:00",F_TASCAP_LREG_0210,1,LOWERREG,"NSW1,QLD1,SA1,VIC1",0,0,-0.00206876,"2026/09/01 00:10:25"
"2026/09/01 00:05:00",F_TASCAP_RREG_0220,1,RAISEREG,"NSW1,QLD1,SA1,VIC1",-0.05663837,-0.01238675,-0.00343498,"2026/09/01 00:10:25"
"2026/09/01 00:10:00",F_T+LREG_0050,1,LOWERREG,TAS1,-0.00865731,-0.00045819,-0.05222991,"2026/09/01 00:14:25"
"2026/09/01 00:10:00",F_T+RREG_0050,1,RAISEREG,TAS1,0.03481797,0,-0.02171622,"2026/09/01 00:14:25"
"2026/09/01 00:10:00",F_TASCAP_LREG_0210,1,LOWERREG,"NSW1,QLD1,SA1,VIC1",0,0,-0.00348065,"2026/09/01 00:14:25"
"2026/09/01 00:10:00",F_TASCAP_RREG_0220,1,RAISEREG,"NSW1,QLD1,SA1,VIC1",-0.03040898,-0.00794523,-0.00478411,"2026/09/01 00:14:25"
"2026/09/01 00:15:00",F_TASCAP_RREG_0220,1,RAISEREG,"NSW1,QLD1,SA1,VIC1",-0.06552668,-0.01589421,-0.0109247,"2026/09/01 00:20:25"
"2026/09/01 00:15:00",F_T+LREG_0050,1,LOWERREG,TAS1,-0.01611391,-0.00132203,-0.0519284,"2026/09/01 00:20:25"
"2026/09/01 00:15:00",F_T+RREG_0050,1,RAISEREG,TAS1,0.05153217,0,-0.02232375,"2026/09/01 00:20:25"
...
C,SETP.WORLD,DVD_FPP_EST_RESIDUAL_COST_RATE,AEMO,PUBLIC,2026/10/09,17:50:10,001791532210260,MONTHLY_ARCHIVE,001791532210260
I,FPP,EST_RESIDUAL_COST_RATE,1,INTERVAL_DATETIME,CONSTRAINTID,VERSIONNO,BIDTYPE,RELEVANT_REGIONS,FPP,USED_FCAS,UNUSED_FCAS,LASTCHANGED
D,FPP,EST_RESIDUAL_COST_RATE,1,"2026/09/01 00:05:00",F_T+LREG_0050,1,LOWERREG,TAS1,0,0,-0.05275887,"2026/09/01 00:10:25"
D,FPP,EST_RESIDUAL_COST_RATE,1,"2026/09/01 00:05:00",F_T+RREG_0050,1,RAISEREG,TAS1,0.03163034,0,-0.02121746,"2026/09/01 00:10:25"
D,FPP,EST_RESIDUAL_COST_RATE,1,"2026/09/01 00:05:00",F_TASCAP_LREG_0210,1,LOWERREG,"NSW1,QLD1,SA1,VIC1",0,0,-0.00206876,"2026/09/01 00:10:25"
D,FPP,EST_RESIDUAL_COST_RATE,1,"2026/09/01 00:05:00",F_TASCAP_RREG_0220,1,RAISEREG,"NSW1,QLD1,SA1,VIC1",-0.05663837,-0.01238675,-0.00343498,"2026/09/01 00:10:25"
D,FPP,EST_RESIDUAL_COST_RATE,1,"2026/09/01 00:10:00",F_T+LREG_0050,1,LOWERREG,TAS1,-0.00865731,-0.00045819,-0.05222991,"2026/09/01 00:14:25"
D,FPP,EST_RESIDUAL_COST_RATE,1,"2026/09/01 00:10:00",F_T+RREG_0050,1,RAISEREG,TAS1,0.03481797,0,-0.02171622,"2026/09/01 00:14:25"
D,FPP,EST_RESIDUAL_COST_RATE,1,"2026/09/01 00:10:00",F_TASCAP_LREG_0210,1,LOWERREG,"NSW1,QLD1,SA1,VIC1",0,0,-0.00348065,"2026/09/01 00:14:25"
D,FPP,EST_RESIDUAL_COST_RATE,1,"2026/09/01 00:10:00",F_TASCAP_RREG_0220,1,RAISEREG,"NSW1,QLD1,SA1,VIC1",-0.03040898,-0.00794523,-0.00478411,"2026/09/01 00:14:25"
D,FPP,EST_RESIDUAL_COST_RATE,1,"2026/09/01 00:15:00",F_TASCAP_RREG_0220,1,RAISEREG,"NSW1,QLD1,SA1,VIC1",-0.06552668,-0.01589421,-0.0109247,"2026/09/01 00:20:25"
D,FPP,EST_RESIDUAL_COST_RATE,1,"2026/09/01 00:15:00",F_T+LREG_0050,1,LOWERREG,TAS1,-0.01611391,-0.00132203,-0.0519284,"2026/09/01 00:20:25"
D,FPP,EST_RESIDUAL_COST_RATE,1,"2026/09/01 00:15:00",F_T+RREG_0050,1,RAISEREG,TAS1,0.05153217,0,-0.02232375,"2026/09/01 00:20:25"
...
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.)
Warning
The REPORT_NAME metadata column has the same column name as an actual columns FPP. So the raw CSVs have duplicate column names. You will need to be careful when reading this CSV.
Data Size
Each year of data is approximately 7 MB when zipped, 70 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.
| Report Name | Report Subtype | Version |
|---|---|---|
| FPP | EST_RESIDUAL_COST_RATE | 1 |
This means that the CSV files start with metadata columns:
Links
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