2009年1月8日木曜日

配当金の計算

配当金の計算は以下のとおり.
初期値は,
ASMModelSwarm.m#doWarmupStep

World.m#setDividend

Dividend.m#setDerivedParamsによって,

rho = exp(-1.0/((double)period));
rho = 0.0001*rint(10000.0*rho);
deviation=baseline*amplitude
gauss = deviation*sqrt(1.0-rho*rho);
dvdnd=baseline+gauss*[normal getDoubleSample]


更新は,
ASMModelSwarm.m#periodStepDividend

World.m#setDividend

Dividend.m#dividendによって,

dvdnd = baseline + rho*(dvdnd - baseline) + gauss*[normal getDoubleSample];

のように行われる.
normalは正規分布だと思われる

intrateは利率のことだと思われる.
つまり,
baseline/intrateがおよそのリスクニュートラル価格となる.

BFParams.m#USEALLBITS = YES
に変更する.
これで100Bit全部使える.

ASMさらに続き

GAの頻度を上げても二乗誤差は変化しないが,出来高(取引量)は増加する.
これは,秋永ら「人工株式市場と経済学」の結果と同じ.
問題は,もっとバブルな幹事をどのように出すのか,だ.

バブルが起きる条件として,
  • トレンドトレーダの存在
  • バンドワゴン効果
などが考えられる.

これらを実現するためには,特殊な遺伝子を持ったエージェントを作成するか,
似たような遺伝子をすべてのエージェントが持つような条件を設定すればよい.

さて,どうしたものか.

2009年1月7日水曜日

理論値との乖離

秋永,高階「人工株式市場と経済学」 電子情報通信学会技術研究報告. AI, 人工知能と知識処理Vol.97, No.499(19980123) pp. 25-32
によると,
GAの活動レベルをあげることによって標準的理論経済モデルからの乖離が大きくなる.

Santa FeのASMでは,
BFParamsにGAを制御する項目がある.
具体的には,

  • gafrequency:GAを行う頻度(初期値:100)小さいほど頻度が高い?(逆数をとって,その確率で行うようだ)
  • pmutation:1ビットあたりの突然変異率(初期値:0.01)
  • newfrac:ルールが置き換わる頻度(初期値:0.05)

である.
これらを変更して,株価変動がどうなるか見てみよう.




gafrequencypmutationnewfracRiskNeutral価格との偏差
低条件1000.010.056.52
中条件500.020.106.94
高条件250.040.206.84

ほとんど変化はないようだ.

Objective-Cもか!?

というわけで,ASMの解析が遅々として進まない中,
どうもやはり内部を解析できないと厳しいのではないかという結論に達しかけています.
そのためには,ASMの主言語であるObjective-Cを勉強しなければいけません.
う~む.
C++,Javaならどうとでもなるけど,Objective-Cは初なので厳しい.

Objective-C入門などを参考に少し勉強してみよう.
ただ,今週中にASMでバブルの再現ができるレベルまで到達できるかはなはだ不安.

2009年1月6日火曜日

ASM続き

参考資料

Building the Santa Fe Artificial Stock Market
http://people.brandeis.edu/~blebaron/wps/sfisum.pdf

Building a Multi-Agent Artificial Stock Market
http://www.math.hmc.edu/math193-01/participants/projects/chicago/

2009年1月5日月曜日

ASM続き

年が明けてしまってもまだASM(Artifitial Stock Market)の使い方がよく分かっていない・・・
どこかに設定方法などのDocumentがあればいいのだけど.
asm.scmが設定ファイルなのは分かったが.

  • BFParams
  • asmModelParams
  • ASMBatchSwarm

などを設定しなければいけない.
現在分かっているのが,
ASMModelParams#numBFagentsがBFagentの数
というだけ.
ちなみに,BFagentはGAベースのエージェントらしい.

2008年12月25日木曜日

サンタフェ人工市場

研究に使うために,サンタフェ研究所が開発した人工市場のインストールを試みました.

参考にしたのはこの辺:


Swarmのインストール


* パッケージをダウンロード
* http://jalvesaq.googlepages.com/swarm.html#packから
o libswarm_2.2.3-1_Etch_i386.deb
o libswarm-dev_2.2.3-1_Etch_i386.deb
* パッケージインストール

# dpkg -i libswarm_2.2.3-1_Etch_i386.deb

* エラーメッセージ

未選択パッケージ libswarm を選択しています。
(データベースを読み込んでいます ... 現在 35609 個のファイルとディレクトリがインストールされています。)
(libswarm_2.2.3-1_Etch_i386.deb から) libswarm を展開しています...
dpkg: 依存関係の問題により libswarm の設定ができません:
libswarm は以下に依存 (depends) します: libhdf5-serial-1.6.5-0 | libhdf5-1.6.5-0 ...しかし:
パッケージ libhdf5-serial-1.6.5-0 はまだインストールされていません。
パッケージ libhdf5-1.6.5-0 はまだインストールされていません。
dpkg: libswarm の処理中にエラーが発生しました (--install):
依存関係の問題 - 設定を見送ります
以下のパッケージの処理中にエラーが発生しました:
libswarm

* 必要なパッケージのインストール

# apt-get install libhdf5-serial-1.6.5-0 libhdf5-1.6.5-0
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
以下の問題を解決するために 'apt-get -f install' を実行する必要があるかもしれません:
以下のパッケージには満たせない依存関係があります:
libswarm-dev: 依存: libpng12-dev しかし、インストールされようとしていません
依存: libhdf5-serial-dev しかし、インストールされようとしていません
E: 未解決の依存関係です。'apt-get -f install' を実行してみてください (または解法を明示してください)。


* 依存関係のエラーのため,再度チャレンジ.

# apt-get -f install
Please, add the following line to the makefiles
of your swarm applications:

include /usr/share/libswarm/etc/Makefile.appl

* なんだか分からないが,パッケージインストール再び.

# dpkg -i libswarm_2.2.3-1_Etch_i386.deb
(データベースを読み込んでいます ... 現在 35766 個のファイルとディレクトリがインストールされています。)
libswarm 2.2.3-1 を (libswarm_2.2.3-1_Etch_i386.deb で) 置換するための準備をしています ...
libswarm を展開し、置換しています...
libswarm (2.2.3-1) を設定しています ...

* devもインストール

# dpkg -i libswarm-dev_2.2.3-1_Etch_i386.deb
(データベースを読み込んでいます ... 現在 35766 個のファイルとディレクトリがインストールされています。)
libswarm-dev 2.2.3-1 を (libswarm-dev_2.2.3-1_Etch_i386.deb で) 置換するための準備をしています ...
libswarm-dev を展開し、置換しています...
libswarm-dev (2.2.3-1) を設定しています ...

Please, add the following line to the makefiles
of your swarm applications:

include /usr/share/libswarm/etc/Makefile.appl


ASMのインストール



* http://sourceforge.net/projects/artstkmkt/よりASM-2.2.1.tar.gzをダウンロード.
* ASM-2.2.1.tar.gzを展開

# tar zxvf ASM-2.2.1.tar.gz

* ASM-2.2.1/Makefileを書き換え

include $(SWARMHOME)/etc/swarm/Makefile.appl

include $(SWARMHOME)/etc/Makefile.appl

* make実行

make SWARMHOME=/usr/share/libswarm

* ASMの実行

./asm

実行成功.