ARMA: ISlARMAGARCH;
ARMA: Prognoz.Platform.Interop.Stat.ISlARMAGARCH;
The ARMA property returns autoregression and moving average parameters.
Be default autoregression order and moving average order are not specified.
To execute the example, add a link to the Stat system assembly.
Sub Print(Data: Array Of Double);
Var
i: Integer;
Begin
Debug.Indent;
For i := 0 To Data.Length - 1 Do
If Double.IsNan(Data[i]) Then
Debug.WriteLine("----empty---");
Else
Debug.WriteLine(i.ToString + " " + Data[i].ToString);
End If;
End For;
Debug.Unindent;
End Sub Print;
Sub UserProc;
Var
GARCH: ISmGARCH;
W: Array[12] Of Double;
X: Array[20] Of Double;
ARMA: ISlARMAGARCH;
Inits: Array[1] Of Double;
res, i: Integer;
d: Double;
CoefficientsAR, CoefficientsMA, GARCHCoef, RegrCoef: ICoefficients;
ModelCoefficients: IGARCHCoefficients;
Begin
GARCH := New SmGARCH.Create;
// Set explained series values
w[0] := 2; w[4] := -1.9; w[8] := -0.7;
w[1] := 0.8; w[5] := Double.Nan; w[9] := Double.Nan;
w[2] := -0.3; w[6] := 3.2; w[10] := 4.3;
w[3] := -0.3; w[7] := 1.6; w[11] := 1.1;
GARCH.Explained.Value := w;
// Set explanatory series values
x[0] := Double.Nan; x[10] := 11;
x[1] := 2; x[11] := 12;
x[2] := 3; x[12] := 13;
x[3] := 4; x[13] := Double.Nan;
x[4] := 5; x[14] := 15;
x[5] := 6; x[15] := 16;
x[6] := Double.Nan; x[16] := 17;
x[7] := 8; x[17] := Double.Nan;
x[8] := 9; x[18] := 19;
x[9] := 10; x[19] := 20;
// Set sample period
GARCH.ModelPeriod.FirstPoint := 1;
GARCH.ModelPeriod.LastPoint := 12;
GARCH.Forecast.LastPoint := 19;
// Specify missing data treatment method
GARCH.MissingData.Method := MissingDataMethod.AnyValue;
// Set explanatory series
GARCH.Explanatories.Clear;
GARCH.Explanatories.Add.Value := X;
// Set initial approximation of exogenous variable
GARCH.Explanatories.Item(0).InitValue := 0.7;
ModelCoefficients := GARCH.GARCHCoefficients;
//Set initial approximation of constant
GARCH.Intercept.Mode := InterceptMode.AutoEstimate;
//Use initial values used by default
GARCH.UseDefaultInitValues := True;
// Set parameters of autoregression and moving average
GARCH.ARMA.ParseAR("2", True);
GARCH.ARMA.ParseMA("1", True);
ARMA := GARCH.ARMA;
// Determine stationarity condition
GARCH.StationarityCondition := False;
// Set maximum number of iterations for method calculation
GARCH.MaxIteration := 100;
// Set calculation accuracy
GARCH.Tolerance := 0.01;
// Set autoregression order for conditional heteroscedasticity
GARCH.ARCHOrder := 1;
// Set general autoregression order for conditional heteroscedasticity
GARCH.GARCHOrder := 1;
// Set asymmetry order
GARCH.AssymetryOrder := 2;
// Set type of GARCH model
GARCH.GARCHSpec := GARCHSpecType.GARCH;
// Execute calculation and display results
res := GARCH.Execute;
Debug.WriteLine(GARCH.Errors);
If (res = 0) Then
Debug.WriteLine("Autoregression coefficient estimations");
CoefficientsAR := ARMA.CoefficientsAR;
Debug.Indent;
d := CoefficientsAR.Estimate[0];
Debug.WriteLine("Value: " + d.ToString);
Debug.Unindent;
Debug.WriteLine("Moving average coefficient estimation");
CoefficientsMA := ARMA.CoefficientsMA;
Debug.Indent;
d := CoefficientsMA.Estimate[0];
Debug.WriteLine("Value: " + d.ToString);
Debug.Unindent;
Debug.WriteLine("Optimal value of likelihood function");
Debug.Indent;
d := GARCH.LikelihoodFunctionValue;
Debug.WriteLine("Value" + d.ToString);
Debug.Unindent;
Debug.WriteLine("Standard error");
Debug.Indent;
d := GARCH.SummaryStatistics.SE;
Debug.WriteLine("Value: " + d.ToString);
Debug.Unindent;
Debug.WriteLine("Modeling series");
Print(GARCH.Fitted);
Debug.WriteLine("Residual series");
Print(GARCH.Residuals);
Debug.WriteLine("Residual variance");
Print(GARCH.ResidualsDispersion);
Debug.WriteLine("Residual variance forecast");
Print(GARCH.ResidualsDispersionForecast);
Debug.WriteLine("Regression coefficient estimation");
RegrCoef := GARCH.RegressionCoefficients.Coefficients;
Debug.Indent;
Debug.WriteLine("Estimated model coefficient values: ");
Print(RegrCoef.Estimate);
Debug.WriteLine("Probabilistic coefficients: ");
Print(RegrCoef.Probability);
Debug.Unindent;
Debug.WriteLine("Estimated coefficients of conditional heteroscedasticity generalized autoregression");
GARCHCoef := GARCH.GARCHCoefficients.Coefficients;
Debug.Indent;
Debug.WriteLine("Estimated model coefficient values: ");
Print(GARCHCoef.Estimate);
Debug.WriteLine("Probabilistic coefficients: ");
Print(GARCHCoef.Probability);
Debug.Unindent;
End If;
End Sub UserProc;
After executing the example the console window displays results of GARCH model calculation.
The requirements and result of the Fore.NET example execution match with those in the Fore example.
Imports Prognoz.Platform.Interop.Stat;
…
Public Shared Sub Print(Data: System.Array);
Var
i: Integer;
Begin
System.Diagnostics.Debug.Indent();
For i := 0 To Data.Length - 1 Do
If Double.IsNan(Data.GetValue(i) As Double) Then
System.Diagnostics.Debug.WriteLine("----empty---");
Else
System.Diagnostics.Debug.WriteLine(i.ToString() + " " + Data.GetValue(i).ToString());
End If;
End For;
System.Diagnostics.Debug.Unindent();
End Sub Print;
Public Shared Sub Main(Params: StartParams);
Var
GARCH: ISmGARCH;
W: Array[12] Of Double;
X: Array[20] Of Double;
ARMA: ISlARMAGARCH;
Inits: Array[1] Of Double;
res, i: Integer;
d: Double;
CoefficientsAR, CoefficientsMA, GARCHCoef, RegrCoef: ICoefficients;
ModelCoefficients: IGARCHCoefficients;
Begin
GARCH := New SmGARCH.Create();
// Set explained series values
w[0] := 2; w[4] := -1.9; w[8] := -0.7;
w[1] := 0.8; w[5] := Double.Nan; w[9] := Double.Nan;
w[2] := -0.3; w[6] := 3.2; w[10] := 4.3;
w[3] := -0.3; w[7] := 1.6; w[11] := 1.1;
GARCH.Explained.Value := w;
// Set explanatory series values
x[0] := Double.Nan; x[10] := 11;
x[1] := 2; x[11] := 12;
x[2] := 3; x[12] := 13;
x[3] := 4; x[13] := Double.Nan;
x[4] := 5; x[14] := 15;
x[5] := 6; x[15] := 16;
x[6] := Double.Nan; x[16] := 17;
x[7] := 8; x[17] := Double.Nan;
x[8] := 9; x[18] := 19;
x[9] := 10; x[19] := 20;
// Set sample period
GARCH.ModelPeriod.FirstPoint := 1;
GARCH.ModelPeriod.LastPoint := 12;
GARCH.Forecast.LastPoint := 19;
// Specify missing data treatment method
GARCH.MissingData.Method := MissingDataMethod.mdmAnyValue;
// Set explanatory series
GARCH.Explanatories.Clear();
GARCH.Explanatories.Add().Value := X;
// Set initial approximation of exogenous variable
GARCH.Explanatories.Item[0].InitValue := 0.7;
ModelCoefficients := GARCH.GARCHCoefficients;
//Set initial approximation of constant
GARCH.Intercept.Mode := InterceptMode.imAutoEstimate;
//Use initial values used by default
GARCH.UseDefaultInitValues := True;
// Set parameters of autoregression and moving average
GARCH.ARMA.ParseAR("2", True);
GARCH.ARMA.ParseMA("1", True);
ARMA := GARCH.ARMA;
// Determine stationarity condition
GARCH.StationarityCondition := False;
// Set maximum number of iterations for method calculation
GARCH.MaxIteration := 100;
// Set calculation accuracy
GARCH.Tolerance := 0.01;
// Set autoregression order for conditional heteroscedasticity
GARCH.ARCHOrder := 1;
// Set general autoregression order for conditional heteroscedasticity
GARCH.GARCHOrder := 1;
// Set asymmetry order
GARCH.AssymetryOrder := 2;
// Set type of GARCH model
GARCH.GARCHSpec := GARCHSpecType.garchstEGARCH;
// Execute calculation and display results
res := GARCH.Execute();
System.Diagnostics.Debug.WriteLine(GARCH.Errors);
If (res = 0) Then
System.Diagnostics.Debug.WriteLine("Autoregression coefficient estimations");
CoefficientsAR := ARMA.CoefficientsAR;
System.Diagnostics.Debug.Indent();
d := CoefficientsAR.Estimate.GetValue(0) As Double;
System.Diagnostics.Debug.WriteLine("Value: " + d.ToString());
System.Diagnostics.Debug.Unindent();
System.Diagnostics.Debug.WriteLine("Moving average coefficient estimations");
CoefficientsMA := ARMA.CoefficientsMA;
System.Diagnostics.Debug.Indent();
d := CoefficientsMA.Estimate.GetValue(0) As Double;
System.Diagnostics.Debug.WriteLine("Value: " + d.ToString());
System.Diagnostics.Debug.Unindent();
System.Diagnostics.Debug.WriteLine("Optimal value of likelihood function");
System.Diagnostics.Debug.Indent();
d := GARCH.LikelihoodFunctionValue;
System.Diagnostics.Debug.WriteLine("Value" + d.ToString());
System.Diagnostics.Debug.Unindent();
System.Diagnostics.Debug.WriteLine("Standard error");
System.Diagnostics.Debug.Indent();
d := GARCH.SummaryStatistics.SE;
System.Diagnostics.Debug.WriteLine("Value: " + d.ToString());
System.Diagnostics.Debug.Unindent();
System.Diagnostics.Debug.WriteLine("Modeling series");
Print(GARCH.Fitted);
System.Diagnostics.Debug.WriteLine("Residual series");
Print(GARCH.Residuals);
System.Diagnostics.Debug.WriteLine("Residual variance");
Print(GARCH.ResidualsDispersion);
System.Diagnostics.Debug.WriteLine("Residual variance forecast");
Print(GARCH.ResidualsDispersionForecast);
System.Diagnostics.Debug.WriteLine("Regression coefficient estimation");
RegrCoef := GARCH.RegressionCoefficients.Coefficients;
System.Diagnostics.Debug.Indent();
System.Diagnostics.Debug.WriteLine("Estimated values of model coefficients: ");
Print(RegrCoef.Estimate);
System.Diagnostics.Debug.WriteLine("Probabilistic coefficients: ");
Print(RegrCoef.Probability);
System.Diagnostics.Debug.Unindent();
System.Diagnostics.Debug.WriteLine("Estimated coefficients of conditional heteroscedasticity generalized regression");
GARCHCoef := GARCH.GARCHCoefficients.Coefficients;
System.Diagnostics.Debug.Indent();
System.Diagnostics.Debug.WriteLine("Estimated values of model coefficients: ");
Print(GARCHCoef.Estimate);
System.Diagnostics.Debug.WriteLine("Probabilistic coefficients: ");
Print(GARCHCoef.Probability);
System.Diagnostics.Debug.Unindent();
End If;
End Sub;
See also: