Start Values

<- Previous: Modifying NLP globals
Next ->: Saving and Retrieving Estimates for Start Values

Parameters of time series models in general require constraints to ensure stationarity and for ARCH/GARCH models that the conditional variances are positive. The NLP optimization program used in FANPAC can handle these constraints but for best results it needs a feasible starting point. A general method for selecting a feasible starting point, however, may not be the best starting point from the viewpoint of reducing the number of iterations to convergence. Because of the requirement of feasibility, it is not possible to rely on FANPAC to select the best starting point, and thus to minimize convergence times you may want to choose your own starting values.

The FANPAC global _fan_Start is used to set a starting  point:

    library fanpac;
    session amzn 'daily Amazon.com';
    setDataSet stocks;
    setSeries AMZN;
    computeLogReturns 251;

    _fan_Start = { 5, .4, .2, .3, .6 };

    estimate run1 garch(2,1);

    showresults;

FANPAC will reject the start values if the length of the vector is different from the number of parameters in the model. Since it's not obvious what the order of the parameters is, or what they might be, the first thing to do is determine that. The best method is to produce a run without specifing start values. All you need is one iteration of that run printed to the screen. This can be done from the keyboard by pressing "o" and then a "1" to get the output to the screen, and then a "c" to force convergence. Alternatively, this could be accomplished using the   FANPAC global _fan_NLPglobals (see Section 4 for details).

The list and order of parameters can be determined either from the screen output, or by printing the contents of the NLP global _nlp_ParNames to the screen.     

    library fanpac;
    session amzn 'daily Amazon.com';
    setDataSet stocks;
    setSeries AMZN;
    computeLogReturns 251;

    _fan_NLPglobals = &globs;

    estimate run1 garch(2,1);

    showEstimates;

    proc(0) = globs;
        _nlp_IterInfo = 1;
        _nlp_MaxIters = 1;
    endp;

  The list of parameter names is descriptive. The following is the output from the above run, which also prints out the estimates after one iteration from the starting point computed by FANPAC:

                  Session: amzn   Run: run1

================================================================
                  Session: amzn   Run: run1

iteration:  1     algorithm:  BFGS    line search method: STEPBT 
Hessian Constraint:     OFF                 Trust Region: ON
function:  6259.38050   step length:  1.00000      backsteps:  0  
----------------------------------------------------------------
 parameter      value     direction
 ---------      -----     ---------
   omega        0.900       0.100
  Garch1        0.110       0.100
  Garch2        0.008      -0.002
   Arch1        0.110       0.100
   Const        0.701       0.009


  run1

  omega   0.900
 Garch1   0.110
 Garch2   0.008
  Arch1   0.110
  Const   0.701



R. Schoenberg
1999-03-29