Representing historical prices of certain financial instruments
What about a slightly different way of creating your classes?

class Quarter
{
    int Year { get; set; }
    List&lt;DailyPrice&gt; Prices { get; set; }
}
class DailyPrice
{
    public DailyPrice(DateTime? date, double? price)
    {
        Date = date;
        Price = price;
        QuarterPeriod = FindOrCreateQuarterObject(this);
    }
    public DateTime? Date { get; set; }
    public double? Price { get; set; }
    public Quarter QuarterPeriod { get; set; }
}


As you create your DailyPrice objects, you can add to the pointer list in the appropriate quarter.  That way if you are collecting aggregate data by quarter all you have to do is spin through your quarters, and then do the aggregation on each quarter's list.

It takes a little more time upfront, and a few more pointers, but you'll save time if you plan to do multiple calculations.