CSV File Format – PJM, SPP, MISO, ISONE, and NYISO
File Format Validations:
- A file must contain the “Header” section and all its columns (case-sensitive). Files without the Header section will be rejected.
-
The file must choose between the following content options:
- One or both of the “BidsOffers” and/or “ResourceParameters” sections. If both are provided they must be in that order. The sections should not be repeated—all BidOffer rows should be under one BidsOffers section.
- BilateralSchedules
- For any/all data section submitted, all column names are required (case-sensitive), in the order shown above, even if there is no data for any row.
- These format validations will result in the entire file being rejected.
File Scope:
- Multiple Participant Submissions : BidOffer and Resource Parameter data for multiple participants may be submitted together in the same file, so long as the user submitting the data is authorized for each of the participants.
-
Multi-Day BidOffer Submissions
: Users may submit up to seven days at a time.
- If Submit to ISO = True, we will submit all open ISO intervals and save the rest if the data into MarketSuite. If set to False we will save everything (assuming the MarketSuite windows are open – i.e. intervals in the past will be rejected).
-
Common Validations
:
- If all accounts are mapped to user login the file should succeed.
- If only a subset of accounts are mapped to users login APX will process those accounts and reject the rest
- If file contains trade dates beyond system variable APX will process those for open dates and reject the rest
-
If the number of days submitted via CSV are less than or equal to the configured system variable (31 days):
-
AND does not contain days for closed MarketSuite time windows
-
AND SubmitToISO = True, then
- Submit all data for time windows open at the ISO and Save the remaining intervals
-
AND SubmitToISO = False, then
- Save all data
-
AND SubmitToISO = True, then
-
AND contains days for closed MarketSuite time windows
-
AND SubmitToISO = True, then
- Submit all data for time windows open at the ISO and Save for the remaining intervals.
- Reject intervals associated with closed time windows
-
AND SubmitToISO = False, then
- Save all data associated with open time windows
- Reject Intervals associated with closed time windows
-
AND SubmitToISO = True, then
-
AND does not contain days for closed MarketSuite time windows
- Users should exercise caution when submitting near a market deadline. APX will process the CSV file, but cannot guarantee the ISO data processing time. For this reason, APX recommends that, when submitting near a market deadline, users submit only the immediate trade date in question.
- Data submitted in advance of ISO scheduling windows will require user submission when the ISO scheduling window opens. APX does not queue submissions for scheduling windows that are not yet open at the ISO (i.e. data will only be saved in the APX MarketSuite).
File Content
Header:
Column Name | Data Type | Description | Required |
---|---|---|---|
Version | Integer | CSV format version. "1" is the latest | N |
SourceSystem | String | The system of origin | N |
CreateDate | Datetime | Datetime supplied by user. Not validated. | N |
SubmitToISO | boolean | A flag that indicates that the bids/offers should be sent automatically to the ISO. ‘False’ means that the bids/offers will need to be reviewed and submitted interactively using the APX MarketSuite® Checkout application. | Y |
Region | string | ISO for which the transactions are being submitted Available values: MRTU, TX, PJM, MISO, ISONE, NYISO, SPP | Y |
BidsOffers:
Column Name | Data Type | Description | Required |
---|---|---|---|
Participant | string | The participant for which the transaction is being submitted | Y |
Date | date | Trade date for the transaction. Example: 8/20/2015 | Y |
Hour | string | Hour of the day, in “Hour Ending” (1-24). Use “2x” for the duplicate hour on the Daylight Saving Time long day | Y |
Transaction | string | The type of transaction. Possible values vary by region. See region-specific sections of this portal. | Y |
Location | string | Name or number of the ISO location. In the case of transactions that are point-to-point, this is the source location. | Y |
SinkLocation | string | Name or number of the ISO sink location. This is only used for point-to-point transactions. | N* |
MW | decimal | MW value | Y |
Price | decimal | Price for the transaction. If a multi-point bid curve is being submitted, the price will correspond to the MW point in the same row. Please see "multi-point bids" section for more information. | N* |
ReferenceCode | string | Identifier used in some transactions, often for transmission contract or bid name. See ISO-specific sections for more information | N* |
Attributes | string | Pipe-separated name/value pairs for attributes specific to the transaction being submitted. See "BidOffer and Trade Attributes" section for more information. Available attributes for a transaction are listed in the region-specific sections of this portal. | N* |
*May be required for some transaction types
ResourceParameters
Column Name | Data Type | Description | Required |
---|---|---|---|
Participant | string | The participant for which the transaction is being submitted | Y |
Date | date | Trade date for the transaction. Example: 8/20/2015 | Y |
Hour | string | Hour of the day, in “Hour Ending” (1-24). Use “2x” for the duplicate hour on the Daylight-Saving long day. Use “1” for Daily-level resource parameters. | Y |
Parameter | string | Name of the parameter. Possible values vary by region. See region-specific sections of this portal. | Y |
Location | string | Name or number of the ISO location. | Y |
Value | string | Numeric or text value for the parameter | N* |
TableValueX | string | Pipe-separated name/value or X/Y(/Z) sets. Used for submitting ramp rate curves and other complex parameters. (not currently used for SPP) | N* |
TableValueY | string | Pipe-separated name/value or X/Y(/Z) sets. Used for submitting ramp rate curves and other complex parameters. (not currently used for SPP) | N* |
TableValueZ | string | Pipe-separated name/value or X/Y/Z sets. Used for submitting ramp rate curves and other complex parameters. (not currently used for SPP) | N |
ReferenceCode | string | Used for Schedule ID in PJM and ISONE, where many parameters are entered for a discrete "Schedule ID" | N* |
*required for some transactions
ResourceParameters
Column Name | Data Type | Description | Required |
---|---|---|---|
Participant | string | The participant for which the bilateral schedule is being submitted | Y |
Date | date | Trade date for the bilateral schedule. Example: 8/20/2019 | Y |
Hour | string | Hour of the day | Y |
Transaction | string | Name of the bilateral schedule type. Possible values vary by region. See region-specific sections of this portal. | Y |
Location | string | Name or number of the ISO location. | Y |
SinkLocation | string | For bilateral schedules that have a source and a sink, name or number of the ISO Sink location. | N* |
CounterParty | string | Not required for these regions. | N |
MW | decimal | MW value of the transaction | Y (leave blank to cancel) |
ReferenceCode | string | ISO-issued code for the bilateral schedule contract. | Y |
Attributes | string | Pipe-separated name/value pairs for attributes specific to the bilateral schedule being submitted. Available attributes for a transaction are listed in the region-specific sections of this portal. | N |
Multi-Point Bids
Multi-point bids—such as generator offer curves or virtual bids—are entered with one row per bid point. With the exception of the MW and Price columns, all other data must be the same. There will be no validation to ensure that the multi-point bid set conforms to the particular ISO rules for that transaction, the points will be saved in the MarketSuiteTM in the order that they appear in the CSV file and sent to the ISO (upon user submittal) for validation.
Example of BidsOffers section for a three-point bid transaction for one hour:
Participant | Date | Hour | Transaction | Location | SinkLocation | MW | Price | ReferenceCode | Attributes |
---|---|---|---|---|---|---|---|---|---|
DEMO | 1/20/2019 | 8 | DA Virtual Bid | GRDA_HUB | 10 | 35 | CurveType=Block | ||
DEMO | 1/20/2019 | 8 | DA Virtual Bid | GRDA_HUB | 20 | 30 | CurveType=Block | ||
DEMO | 1/20/2019 | 8 | DA Virtual Bid | GRDA_HUB | 30 | 25 | CurveType=Block |
BidOffer Attributes
BidOffer transactions may have optional or required attributes. These attributes may have default values and the user will only need to supply a value when it differs from the default. The specific attributes available for each transaction, along with the default for that attribute, are listed in the ISO-specific sections. When multiple attributes are submitted for a single transaction, the name/values are pipe-separated (i.e. “|”).
Example of a single attribute for a transaction:
Attributes |
---|
DependOnTradeName=APXY Buy |
Example of multiple attributes for a transaction:
Attributes |
---|
CurveType=Fixed;LinkedHours=8-2 |
Cancelling
For cancelling BidsOffers, the transaction to be canceled must be submitted with no values in the MW and price columns. When canceling a multi-point bid, only submit one row (not a row for each bid point).
Example of a canceled bid:
Participant | Date | Hour | Transaction | Location | SinkLocation | MW | Price | ReferenceCode | Attributes |
---|---|---|---|---|---|---|---|---|---|
DEMO | 1/20/2019 | 8 | DA Virtual Bid | GRDA_HUB | CurveType=Block |
Resource Parameters cannot be canceled, but in some cases they may be nullified (i.e. replacing a value with NULL).
Data Coverage for Create/Update/Cancel
All Create, Update and Cancel operations must be explicit. For example, if a bid is submitted for 24 hours of a day, and then the file is re-submitted without the row for the first hour, the first hour will not be canceled or deleted from MarketSuite®.
PJM Market Participant Data
This section will detail all of the transactions that may be submitted in a CSV file in the PJM region, as well as special validations for PJM.
PJM BidOffer
The following Transactions are supported when submitting BidOffer data for PJM. If you would like to schedule a transaction that is not listed below, please contact your APX Account Manager.
Transaction | Description | Location Type | Reference Code | Available Attributes | Notes |
---|---|---|---|---|---|
DA Gen Energy Market | Generator Energy Market Bid for DAM. Minimum one, max ten Price/MW rows | Generator | Numeric PJM Schedule ID, e.g. ‘1’ or ‘99’ - required | Required: ‘CurveType’ (Block or Slope) | |
RT Gen Energy Market | Generator Energy Market Bid for RTBM. Minimum one, max ten Price/MW rows | Generator | Numeric PJM Schedule ID, e.g. ‘1’ or ‘99’ - required | Required: ‘CurveType’ (Block or Slope) | |
DA Decrement Bid | DAM Virtual Bid | Settlement Point | N/A | Required: ‘CurveType’ (Block or Slope) | |
DA Increment Offer | DAM Virtual Offer | Settlement Point | N/A | Required: ‘CurveType’ (Block or Slope) | |
DA Fixed Demand Bid | Load Energy value in the DAM. | Load Zone | N/A | ||
DA Price Sensitive Demand Bid | Load Energy Market Bid for DAM. Minimum one, max ten Price/MW rows | Load Zone | N/A | Required: ‘CurveType’ (Block or Slope) |
PJM ResourceParameters
The following parameters are supported in PJM. These are all part of the ‘Energy Operating Limits’ template.
Notes:
- Only submit the parameters that you wish to change. The APX MarketSuite® will take existing value for non-submitted parameters and use those for the submission to PJM. The APX MarketSuite® regularly pulls down data from the PJM portal, so should have the latest info.
Parameter Name | Data Type/Format | Description | Location Type | Notes |
---|---|---|---|---|
Commitment Status | String | Commitment status of the generator. Available values: · Unavailable · Economic · Emergency · MustRun | Generator | |
Economic Max MW | Decimal | Optional element specifying the economic maximum limit for the hourly interval. | Generator | |
Economic Min MW | Decimal | Optional element specifying the economic minimum limit for the hourly interval. | Generator | |
Emergency Max MW | Decimal | Optional element specifying the emergency maximum limit for the hourly interval. | Generator | |
Emergency Min MW | Decimal | Optional element specifying the emergency minimum limit for the hourly interval. | Generator | |
Fixed Gen | boolean | Optional element specifying the fixed generation indicator for the unit for this hour. Must be ‘true’ or ‘false’ | Generator |
PJM BilateralSchedules
The following parameters are supported in PJM. Note that APX does not support scheduling for monthly capacity trades.
Notes:
- A ReferenceCode is required for all PJM bilaterals.
- APX does not support scheduling monthly capacity trades
- APX regularly pulls down the bilateral contracts from PJM InSchedule. A contract must be saved in the MarketSuite in order to submit a bilateral schedule.
- MarketSuite does not support the upload of trade contracts.
Transaction Name | Description | Notes |
---|---|---|
DA Sell Energy IBT/DA Buy Energy IBT | Day-Ahead Market Internal Bilateral Trade. | |
RT Sell Energy IBT/RT Buy Energy IBT | Real-Time Market Internal Bilateral Trade. | |
RT Sell Energy RLR/RT Buy Energy RLR | Real-Time Retail Load Responsibility Bilateral Trade. | |
RT Sell Energy WLR/RT Buy Energy WLR | Real-Time Wholesale Load Responsibility Bilateral Trade. | |
DA Buy SchRes /DA Sell SchRes | DA Scheduling Reserve Bilateral Trade. | |
RT Buy NonSynch/RT Sell NonSynch | RT Non-Synchronized Reserve Bilateral Trade. | |
RT Buy Regulation/RT Sell Regulation | RT Regulation Bilateral Trade. | |
RT Buy Synch/RT Sell Synch | RT Synchronized Reserve Bilateral Trade. |
SPP Market Participant Data
This section will detail all of the transactions that may be submitted in a CSV file in the SPP region.
SPP BidOffer
The following Transactions are supported when submitting BidOffer data for SPP. | Transaction | Description | Location Type | Reference Code | Available Attributes| Notes| |-------------|-------------|-------|-----|---------------|-------------| |DA Gen Energy Market| Generator Energy Market Bid for DAM. Minimum one, max ten Price/MW rows| Generator| N/A| Required: ‘CurveType’ (Block or Slope)| |RT Gen Energy Market| Generator Energy Market Bid for RTBM. Minimum one, max ten Price/MW rows| Generator| N/A| Required: ‘CurveType’ (Block or Slope)| |DA Virtual Bid| Generator Spin Market Bid. One row with values for Price and MW |Settlement Point| N/A| Required: ‘CurveType’ (Block or Slope)| |DA Virtual Offer| Generator Non-Spin Market Bid. One row with values for Price and MW |Settlement Point| N/A| Required: ‘CurveType’ (Block or Slope)|
SPP ResourceParameters
The following parameters are supported in SPP. These are all part of the ‘Energy Operating Limits’ template.
Notes:
- Parameters must be submitted for a specific market stage—DAM or RTBM. As such, each parameter has a “-DA” or “-RT’ suffix to indicate the market.
- Only submit the parameters that you wish to change. The APX MarketSuite® will take existing value for non-submitted parameters and use those for the submission to SPP. The APX MarketSuite regularly pulls down data from the SPP portal, so should have the latest info.
Parameter Name | Data Type/Format | Description | Location Type | Notes |
---|---|---|---|---|
MaxEconomicLimit-DA MaxEconomicLimit-RT |
Decimal | An economic MW level at or below a Resource’s Maximum Normal Capacity Operating Limit used for constraining Energy dispatch and Contingency Reserve clearing during normal system conditions. | Generator | |
MaxEmergencyLimit-DA MaxEmergencyLimit-RT |
Decimal | The maximum MW level at which a Resource other than a Block Demand Response Resource may operate under Emergency system conditions. | Generator | |
MaxEmergencyRuntime-DA MaxEmergencyRuntime-RT |
string (hh:mm) | The maximum length of time a Resource can operate above its Maximum Normal Capacity Operating Limit up to its Maximum Emergency Capacity Operating Limit. | Generator | |
MaxNormalLimit-DA MaxNormalLimit-RT |
Decimal | The maximum MW level at which a Resource may operate continuously. | Generator | |
MaxRegulationLimit-DA MaxRegulationLimit-RT |
Decimal | The maximum MW level at which a Regulation Qualified Resource, a Regulation-Up Qualified Resource or a Regulation-Down Qualified Resource may operate while providing Regulation Deployment. | Generator | |
MinEconomicLimit-DA MinEconomicLimit-RT |
Decimal | A MW level at or above a Resource’s Minimum Normal Capacity Operating Limit used for energy dispatch at a minimum level during normal operating conditions. | Generator | |
MinEmergencyLimit-DA MinEmergencyLimit-RT |
Decimal | The minimum MW level at which a Resource other than a Block Demand Response Resource may operate under Emergency system conditions. | Generator | |
MinEmergencyRuntime-DA MinEmergencyRuntime-RT |
string (hh:mm) | The maximum length of time a Resource can operate below its Minimum Normal Capacity Operating Limit down to its Minimum Emergency Capacity Operating Limit. | Generator | |
MinNormalLimit-DA MinNormalLimit-RT |
Decimal | The minimum MW level at which a Resource may operate continuously. | Generator | |
MinRegulationLimit-DA MinRegulationLimit-RT |
Decimal | The minimum MW level at which a Regulation Qualified Resource, a Regulation-Up Qualified Resource or a Regulation-Down Qualified Resource may operate while providing Regulation Deployment. | Generator | |
MQSRLimit-DA MQSRLimit-RT |
Decimal | The maximum amount of Supplemental Reserve that can be provided by a Quick-Start Resource from an off-line state. | Generator | |
TARRFactor-DA TARRFactor-RT |
Decimal | Turn-Around Ramp Rate Factor | Generator |
MISO Market Participant Data
This section will detail all of the transactions that may be submitted in a CSV file in the MISO region, as well as special validations for MISO.
MISO BidOffer
The following Transactions are supported when submitting BidOffer data for MISO. If you would like to schedule a transaction that is not listed below, please contact your APX Account Manager.
Transaction | Description | Location Type | Reference Code | Available Attributes | Notes |
---|---|---|---|---|---|
DA Load Energy Self | Load Energy value in the DAM. | Settlement Point | N/A | ||
DA Load Energy Market | Load Energy Market Bid for DAM. Minimum one, max ten Price/MW rows | Settlement Point | N/A | Required: ‘CurveType’ (Block) | |
DA Virtual Bid | Generator Spin Market Bid. One row with values for Price and MW | Settlement Point | N/A | Required: ‘CurveType’ (Block) | |
DA Virtual Offer | Generator Non-Spin Market Bid. One row with values for Price and MW | Settlement Point | N/A | Required: ‘CurveType’ (Block) |
MISO BilateralSchedules
The following bilateral schedules are supported in MISO.
Notes:
- A ReferenceCode is required for all MISO bilaterals.
- APX regularly pulls down the bilateral contracts from MISO. A contract must be saved in the MarketSuite in order to submit a bilateral schedule.
- MarketSuite does not support the upload of trade contracts.
Transaction Name | Description | Notes |
---|---|---|
DA Buy Energy FinSchedule DA Sell Energy FinSchedule |
Day-Ahead Energy Financial Schedule. | |
RT Buy Energy FinSchedule RT Sell Energy FinSchedule |
Real-Time Energy Financial Schedule. |
ISONE Market Participant Data
This section will detail all of the transactions that may be submitted in a CSV file in the ISONE region, as well as special validations for ISONE.
ISONE BidOffer
The following Transactions are supported when submitting BidOffer data for ISONE. If you would like to schedule a transaction that is not listed below, please contact your APX Account Manager.
Transaction | Description | Location Type | Reference Code | Available Attributes | Notes |
---|---|---|---|---|---|
DA Load Energy Self | Load Energy value in the DAM. | Settlement Point | May be used to specify the ISONE Settlement SubAccount* | ||
DA Load Energy Market | Load Energy Market Bid for DAM. Minimum one, max ten Price/MW rows | Settlement Point | May be used to specify the ISONE Settlement SubAccount* | Required: ‘CurveType’ (Block) | |
DA Virtual Bid | Generator Spin Market Bid. One row with values for Price and MW | Settlement Point | May be used to specify the ISONE Settlement SubAccount* | Required: ‘CurveType’ (Block) | |
DA Virtual Offer | Generator Non-Spin Market Bid. One row with values for Price and MW | Settlement Point | May be used to specify the ISONE Settlement SubAccount* | Required: ‘CurveType’ (Block) |
*The ReferenceCode column may be used to specify an ISONE Settlement SubAccount to which the transaction will be associated. Else, transaction will be submitted without a sub-account, which means the transaction will be associated with the ‘Default’ SubAccount.
ISONE BilateralSchedules
The following bilateral schedules are supported in ISONE.
Notes:
- A ReferenceCode is required for all ISONE bilaterals.
- APX regularly pulls down the bilateral contracts from ISONE. A contract must be saved in the MarketSuite in order to submit a bilateral schedule.
- MarketSuite does not support the upload of trade contracts.
Transaction Name | Description | Notes |
---|---|---|
DA Sell Energy IBT DA Buy Energy IBT |
Day-Ahead Market Internal Bilateral Trade. | |
RT Sell Energy IBT RT Buy Energy IBT |
Real-Time Market Internal Bilateral Trade. | |
DA Sell TMOR IBT DA Buy TMOR IBT |
DA 30-minute Operating Reserve Bilateral Trade. | |
DA Sell TMNSR IBT DA Buy TMNSR IBT |
DA Ten-Minute Non-Synchronized Reserve Bilateral Trade. | |
RT Sell LoadResp IBT RT Buy LoadResp IBT |
RT Load Responsibility Bilateral Trade |
NYISO Market Participant Data
This section will detail all of the transactions that may be submitted in a CSV file in the NYISO region, as well as special validations for NYISO.
NYISO BidOffer
The following Transactions are supported when submitting BidOffer data for NYISO. If you would like to schedule a transaction that is not listed below, please contact your APX Account Manager.
Transaction | Description | Location Type | Reference Code | Available Attributes | Notes |
---|---|---|---|---|---|
DA Load Energy Self | Load Energy self-Schedule in the DAM. | Settlement Point | N/A | ||
DA Load Energy Forecast | Load Energy forecast in the DAM. | Settlement Point | N/A | ||
DA Load Energy Market | Load Energy Market Bid for DAM. Minimum one, max ten Price/MW rows | Settlement Point | N/A | Required: ‘CurveType’ (Block) | |
DA Virtual Bid | Generator Spin Market Bid. One row with values for Price and MW | Settlement Point | N/A | Required: ‘CurveType’ (Block) | |
DA Virtual Offer | Generator Non-Spin Market Bid. One row with values for Price and MW | Settlement Point | N/A | Required: ‘CurveType’ (Block) |