Skip to content
Last updated

Bilateral Schedule Data

The <BilateralSchedule> data section is used for providing bilateral transaction types and is applicable to both Inbound requests and Outbound responses

ItemDescriptionMRTU(CAISO)TX(ERCOT)
IntervalLengthInterval size; default is one hour (XSD Optional) Note: The Interval Length must match the system operator’s required granularity.ISO Optional Field
Data Type: XML duration
‘PT1H’ is 1 hour
ISO Optional Field if ProductType = Energy
Data Type: XML duration
‘PT1H’ is 1 hour
‘PT15M’ is 15 minutes
‘PT5M’ is 5 minutes
TransactionTypeType of transaction/ resource (XSD Required)ISO Required Field
Data Type: Enumeration
‘Buy’ (MP is buyer)
‘Sell’ (MP is seller)
ISO Required Field
Data Type: Enumeration
‘Buy’ (MP is buyer)
‘Sell’ (MP is seller)
SourceLocationName of the source (origin) location (XSD Optional)ISO Required Field if TransactionType = Buy and ScheduleType = PhysicalTrade or FinancialTrade
Data Type: String
Valid Gen Node if PhysicalTrade
Valid Trade Hub or LAP if FinancialTrade
When ScheduleType = ASTrade or UpliftCostTrade, no location is needed
ISO Required Field if TransactionType = Buy
Data Type: String If Product Type = (Energy) set = any valid settlement point name (i.e. ‘HB_SOUTH’, ‘LZ_NORTH’) If Product Type = (Capacity, RegUp, RegDn, RRS-PFR, RRS-FFR, RRS-UFR, NonSpin, ECRSS, ECRSM) set = ‘ERCOT’
SinkLocationName of the sink (destination) location (XSD Optional)ISO Required Field if TransactionType = Sell and ScheduleType = PhysicalTrade or FinancialTrade Data Type: String Valid Gen Node if PhysicalTrade Valid Trade Hub or LAP if FinancialTrade When ScheduleType = ASTrade or UpliftCostTrade, no location is neededISO Required Field if TransactionType = Buy Data Type: String If Product Type = (Energy) set = any valid settlement point name (i.e. ‘HB_SOUTH’, ‘LZ_NORTH’) If Product Type = (Capacity, RegUp, RegDn, RRS-PFR, RRS-FFR, RRS-UFR, NonSpin, ECRSS, ECRSM) set = ‘ERCOT’
CounterPartyParticipant short name of the counterparty to the buy or sell trade (XSD Optional)ISO Required Field
Data Type: String
ISO Required Field if TransactionType = Buy or Sell Data Type: String Use only valid ERCOT QSE ID (i.e. QAPX)
TradeNameUnique identifier to communicate with the ISO (XSD Optional)ISO Required Field if ScheduleType = PhysicalTrade Data Type: String Trade NameNot Applicable
DependOnTradeNamePoints to the unique Trade Name of the dependent trade (XSD Optional)ISO Required Field if Schedule Type = PhysicalTrade and the trade is not the first in a chain Data Type: String Trade Name of dependent tradeNot Applicable
ScheduleTypeType of schedule; default is ‘FinancialTrade’ (XSD Optional)ISO Required Field Data Type: Enumeration ‘FinancialTrade’ (default) ‘PhysicalTrade’ ‘UpliftCostTrade’Data Type: Enumeration ‘FinancialTrade’ (default) ‘WholesaleLoad’ – for RRSNC trade ‘CntrlLoad’ – for RRSLD trade ‘SelfProvision’ – For Self-Arranged AS
ProductTypePoints to the unique Trade Name of the dependent trade (XSD Optional)ISO Required Field Date Type: Enumeration ‘Energy’ ‘RegUp’ ‘RegDn’ ‘Spin’ ‘NSpin’ISO Required Field Data Type: Enumeration ‘Energy’ ‘Capacity’ ‘RegUp’ ‘RegDn’ ‘RRS-PFR’ ‘RRS-FFR’ ‘RRS-UFR’ ‘NSpin’ ‘NSPNM’ ‘ECRSS’ ‘ECRSM'
ExternalIdUser assigned identifier that uniquely maps submitted rows to the client’s source system (XSD Optional)ISO Optional Field
Data Type: String
ISO Optional Field
Data Type: String

Bilateral Schedule Detail Attributes

ItemDescriptionMRTU(CAISO)TX(ERCOT)
FromIntervalFrom interval i until the next specified interval or until LastIntervalEnd. For example, submitting a single value for FromInterval 1 will assign that value to the whole interval range (XSD Required)ISO Required Field
Date Type: Integer between 1 and 25 when FirstIntervalBegin and LastIntervalEnd range = one day
ISO Required Field
Data Type: Integer between 1 and 100 when FirstIntervalBegin and LastIntervalEnd range = one day
MWHourly output in megawatt hours. (XSD Optional)ISO Required Field
Data Type: Non Negative Decimal (2)
ISO Required Field
Data Type: Non Negative Decimal (0)

When FirstIntervalBegin and LastInterval End range = one month and MW values vary by hour, FromInterval is repeated 720 times (24 hours * 30 days), assuming 30 days in the month and no time transition. If MW values are the same for the entire month, then FromInterval need only occur one time.

Additional Bilateral Schedule Details

MRTU Examples

UseCaseCounterPartyTransactionTypeSourceLocationSinkLocationScheduleTypeProductTypeDependOnTradeName
Buy Energy from NCPA – APN TradeNCPABuyTH_NP15_GEN-APND TH_SP15_GEN-APND TH_ZP26_GEN-APND DLAP_SCE-APND DLAP-PGAE-APND DLAP-SDGE-APNDSame as Source Location APX assumes SinkLocation equals SourceLocation.[FinancialTrade][Energy]Not Applicable.
Sell Energy to BPEC – APN TradeBPECSellSame as Sink Location APX assumes SinkLocation equals SourceLocation.TH_NP15_GEN-APND TH_SP15_GEN-APND TH_ZP26_GEN-APND DLAP_SCE-APND DLAP-PGAE-APND DLAP-SDGE-APND[FinancialTrade][Energy]Not Applicable
Buy Energy from NCPA – PHY TradeNCPABuyGen NodeSame as Source Location APX assumes SinkLocation equals SourceLocation[PhysicalTrade][Energy]TradeABC123
Sell Energy to BPEC – PHY TradeBPECSellSame as Sink Location APX assumes SinkLocation equals SourceLocation.Gen Node[PhysicalTrade][Energy]TradeABC123

TX (ERCOT) Examples

UseCaseCounterPartyTransactionTypeSourceLocationSinkLocationScheduleTypeProductTypeDependOnTradeName
Buy Energy from EAGLEEAGLEBuySettlement Point[Same as SourceLocation][FinancialTrade][Energy]Not Applicable
Sell Capacity to EAGLEEAGLESell[Same as SinkLocation]ERCOT[FinancialTrade]CapacityNot Applicable
Buy NonSpin from NECCNECCBuyERCOT[Same as SourceLocation][FinancialTrade]NSpinNot Applicable
Sell Responsive Primary (Generator Based) to BPBPSell[Same as SinkLocation]ERCOT[FinancialTrade]RRS-PFRNot Applicable
Buy Responsive Primary(Load Based) from ANPANPBuyERCOT[Same as SourceLocation][WholesaleLoad]RRS-PFRNot Applicable
Buy SCED dispatchable ECRS (Load Based) from ANPANPBuyERCOT[Same as SourceLocation][WholesaleLoad]ECRSSNot Applicable

Additional Bids/Offers Details

Definition of Bilateral Schedule Business key

The business key for a bilateral schedule is defined as the unique combination of:

  • Region
  • MarketParticipant
  • MarketStage
  • Interval
  • TransactionType
  • SourceLocation - note that this should be the same as Sink Location for most Regions
  • Sink Location - note that this should be the same as Sink Location for most Regions
  • CounterParty
  • TradeName (optional)
  • ProductType
  • ScheduleType

Handling of Duplicates records for same Bilateral Schedule Business Key in same submission

If an APX Scheduling API file is submitted with duplicate bilateral schedules, all bilateral schedules that match that business key will be rejected and won’t be saved into the APX MarketSuiteTM.

Replacing Bilateral Schedules

To replace a previously submitted bilateral schedule, simply submit an APX Scheduling API file that contains the same MarketParticipantData and BilateralSchedule business keys. The data in the new file will expire previously submitted data for this same business key.

Omitting / Cancelling Bilateral Schedules

Bilateral Schedule data can be omitted / cancelled using one of two methods:

  • Provide a BLANK “MW” attribute – this cancels specific intervals for a specific bilateral schedule if it already exists in the APX MarketSuiteTM or skips those intervals if this represents the initial submission of this bilateral schedule.

Example (Interval 2 is omitted, or cancelled if it was previously submitted to the APX MarketSuiteTM):

<MarketParticipantData Region="MRTU" MarketParticipant="SCID1" MarketStage="DA" FirstIntervalBegin="2021-04-29T07:00:00Z" LastIntervalEnd="2021-04-30T07:00:00Z">
    <BilateralSchedule TransactionType="Sell" SourceLocation="TH_NP15_GEN-APND" SinkLocation="TH_NP15_GEN-APND" CounterParty="SCID2" ProductType="Energy" ScheduleType="FinancialTrade">
        <BilateralScheduleDetail FromInterval="1" MW="50"></BilateralScheduleDetail>
        <BilateralScheduleDetail FromInterval="2"></BilateralScheduleDetail>
        <BilateralScheduleDetail FromInterval="3" MW="42.7"></BilateralScheduleDetail>
...
    </BilateralSchedule>
</MarketParticipantData>
  • Omit the BilateralScheduleDetail element – this cancels the specific bilateral schedule for all intervals from FirstIntervalBegin to LastIntervalEnd

Example:

<MarketParticipantData Region="MRTU" MarketParticipant="SCID1" MarketStage="DA" FirstIntervalBegin="2021-04-29T07:00:00Z" LastIntervalEnd="2021-04-30T07:00:00Z">
    <BilateralSchedule TransactionType="Sell" SourceLocation="TH_NP15_GEN-APND" SinkLocation="TH_NP15_GEN-APND" CounterParty="SCID2" ProductType="Energy" ScheduleType="FinancialTrade">
    </BilateralSchedule>
</MarketParticipantData>

NOTE: If cancelled data was already submitted to the ISO, cancel requests will be sent. All data is versioned in the APX MarketSuiteTM database.