EGARCHプロセスの時系列の実現値の生成

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

Keyword: EGARCH, 実現値

概要

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

EGARCHのデータ 

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

入力データ

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

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

  • 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.1)、α1の値(theta(2)=-0.3)、φ1の値(theta(3)=0.1)と係数β1の値(theta(4)=0.9)を指定しています。

出力結果

(本ルーチンの詳細はg05pgf のマニュアルページを参照)
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

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

 Realization Number 1
    I            HT(I)            ET(I)
   --------------------------------------
     1           2.5098           0.5526
     2           2.1785          -1.8383
     3           3.3844           1.2180
     4           2.6780           1.3672
     5           2.0953          -1.8178
     6           3.2813          -0.0343
     7           2.9958          -0.5094
     8           3.0815           1.3978
     9           2.3961          -0.0070
    10           2.2445           0.6661

 Realization Number 2
    I            HT(I)            ET(I)
   --------------------------------------
     1           1.9327          -2.2795
     2           3.5577          -1.2249
     3           4.1461           0.6424
     4           3.4455          -2.9920
     5           5.9199           0.5777
     6           4.8221          -1.2894
     7           5.3174          -1.6473
     8           6.1095           6.1689
     9           3.1579           2.2935
    10           2.2189           0.1141
 

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

ソースコード

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

※本サンプルソースコードは科学技術・統計計算ライブラリである「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

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

!      G05PGF Example Program Text

!      Mark 23 Release. nAG Copyright 2011.

!      .. Use Statements ..
       USE nag_library, ONLY : g05kff, g05pgf, nag_wp
!      .. Implicit None Statement ..
       IMPLICIT NONE
!      .. Parameters ..
       INTEGER, PARAMETER              :: lseed = 1, nin = 5, nout = 6
!      .. Local Scalars ..
       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,*) 'G05PGF 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+2*iq+2)
       ltheta = 2*iq + ip + 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)

!      Set FCALL for first realization
       fcall = .TRUE.

!      Generate NREAL realizations
       DO rn = 1, nreal

          ifail = 0
          CALL g05pgf(dist,num,ip,iq,theta,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 g05pgfe


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