I have come to a workaround which gets the exact results for YTD, but it isn't, shall we say, elegant.
I hit on it when considering the table I posted in my previous reply above. As I said there, the RevEx by month came out exactly correct but the RevEx YTD didn't. Now, I created that table by putting RevEx and RevEx YTD in the 'Values' bit of the Ad Hoc Query Configuration and a Month Range in the 'Columns' bit of AHQ Config.
In retrospect, what hit on me was not that RevEx YTD came out wrong, but that the RevEx came out right for each month! The reason that was surprising was that if the Month-based 'Time' element in the columns calculated in the same way as the Value Field Modifier in the Value field (i.e. look at past and future month costs of just the unit identifiers of the current month) then surely even the RevEx from other months that current one would also come out wrong (as suggested by your above reply, Kevin). In other words, both RevEx and RevEx YTD would be wrong but consistent: RevEx would be wrong but RevEx YTD would be a consistent and accurate addition of those wrong monthly RevEx figures.
The fact that using the Month-based Time features in the column came out right, means that the calculation must proceed in a completely different way. It must look at those time period/s specified and work out the cost for the unit identifiers of that time period, and display it. That then comes out for the right value per month and obviously, I could set up a formula in an editable table to add those together.
And if I can do that in a table, why not in a formula? I imagined the 'TimePeriod' function would do the same. So, I tried (In Sept 2015): =TimePeriod(RevEx,-8)+TimePeriod(RevEx-7)+TimePeriod(RevEx,-6)+TimePeriod(RevEx,-5)+Time Period(RevEx,-4)+TimePeriod(RevEx,-3)+TimePeriod(RevEx,-2)+TimePeriod(RevEx,-1)+RevEx
And, Ta Dah! It worked. The issue is that this is a very specific formula just for September, so had to build this grotesquely long formula so that it would work in whatever month you happened to be in:

Which basically works as follows:

Again, this comes out with exactly the right answer. Of course, in the time period function you can have whatever metric you like to be YTD: Cost, RevEx, Storage Allocated, CPU Hours etc
So, in future, rather than used =YearToDate(Metric), going to have to use a big old formula. It works, but is annoying.
What I suggest Apptio do is change the behaviour of the =YearToDate(Metric) formula to mimic what I am doing above so we can use that again (and for all the time aggregation functions)
That is, currently the time aggregation functions:
- Look at each unit identifier in the current month in turn
- For that unit identifier, aggregated results of metric from all time periods
- Does the same for all other unit identifier in the current month
- Sums the results, and that is your (often incorrect) answer (, if the unit identifiers have changed)
Instead, what needs to happen is:
- For each relevant month, calculate the metric values for each unit identifier from that month
- Afterwards, it can then aggregate the results for the same unit identifiers that exist in multiple months
- But, would still count a one-month result (say) for a unit identifier that only appeared in one month (say), in the grand total
- The resultant total would give the right result.
Neil