Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
この記事に対してトラックバックを送信する(FC2ブログユーザー)
http://kovayashi.blog120.fc2.com/tb.php/36-0e642f40

-件のトラックバック

-件のコメント

コメントの投稿

投稿フォーム
投稿した内容は管理者にだけ閲覧出来ます

日経平均

『日経平均ってどうやって計算してるの?』 ふと疑問に思った。
というわけで、実際に値を求めてみる

?255銘柄
 全ての株の平均ではなく、255銘柄から求めているようだ。
 http://www3.nikkei.co.jp/nkave/about/225_list.cfm
 から銘柄コードだけをリストにした。

?基本骨格を作る。
 ?で作成したリストを読み込んで表示するだけのプログラムをrubyで作る。
 ARGF.each do |no|
   puts no
 end

 DOS窓を開いて実行してみる。
C:\nikei>ruby nikei1.rb list.txt
2002
2202
2261

・
・
・

4704

?銘柄コードに対応する株価を取得する様に改造する。
require 'net/http'
Net::HTTP.version_1_2

http=Net::HTTP.new('company.nikkei.co.jp', 80)

ARGF.each do |no|
  req=Net::HTTP::Get.new('/index.aspx?scode=' << no.chomp!)
  response=http.request(req)
  if /<td class="lValue">(.*?)</=~response.body then
    puts no << ' ' << $1
  end
end

 DOS窓を開いて実行してみる。
C:\nikei>ruby nikei2.rb list.txt
2002 1,054
2202 379
2261 438

・
・
・

4704 2,660

?指数採用株価に変換する様に改造する。
 ?で取得した255銘柄の平均を求めれば良いのかと思いきや、そうではない。
 計算方式に基き、先ずは指数採用株価に対応させる。
require 'net/http'
Net::HTTP.version_1_2

table={}

http=Net::HTTP.new('company.nikkei.co.jp', 80)

while d = DATA.gets
  d.scan(/(.*?) (.*?)$/)do|no,v|
    table[no]=v
  end
end

ARGF.each do |no|
  req=Net::HTTP::Get.new('/index.aspx?scode=' << no.chomp!)
  response=http.request(req)
  if /<td class="lValue">(.*?)</=~response.body then
    v=$1.gsub(/,/,'')
    if table[no] then
      puts no + ' ' +  eval("#{v}.0 * 50/#{table[no]}").to_s
    else
      puts no << ' ' << v
    end
  end
end

__END__
1605 50000
2768 500
2914 10000
3436 500
3893 50000
4188 100
4324 5000
4689 12500
5411 500
6857 25
7267 25
7751 100/3
8308 50000
8316 50000
8411 50000
8725 500/3
8766 100
8795 500
9020 50000
9021 50000
9412 50000
9432 50000
9433 5000
9437 50000
9501 500
9502 500
9503 500
9602 500
9613 5000
9984 50/3

 DOS窓を開いて実行してみる。
C:\nikei>ruby nikei3.rb list.txt
2002 1054
2202 379
2261 438

・
・
・

2914 1441.0

・
・
・

4704 2660

?合計値を除数で割る様に改造する。
 次に?で求めた指数採用株価を合計し、今日現在の除数24.687(ソースはこちら)で割る。
require 'net/http'
Net::HTTP.version_1_2

table={}

http=Net::HTTP.new('company.nikkei.co.jp', 80)

while d = DATA.gets
  d.scan(/(.*?) (.*?)$/)do|no,v|
    table[no]=v
  end
end

sum=0
ARGF.each do |no|
  req=Net::HTTP::Get.new('/index.aspx?scode=' << no.chomp!)
  response=http.request(req)
  if /<td class="lValue">(.*?)</=~response.body then
    v=$1.gsub(/,/,'')
    if table[no] then
      sum+=eval("#{v}.0 * 50/(#{table[no]})")
    else
      sum+=v.to_i
    end
  end
end

puts sum/24.687

__END__
1605 50000
2768 500
2914 10000
3436 500
3893 50000
4188 100
4324 5000
4689 12500
5411 500
6857 25
7267 25
7751 100/3.0
8308 50000
8316 50000
8411 50000
8725 500/3.0
8766 100
8795 500
9020 50000
9021 50000
9412 50000
9432 50000
9433 5000
9437 50000
9501 500
9502 500
9503 500
9602 500
9613 5000
9984 50/3.0

 DOS窓を開いて実行してみる。
C:\nikei>ruby nikei4.rb list.txt
8276.43010491352

この記事に対してトラックバックを送信する(FC2ブログユーザー)
http://kovayashi.blog120.fc2.com/tb.php/36-0e642f40

0件のトラックバック

0件のコメント

コメントの投稿

投稿フォーム
投稿した内容は管理者にだけ閲覧出来ます

Appendix

プロフィール

kovayashi

Author:kovayashi
・嫌いなもの
 →好きなもの

・インストール
 →バンドル
・バックアップ
 →アップロード
・努力
 →チート

最近のトラックバック

ブログ内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。