Calculate Return Value - 1,3,6 Month Returns
I don't think your code will return any rows as the WHERE clause will never return true.

SELECT PriceValue FROM @Output WHERE ValuationDate = DATEADD(MONTH,-3,ValuationDate)


This would only make sense if the ValuationDate value inside the DATEADD function was a literal value or a variable like below:

SELECT PriceValue FROM @Output WHERE ValuationDate = DATEADD(MONTH,-3, '20160930')


or

SELECT PriceValue FROM @Output WHERE ValuationDate = DATEADD(MONTH,-3, @MyValuationDate)


I'm also assuming that ValuationDate is a DATE type column and not a DATETIME or DATETIME2.

But I think I understand your question and the code below should be what you need:

SELECT PriceValue 
FROM @Output
WHERE ValuationDate = EOMONTH(DATEADD(MONTH, -3, @MyValuationDate))