GJR GARCHプロセスの実現値の生成

Fortranによるサンプルソースコード : 使用ルーチン名:g05pff

Keyword: GARCH, GJR, 実現値

概要

本サンプルはGJR GARCHプロセスの実現値の生成を行うFortranによるサンプルプログラムです。 本サンプルは以下の式で示されるGJR GARCHモデルにより10個の観測値から成る2つの実現値を生成し出力します。

GJR GARCHのデータ 

※本サンプルはnAG Fortranライブラリに含まれるルーチン g05pff() のExampleコードです。本サンプル及びルーチンの詳細情報は g05pff のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで

入力データ

(本ルーチンの詳細はg05pff のマニュアルページを参照)
1
2
3
4
5
6
7

このデータをダウンロード
G05PFF Example Program Data
1  1  1762543      :: GENID,SUBID,SEED(1)
10 2               :: NUM,NREAL
1  1               :: IP,IQ
'N'
0.4 0.1 0.7        :: THETA
0.1                :: GAMMA

  • 1行目はタイトル行で読み飛ばされます。
  • 2行目に使用する生成器(genid=1:nAG基本生成器)、生成器に関する情報(subid=1:GENIDが1の場合この値は参照されません)、生成器の初期値(seed=1762543)を指定しています。
  • 3行目に生成される数列の項数(num=10)と実現値の数(nreal=2)を指定しています。
  • 4行目に係数βの数(ip=1)と係数αの数(iq=1)を指定しています。
  • 5行目に誤差分布の種類(dist='N':正規分布)を指定しています。
  • 6行目に係数α0の値(theta(1)=0.4)、α1の値(theta(2)=0.1)と係数β1の値(theta(3)=0.7)を指定しています。
  • 7行目にパラメータγ(gamma=0.1)を指定しています。

出力結果

(本ルーチンの詳細はg05pff のマニュアルページを参照)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

この出力例をダウンロード
 G05PFF Example Program Results

 Realization Number 1
    I            HT(I)            ET(I)
   --------------------------------------
     1           1.8000           0.4679
     2           1.6819          -1.6152
     3           2.0991           0.9592
     4           1.9614           1.1701
     5           1.9099          -1.7355
     6           2.3393          -0.0289
     7           2.0377          -0.4201
     8           1.8617           1.0865
     9           1.8212          -0.0061
    10           1.6749           0.5754

 Realization Number 2
    I            HT(I)            ET(I)
   --------------------------------------
     1           1.6055          -2.0776
     2           2.3872          -1.0034
     3           2.2724           0.4756
     4           2.0133          -2.2871
     5           2.8554           0.4012
     6           2.4149          -0.9125
     7           2.2570          -1.0732
     8           2.2102           3.7105
     9           3.3239           2.3530
    10           3.2804           0.1388
 

  • 3~15行目に1つめの実現値の条件付き分散と観測値が出力されています。
  • 17~29行目に2つめの実現値の条件付き分散と観測値が出力されています。

ソースコード

(本ルーチンの詳細はg05pff のマニュアルページを参照)

※本サンプルソースコードは科学技術・統計計算ライブラリである「nAG Fortranライブラリ」のルーチンを呼び出します。
サンプルのコンパイル及び実行方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92

このソースコードをダウンロード
    PROGRAM g05pffe

!      G05PFF Example Program Text

!      Mark 23 Release. nAG Copyright 2011.

!      .. Use Statements ..
       USE nag_library, ONLY : g05kff, g05pff, nag_wp
!      .. Implicit None Statement ..
       IMPLICIT NONE
!      .. Parameters ..
       INTEGER, PARAMETER              :: lseed = 1, nin = 5, nout = 6
!      .. Local Scalars ..
       REAL (KIND=nag_wp)              :: gamma
       INTEGER                         :: df, genid, i, ifail, ip, iq, lr,     &
                                          lstate, ltheta, nreal, num, rn, subid
       LOGICAL                         :: fcall
       CHARACTER (1)                   :: dist
!      .. Local Arrays ..
       REAL (KIND=nag_wp), ALLOCATABLE :: et(:), ht(:), r(:), theta(:)
       INTEGER                         :: seed(lseed)
       INTEGER, ALLOCATABLE            :: state(:)
!      .. Executable Statements ..
       WRITE (nout,*) 'G05PFF Example Program Results'
       WRITE (nout,*)

!      Skip heading in data file
       READ (nin,*)

!      Read in the base generator information and seed
       READ (nin,*) genid, subid, seed(1)

!      Initial call to initialiser to get size of STATE array
       lstate = 0
       ALLOCATE (state(lstate))
       ifail = 0
       CALL g05kff(genid,subid,seed,lseed,state,lstate,ifail)

!      Reallocate STATE
       DEALLOCATE (state)
       ALLOCATE (state(lstate))

!      Initialize the generator to a repeatable sequence
       ifail = 0
       CALL g05kff(genid,subid,seed,lseed,state,lstate,ifail)

!      Read in sample size and number of realizations
       READ (nin,*) num, nreal

!      Read in number of coefficients
       READ (nin,*) ip, iq

       lr = 2*(ip+iq+2)
       ltheta = ip + iq + 1
       ALLOCATE (theta(ltheta),ht(num),et(num),r(lr))

!      Read in error distribution
       READ (nin,*) dist

!      Read in degrees of freedom if required
       IF (dist=='T' .OR. dist=='t') THEN
          READ (nin,*) df
       END IF

!      Read in rest of series parameters
       READ (nin,*) theta(1:ltheta)
       READ (nin,*) gamma

!      Set FCALL for first realization
       fcall = .TRUE.

!      Generate NREAL realizations
       DO rn = 1, nreal

          ifail = 0
          CALL g05pff(dist,num,ip,iq,theta,gamma,df,ht,et,fcall,r,lr,state, &
             ifail)

!         Display the results
          WRITE (nout,99998) 'Realization Number ', rn
          WRITE (nout,*) '   I            HT(I)            ET(I)'
          WRITE (nout,*) '  --------------------------------------'
          WRITE (nout,99999) (i,ht(i),et(i),i=1,num)
          WRITE (nout,*)

!         Set FCALL flag for any further realizations
          fcall = .FALSE.
       END DO

99999  FORMAT (1X,I5,1X,F16.4,1X,F16.4)
99998  FORMAT (1X,A,I0)
    END PROGRAM g05pffe


関連情報
© 日本ニューメリカルアルゴリズムズグループ株式会社 2025
Privacy Policy  /  Trademarks