I would avoid mixing virtual variables with time shifts. I've found them unreliable and am pretty sure I recall a section in training that says not to use them in combination.
Instead I'd create a real variable and use a proc at load time to populate it. The LAG keyword on the CALCULATE command allows reference to earlier periods. It is a little flakey in that you need to ensure you have the earlier periods selected prior to running the calculation. Check the help file for exact syntax and run a couple of tests to ensure you understand the working. After that it will be straight forward,