Create Delivery Request
Follow the three-step process to create a curve delivery commitment
📊 How Curve Data is Organized
CurveDefinition
Reusable TemplatePurpose: Defines what kind of curve this is. Templates are reused across many forecast runs.
market
→ "ERCOT", "CAISO", "PJM"location
→ "Houston", "SP15", "North Hub"product
→ "Revenue_Optimized", "LMP"curveType
→ "REVENUE", "TB4", "ENERGY_ARB"batteryDuration
→ "HOUR_4", "HOUR_2"scenario
→ "BASE", "BULL", "P50"units
→ "$/MWh", "MW"degradationType
→ "NONE", "DATE", "PERCENTAGE"units
→ "$/MWh", "MW", "MWh"CurveInstance
Specific RunPurpose: A specific forecast run of the definition template. Contains when and who created this version.
curveDefinitionId
→ Links to template aboveinstanceVersion
→ "v1.0", "v2.1", "final"createdBy
→ "Aurora", "Gridstor"granularity
→ "HOURLY", "DAILY"deliveryPeriodStart
→ "2025-01-01"deliveryPeriodEnd
→ "2025-12-31"forecastRunDate
→ When createdmodelType
→ "Fundamental", "Statistical"CurveInstanceData
Raw DataPurpose: Individual data points with flexible percentile storage. Multiple rows per timestamp for different confidence levels.
curveInstanceId
→ Links to specific run abovetimestamp
→ "2025-01-01 00:00:00"pvalue
→ 10, 50, 90 (percentile number)value
→ $45.67 (forecast at this percentile)units
→ "$/MWh", "MW", "MWh"pValueGranularity
→ "MONTHLY", "YEARLY"granularity
→ "HOURLY" (from CurveInstance)flags
→ ["outlier", "holiday", "estimated"]🔗 How The Three Tables Connect
🤔 Why Three Separate Tables?
Think of it like a recipe system: You have recipe templates (CurveDefinition) that describe what to make, specific cooking sessions (CurveInstance) where someone actually makes the recipe on a particular day, and detailed measurements (CurveInstanceData) of every ingredient amount used during that cooking session. This structure avoids repeating the same template information thousands of times and lets you compare different cooking sessions of the same recipe.
CurveDefinition: The Template
What it is: A high-level description of what kind of curve this is. Think "recipe name and basic ingredients."
Example: "Houston Revenue 4H Battery"
CurveInstance: The Specific Forecast Run
What it is: Someone actually creates a forecast using that template. Think "Aurora cooked the Houston Revenue recipe on March 15th."
Instance #23: "March 2025 Monthly by Aurora"
Instance #31: "March 2025 Monthly by Gridstor"
Notice: Both instances use the same template (Definition #7) but have different creators, versions, and models.
CurveInstanceData: The Actual Numbers
What it is: The actual forecast numbers with confidence levels. Think "exact measurements for every month."
Data for Instance #23 (Aurora's March 2025 forecast):
Timestamp | pvalue | value | units | curveInstanceId |
---|---|---|---|---|
2025-03-01 | 10 | $42.50 | $/MWh | 23 |
2025-03-01 | 50 | $48.75 | $/MWh | 23 |
2025-03-01 | 90 | $55.20 | $/MWh | 23 |
2025-04-01 | 10 | $38.90 | $/MWh | 23 |
2025-04-01 | 50 | $44.25 | $/MWh | 23 |
2025-04-01 | 90 | $51.80 | $/MWh | 23 |
🔍 How to Trace the Connections:
2. Find all CurveInstances where curveDefinitionId = 7 → (Instance #23, #31, etc.)
3. Get all CurveInstanceData where curveInstanceId IN (23, 31, etc.)
📋 Delivery Request Preview
Creating Delivery Request...
Please wait while we process your request.