Skip to main content

Calendar Functions

Functions that create or use calendars

AnnualCalendar

A constructor to create a calendar of annual frequency.

Syntax

cal = AnnualCalendar()

BlockCalendar

A constructor to create a calendar for a period of the day.

This is usually used for electricity blocks, such as peak, off-peak, morning etc.

Syntax

cal = BlockCalendar(holiday, observed, start, end)
cal = BlockCalendar(holiday, observed, start, end, timezone)

Examples

qh = IntradayCalendar("15m")
bc = BlockCalendar(null, qh, 4, 5)

Also see: IntradayCalendar and HourlyBlockCalendar

CurveDate

A constructor to create a curve date.

A curve date consists of a date and an expiry calendar

Syntax

cd = CurveDate(date, expirycalendar)

Example

// Using the code for an Expiry Calendar 
cd = CurveDate("2023-03-15", "#REOMHENG")

// Using an actual expiry calendar
expcal = ${expiry:"#REOMHENG"}
cd = CurveDate("2023-03-15", expcal)

HourlyBlockCalendar

A constructor to create an hourly calendar for a period of the day.

This is usually used for electricity blocks, such as peak, off-peak, morning etc.

Syntax

cal = HourlyBlockCalendar(holiday, start, end)
cal = HourlyBlockCalendar(holiday, start, end, timezone)

Examples

#OP1 = HourlyBlockCalendar(DailyCalendar(), 0, 7)
#OP1.name = "Off-Peak 1"

Also see: IntradayCalendar and BlockCalendar

IntradayCalendar

A constructor to create an intraday calendar

An intraday calendar is a regular calendar with a period size of less than a day, e.g. hourly

Syntax

cal = IntradayCalendar(duration)
cal = IntradayCalendar(duration, holiday)
cal = IntradayCalendar(duration, holiday, withouthours)
cal = IntradayCalendar(duration, holiday, withouthours, timezone)
cal = IntradayCalendar(duration, holiday, withouthours, timezone, useHolidays)

Examples

// Create an hourly calendar
hourly = IntradayCalendar(1h)

// Create a half-hourly calendar
hh = IntradayCalendar(30m)

// Create an hourly calendar from 07:00 to 19:00 inclusive
peak = IntradayCalendar(1h, hcal, [0,1,2,3,4,5,6,20,21,22,23])

// Using a timezone
#NERC = ${calendar:"#NERC"}
PJMPEAK = IntradayCalendar(1h, #NERC, [0,1,2,3,4,5,22,23], "US/Central")

// Using a timezone and marking holiday days as full day
PJMOFFPEAK = IntradayCalendar(1h, #NERC, [6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21], "US/Central", true)

Also see: BlockCalendar and HourlyBlockCalendar