Long-term return forecasting
Many researchers and practitioners argue that a long-term return forecast would be overestimated if it is based on the arithmetic mean of the past returns and underestimated based on a geometric mean. Using 80 years' historical returns to forecast the next 25-year future return, Jacquier, Kane, and Marcus (2003) suggest the following weighted scheme:
The following program reflects equation (12):
from matplotlib.finance import quotes_historical_yahoo import numpy as np import pandas as pd ticker='IBM' # input value 1 begdate=(1926,1,1) # input value 2 enddate=(2013,12,31) # input value 3 n_forecast=15. # input value 4 def geomean_ret(returns): product = 1 for ret in returns: product *= (1+ret) return product ** (1.0/len(returns))-1 x=quotes_historical_yahoo(ticker,begdate,enddate,asobject=True,adjusted=True) logret = log(x.aclose[1:]/x.aclose[:-1]) date=[] d0=x.date for i in range(0,size(logret)): ...