Background: We put in product dates for our Opportunity Line Items and also use Scheduling for quantity and revenue (typically repeating monthly revenue). Our opportunity records capture products for an annual cycle but it is typically not a calendar year.  So for the line items on the opportunity, the revenue may span 2 calendar years. 

I need to capture, both that each Opportunity level and the Account level, how much revenue will fall into each calendar year. 

My first thought is to build roll up summary fields on the opportunity object for each year.  Then also build roll up summary fields on the account record rolling up that year's revenue from each of its opportunities.  So for example I would have a 2016 and 2017 revenue field on every opportunity and account.

Solution:

You can create a two step roll-up process. One rollup will go from OpportunityLineItemSchedule up to the OpportunityLineItem (Opportunity Product) and another rollup will rollup this rollup field from OpportunityLineItem up to Opportunity. You can apply a filter on the first rollup (from the OpportunityLineItemSchedule) to filter for just those "scheduled items" revenue or quantity amounts that are falling within the current year (fiscal or calendar). This could then be further rolled up to the Account level. The only challenge with this solution is that it will not be in real-time since Salesforce doesn't support triggers on OpportunityLineItemScheduled, but fortunately, we have a workaround for that to trigger your rollup to run when the OpportunityLineItem (OpportunityProduct) page is loaded. Alternatively, you run your rollups on a schedule.