Skip to content

Fix scalar generation revenue escalation - #25

Merged
caleb-sitton-inl merged 1 commit into
mainfrom
revenue-escalation
Aug 4, 2026
Merged

Fix scalar generation revenue escalation#25
caleb-sitton-inl merged 1 commit into
mainfrom
revenue-escalation

Conversation

@j-bryan

@j-bryan j-bryan commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Restore project-default escalation for scalar EnergyProject.generation_revenue(price=...), including earliest-generation reference-date fallback when no explicit reference date is configured.
  • Introduce price_policy= for complete GenerationPrice policies so fixed, scheduled, callable, contract, and remainder prices remain explicit and are not escalated twice.
  • Apply the same scalar pricing semantics to construction-outage lost-revenue fallback while preserving the requirement for explicit outage prices with dynamic policies.
  • Add hand-derived regression coverage for implicit and explicit reference dates, validation boundaries, and outage behavior, and document the scalar-versus-policy contract in the public API guides.

The implementation preserves the distinction between the scalar convenience API and complete GenerationPrice policies in RevenueConfig and ProjectCompiler, allowing only the former to inherit default_escalation. Outage fallback reuses the compiler’s resolved scalar policy so revenue and lost-revenue calculations stay consistent without duplicating escalation logic.

Closes #24

@caleb-sitton-inl caleb-sitton-inl left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The implementation and test updates look good. I do wonder if explicitly not escalating prices from price policies reduces their utility, especially for the fixed option. Would it be helpful to provide apply_escalation arguments for price policy construction methods so the user doesn't always have to do it manually when they need to use a GenerationPrice?

@j-bryan

j-bryan commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator Author

That's a good point. I think it would be a good item for future improvement to DCAF. I've opened #26 to track this as a potential development item we can tackle later.

@caleb-sitton-inl
caleb-sitton-inl merged commit 34c159e into main Aug 4, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Scalar generation revenue does not inherit project default escalation

2 participants