T_NAKAの阿房ブログ

アクセスカウンタ

zoom RSS 23. Stock Market Simulation の復習(2)

<<   作成日時 : 2016/05/27 00:01   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

この「株式市場シュミレーション」のメインとなる関数とメインプログラムを見てみましょう。

まず、プログラムリストです。
画像

このリストの中で、メインプログラムに当たるのは最後の2行のみです。
実際は

-----------------------------------------------

import random,pylab

class Stock(object):

 クラスの記述

def unitTestStock():
 関数の記述

unitTestStock()
pylab.show()

-----------------------------------------------

という構成になっていて、unitTestStock() という関数がこのプログラムの主な部分ということになります。
よって、この関数を見ていきましょう。
まず、runSim(stks, fig, mo) という内部関数があるのが分かると思いますが、これは後ほどみていくことにします。
そうすると、次の、

  numStks = 20
  numDays = 200
  stks1 = []
  stks2 = []
  bias = 0.0
  mo = False


が、パラメータの初期設定をしていることが分かります。
株式数が 20 銘柄で、200 日の取引をシュミレーションしようとしていることが分かり、市場バイアスはゼロ、モメンタムの影響は考えない(mo = False)という設定であることが分かると思います。次の

  for i in range(numStks):
    volatility = random.uniform(0, 0.2)
    d1 = lambda: random.uniform(-volatility, volatility)
    d2 = lambda: random.gauss(0.0, volatility/2.0)
    stks1.append(Stock(100.0, d1))
    stks2.append(Stock(100.0, d2))

で、まず 20 銘柄毎のボォラティリティを設定します。
これには 0〜0.2 の間の一様分布の中からランダムに選択します( 20 銘柄毎、全て異なります) 。
この後このボォラティリティを使って2種類の分布関数を局所的に定義します。
1つは、-ボォラティリティ〜+ボォラティリティ の間の一様分布です。
もう1つは、平均 0 、標準偏差 ボォラティリティ/2 の正規分布です。
初期値(寄付き)を 100 ドルとした、一様分布する株オブジェクトを、stks1 に追加し、
初期値(寄付き)を 100 ドルとした、正規分布する株オブジェクトを、stks2 に追加することになります。
つまり、
stks1 には初期値(寄付き)を 100 ドルとした、一様分布する株オブジェクトが 20 銘柄
stks2 には初期値(寄付き)を 100 ドルとした、正規分布する株オブジェクトが 20 銘柄
が入っていることになります。次の

  runSim(stks1, 1, mo)
  runSim(stks2, 2, mo)


で、内部関数 runSim(stks, fig, mo) を呼ぶことになりますので、この内部関数を見ていきます。
引数は、株オブジェクト(20 銘柄)の入ったリスト、図番号、モメンタムの有効/無効(True/False) です。
まず、 mean = 0.0 でこの変数をクリアします。

    for s in stks:
      for d in range(numDays):
        s.makeMove(bias, mo)
      s.showHistory(fig)
      mean += s.getPrice()


で、銘柄を1つずつ取り出して

      for d in range(numDays):
        s.makeMove(bias, mo)


で、200 日分の株価変動履歴を求めます。次の

      s.showHistory(fig)
      mean += s.getPrice()


で、その図を描き、株価変動履歴を mean に足し込んでいきます。さらに

    mean = mean/float(numStks)
    pylab.axhline(mean)


で mean を正しい意味での「平均」に直して、その値を示す水平線を図中に描くものです。
つまり、

  runSim(stks1, 1, mo)
  runSim(stks2, 2, mo)


で、

Figure 1 に初期値(寄付き)を 100 ドルとした、一様分布する株オブジェクトが 20 銘柄の200日の株価変動
Figure 2 に初期値(寄付き)を 100 ドルとした、正規分布する株オブジェクトが 20 銘柄の200日の株価変動

が描かれることになります。

実行例を示します。
画像

画像


テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
23. Stock Market Simulation の復習(2) T_NAKAの阿房ブログ/BIGLOBEウェブリブログ
文字サイズ:       閉じる