TradingHaltMain UseCases

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

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

問.1

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

解説

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

$ x10c++ samples/TradingHaltMain/TradingHaltMain.x10

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

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

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

以下に output.png を示す. 赤線は市場価格の時系列,黒線がファンダメンタル価格の時系列である. 価格時系列の背後が薄い青色の部分は取引停止の最中を表す.

このシミュレーションでは,図中 100 ステップの時点でファンダメンタル価格のショックが発生しており,そのため,ファンダメンタル価格が突如 270 へ変化している(10% 急落). その後,ファンダメンタル重視型の FCN エージェントが取引を活発化させ,市場価格は急落したファンダメンタル価格を追いかけるように下落してゆく. そして,価格の下落(変化率)が発動閾値 5% × n (n は発動回数)を超えたところで取引停止が発動している.

small

取引停止のパラメータ

取引停止には2つのパラメータ,停止期間と発動閾値,がある. 停止期間の影響度は FCN エージェントの時間窓長との相対的な長さと関係することが予想される. また,発動閾値の影響度はショックの大きさと関係することが予想される.

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

Section Parameter Value
TradingHalt haltingTimeLength 100
TradingHalt triggerChangeRate 0.05

取引停止の停止期間を変化させた場合

問.2

停止期間を長くした場合の取引をシミュレーションし,価格の時系列をグラフ化せよ.

解説

停止期間は,JSON ファイル TradingHalt/config.json では haltingTimeLength の箇所を書き換えることで変更できる. JSON ファイルでは FCN エージェントの時間窓長が 100〜200 の一様乱数となっているので,今回のシミュレーションでは停止期間を 200 へ変更する.

{    "haltingTimeLength": 200    }

TradingHalt/config.json の主要なパラメータをまとめる.

Section Parameter Value
TradingHalt haltingTimeLength 200
TradingHalt triggerChangeRate 0.05

以下の手順でグラフを描画した(出力ファイルは output.png).

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

以下に output.png を示す. 赤線は市場価格の時系列,黒線がファンダメンタル価格の時系列である. 価格時系列の背後が薄い青色の部分は取引停止の最中を表す. 問.1 の結果と比較すると,各回の停止期間が長くなっていることがわかる.

small

取引停止の発動閾値を変化させた場合

問.3

発動閾値を小さく場合の取引をシミュレーションし,価格の時系列をグラフ化せよ.

解説

発動閾値は,JSON ファイル TradingHalt/config.json では triggerChangeRate の箇所を書き換えることで変更できる. JSON ファイルではショックの大きさ(ファンダメンタル価格の変化率)が −10% となっているので,今回のシミュレーションでは発動閾値を 0.02 へ変更する.

{    "triggerChangeRate": 0.02    }

TradingHalt/config.json の主要なパラメータをまとめる.

Section Parameter Value
TradingHalt haltingTimeLength 100
TradingHalt triggerChangeRate 0.02

以下の手順でグラフを描画した(出力ファイルは output.png).

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

以下に output.png を示す. 赤線は市場価格の時系列,黒線がファンダメンタル価格の時系列である. 価格時系列の背後が薄い青色の部分は取引停止の最中を表す. 問.1 の結果と比較すると,より小さな価格変化でも取引停止が発動するため,発動回数が多くなっていることがわかる.

small