ShockTransferMain UseCases

本記事では,tutorial/ShockTransferMain で解説したプログラムを使い,いくつかのパラメータを変えて,実際にシミュレーションを行う.

シミュレーションの実行とグラフ化

問.1

プログラムをコンパイル・実行し,価格の時系列をグラフ化せよ.

解説

コンパイルは以下の手順で行う.

$ x10c++ samples/ShockTransferMain/ShockTransferMain.x10

コンパイルに成功すると実行ファイル a.out が生成される.

次に,シミュレーションを実行し,グラフを描画する(出力ファイルは output.png).

$ ./a.out samples/ShockTransfer/config.json >output.dat
$ Rscript samples/ShockTransfer/plot.R output.dat output.png

本記事で扱うショック伝播のシミュレーションは 2 つの現物銘柄と 1 つの指数銘柄を用いる. 本記事ではそれぞれを,現物銘柄 1,現物銘柄 2,指数銘柄 I と呼ぶ.

以下に output.png を示す. 赤線は現物銘柄 1,緑線は現物銘柄 2,青線は指数銘柄 I の市場価格の時系列であり,黒線がファンダメンタル価格の時系列(3 つ描かれている)である.

このシミュレーションでは,図中 100 ステップの時点でファンダメンタル価格のショックが発生している. そのため,現物銘柄 1 のファンダメンタル価格が突如 270 へ変化している(10% 急落). それと同時に,現物銘柄の平均値と紐づけされた指数銘柄 I のファンダメンタル価格が 285 へ変化している(10%/2 = 5% 急落). その後,各市場価格はそれぞれのファンダメンタル価格へ向かい変化してゆく.

small

ショック伝播のパラメータ

鳥居・中川・和泉(2015)では,現物銘柄 1 & 2 および指数銘柄 I を想定し,現物銘柄 1 のファンダメンタル価格が急落した影響が現物銘柄 2 へ及ぼす影響を調べている. 現物銘柄 1 のファンダメンタル価格の急落はただちに指数銘柄 I のファンダメンタル価格の急落を意味する. したがって,ファンダメンタル価格の変化していない,現物銘柄 2 の価格がどう変化するかのみが焦点となる. ショック伝播の影響に関して,鳥居・中川・和泉(2015)では,現物銘柄 1 および指数銘柄 I を取引する FCN エージェントのファンダメンタル重視度がキーパラメータだと発見している.

以下は,問.1 のシミュレーションで用いた ShockTransfer/config.json の設定値である.

Section Parameter Value
Market-1 fundamentalWeight 1.0
Market-I fundamentalWeight 1.0

エージェントシミュレーションは初期値や乱数系列の影響を受けるため,1つの結果のみからショックの影響を判断することは難しい. 実際,鳥居・中川・和泉(2015)では,銘柄 2 への影響は1つの結果ではなく,複数の結果を出力しその平均的な振る舞いを観ることで示されている. そこで,以下では R プログラムを用いて,10 試行の平均的な時系列を観察する.

現物銘柄のほうがショックに敏速に反応する場合

問.2

現物銘柄 1 を取引する FCN エージェントのほうがファンダメンタル重視度が高い場合をシミュレーションし,価格の時系列をグラフ化せよ. ただし,10 試行以上をデータを集め,価格の平均的な振る舞いをグラフ化せよ.

解説

指数銘柄 I のファンダメンタル重視度を下げることにより,問.2 の条件を達成する. 具体的には ShockTransfer/config.json では以下のパラメータを用いる.

Section Parameter Value
Market-1 fundamentalWeight 1.0
Market-I fundamentalWeight 0.1

シミュレーションを実行し,グラフを描画する(出力ファイルは output.png). 以下の手順では,本来 10 試行やるべきところを,3 試行分の手順のみを示している. ユーザは,実際に行うときは,output-04.dat,output-05.dat,… などを増やし,10 試行以上を行ってほしい.

$ ./a.out samples/ShockTransfer/config.json >output-01.dat
$ ./a.out samples/ShockTransfer/config.json >output-02.dat
$ ./a.out samples/ShockTransfer/config.json >output-03.dat
$ Rscript samples/ShockTransfer/plot.R output-01.dat output-02.dat output-03.dat output.png

以下に output.png を示す. 赤線は現物銘柄 1,緑線は現物銘柄 2,青線は指数銘柄 I の市場価格の時系列であり,黒線がファンダメンタル価格の時系列(3 つ描かれている)である. 図は 10 試行分のデータを用いた平均的な価格の時系列を示している. より具体的には,各銘柄の各時点ごとに 10 個のデータの平均値を求め,描画している. ショックはいずれのシミュレーションでも 100 ステップの時点で発生する.

図中,着目すべきは現物銘柄 2 の市場価格の変化である. ショックの前後で,現物銘柄 2 のファンダメンタル価格は 300 のまま変化していないにもかかわらず,ショックの後,現物銘柄 2 の市場価格は平均的に上昇している(そのメカニズムは鳥居・中川・和泉(2015)を参照のこと).

small

指数銘柄のほうがショックに敏速に反応する場合

問.3

指数銘柄 I を取引する FCN エージェントのほうがファンダメンタル重視度が高い場合をシミュレーションし,価格の時系列をグラフ化せよ. ただし,10 試行以上をデータを集め,価格の平均的な振る舞いをグラフ化せよ.

解説

現物銘柄 1 のファンダメンタル重視度を下げることにより,問.3 の条件を達成する. 具体的には ShockTransfer/config.json では以下のパラメータを用いる.

Section Parameter Value
Market-1 fundamentalWeight 0.1
Market-I fundamentalWeight 1.0

シミュレーションを実行し,グラフを描画する(出力ファイルは output.png). 以下の手順では,本来 10 試行やるべきところを,3 試行分の手順のみを示している. ユーザは,実際に行うときは,output-04.dat,output-05.dat,… などを増やし,10 試行以上を行ってほしい.

$ ./a.out samples/ShockTransfer/config.json >output-01.dat
$ ./a.out samples/ShockTransfer/config.json >output-02.dat
$ ./a.out samples/ShockTransfer/config.json >output-03.dat
$ Rscript samples/ShockTransfer/plot.R output-01.dat output-02.dat output-03.dat output.png

以下に output.png を示す. 赤線は現物銘柄 1,緑線は現物銘柄 2,青線は指数銘柄 I の市場価格の時系列であり,黒線がファンダメンタル価格の時系列(3 つ描かれている)である. 図は 10 試行分のデータを用いた平均的な価格の時系列を示している. ショックはいずれのシミュレーションでも 100 ステップの時点で発生する.

問.2 と同じく,着目すべきは現物銘柄 2 の市場価格の変化である. ショックの前後で,現物銘柄 2 のファンダメンタル価格は 300 のまま変化していないにもかかわらず,ショックの後,現物銘柄 2 の市場価格は平均的に下落している(そのメカニズムは鳥居・中川・和泉(2015)を参照のこと). これは問.2 で観察された市場価格の上昇とは対照的な結果である.

small

References