```MODEL: ! Estimation of the Hodrick-Prescott stochastic trend; ! Based on a version by Eren Ocakverdi; ! The problem: Given a series of observations, we want to derive a sequence of smoothed "forecasts" for which the trend from period to period does not vary too much but which also approximates the original data; ! Ref: Hodrick, R., and E. Prescott (1997), "Postwar U.S. Business Cycles: An Empirical Investigation," Journal of Money, Credit, and Banking, vol. 29, no. 1, pp. 2-16; ! Keywords: Hodrick-Prescott filtering, smoothing, filtering, time series, forecasting, trend forecasting, business cycle forecasting; SETS: PERIODS: OBSERVED, CYCLE, CHANGE, TREND; ENDSETS DATA: ! Suggested values for the penalty (or smoothing) parameter lambda are 100-400, 1600 and 14400 respectively for annual, quarterly and monthly time series; L=14400; ! Observed values of the time series; OBSERVED = 110.6 106.4 102.7 102.7 87.2 107.9 102.7 107.9 110.1 111.4 108.0 117.3 124.7 110.7 124.9; ENDDATA N = @SIZE(PERIODS); ! Number of periods in this data set; ! Minimize a weighted sum of squared errors and the squared 2nd differences from period to period; [OBJ] MIN= @SUM( PERIODS: CYCLE^2)+ L*@SUM( PERIODS: CHANGE^2); ! The change in trend; @FOR( PERIODS( T) | T #GT# 1 #AND# T #LT# N: CHANGE( T) = (TREND( T + 1) - TREND( T)) - (TREND( T)-TREND( T-1))); ! Fluctuations around the trend; @FOR( PERIODS: CYCLE = OBSERVED - TREND); ! Fluctuations and smoothed values can be either positive or negative; @FOR( PERIODS: @FREE( CYCLE); @FREE( TREND)); END ```