Lindo Systems

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