@enum Frequency Year Semester Quarter Month Week Business Day struct Period ordinal::Int64 frequency::Frequency end function Period(year, subperiod, frequency) <: AbstractPeriod if frequency == Year ordinal = year - 1970 elseif frequency == Semester @assert(subperiod in 1:2) ordinal = 2*(year - 1970) + subperiod - 1 elseif frequency == Quarter @assert(subperiod in 1:4) ordinal = 4*(year - 1970) + subperiod - 1 elseif frequency == Month @assert(subperiod in 1:12) ordinal = 12*(year - 1970) + subperiod - 1 elseif frequency == Week ordinal = week1970(year, week) end end