Skip to contents

Returns the DISPATCHCONSTRAINT table from NEMweb: one row per binding (or near-binding) constraint per 5-minute dispatch interval. Each row records the constraint ID, the left-hand side (LHS) and right-hand side (RHS) values, the marginal value (shadow price on the constraint in AUD/MWh), and the violation degree if any.

Usage

aemo_constraints(
  start,
  end,
  constraint_id = NULL,
  intervention = FALSE,
  min_marginal_value = 0.01
)

Source

AEMO NEMweb DISPATCHIS_Reports, DISPATCHCONSTRAINT table.

Arguments

start, end

Window (inclusive), character or POSIXct.

constraint_id

Optional character vector of constraint IDs (e.g. "N>>N-NIL_1", "V::S_NIL_TBSE"). NULL returns all binding constraints in the window.

intervention

Logical. Default FALSE.

min_marginal_value

Numeric. Only return constraints with marginal value at or above this threshold (AUD/MWh). 0 returns every row; the default of 0.01 filters out near-zero shadow prices that are typically noise.

Value

An aemo_tbl with columns settlementdate, constraintid, rhs, marginalvalue, violationdegree, lhs, plus the intervention flag.

Details

This is the table that answers the question "why was the RRP so high at 17:35?": the sum of marginal values across binding constraints at the Regional Reference Node equals the regional price component attributable to network limits.

Constraint equations and RHS terms (GENCONDATA, GENCONSETINVOKE) are published through MMSDM on a separate cadence and are not exposed directly by this function; use aemo_nemweb_download() on an MMSDM URL for those.

Examples

# \donttest{
op <- options(aemo.cache_dir = tempdir())
try({
  now <- Sys.time()
  c <- aemo_constraints(start = now - 3600, end = now)
  head(c)
})
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#> 
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#> 
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#> 
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#> 
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#> 
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#> 
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#> 
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#> 
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#> 
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#> 
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#> 
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#> 
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#> 
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#>  Downloading <http://nemweb.com.au/Reports/Current/DispatchIS_Reports/PUBLIC_D
#> 
#> # aemo_tbl: AEMO dispatch constraints (shadow prices)
#> # Source:   http://nemweb.com.au
#> # Licence:  AEMO Copyright Permissions Notice
#> # Retrieved: 2026-04-28 19:13 UTC 
#> # Rows: 6  Cols: 13
#> 
#>        settlementdate runno     constraintid dispatchinterval intervention
#> 1 2026-04-29 04:15:00     1 F_MAIN+LREG_0210      20260429003            0
#> 2 2026-04-29 04:15:00     1 F_MAIN+NIL_MG_R1      20260429003            0
#> 3 2026-04-29 04:15:00     1 F_MAIN+RREG_0220      20260429003            0
#> 4 2026-04-29 04:15:00     1      F_NVS+8E_R5      20260429003            0
#> 5 2026-04-29 04:15:00     1      F_NVS+8E_R6      20260429003            0
#> 6 2026-04-29 04:15:00     1     F_NVS+8E_R60      20260429003            0
#>          rhs marginalvalue violationdegree         lastchanged duid
#> 1   210.0001          1.20               0 2026/04/29 04:10:02 <NA>
#> 2  406.18849          0.03               0 2026/04/29 04:10:02 <NA>
#> 3   220.0001          5.47               0 2026/04/29 04:10:02 <NA>
#> 4 -148.27888          0.03               0 2026/04/29 04:10:02 <NA>
#> 5 -121.85977          0.09               0 2026/04/29 04:10:02 <NA>
#> 6  -60.92984          0.15               0 2026/04/29 04:10:02 <NA>
#>   genconid_effectivedate genconid_versionno        lhs
#> 1             2019-05-16                  1   210.0001
#> 2             2025-02-17                  1  406.18849
#> 3             2019-05-16                  1   220.0001
#> 4             2023-03-13                  1 -148.27888
#> 5             2023-03-13                  1 -121.85977
#> 6             2023-03-13                  1  -60.92983
options(op)
# }