時系列株価情報の取得

自身の投資スタンスの再構築のため、まずは株価情報の解析が出来る環境を構築するのに着手しました。
自分は一応IT業界のエンジニアなので、プログラムでインターネット経由で時系列株価情報の入手ができないものかと、ググっていたところ、Finance::YahooJPN::QuoteというPerlモジュールの存在が分かり、これを利用することにしました。

動作環境はWindows XPでActivePerl 5.8.1 Build 807です。
以前、自宅PCでMovable Typeを動かすためにインストールしてあったのを利用することにしました。
Perlモジュールのインストールは、ppmからinstall Finance::YahooJPN::QuoteでOKです。
サンプルプログラムは、SYNOPSISにある"histrical"を"historical"に直さなければいけないことに気がつけば、すぐに動かせます。
まずは、ファイルに時系列株価情報を出力する簡単なPerlプログラムを作成したところです。

これからPerlで、日々少しずつ売買銘柄抽出プログラムを開発して行くつもりです。

■2009/1/31 追記
Finance::YahooJPN::Quoteは、2008年11月に0.13から0.14へのバージョンアップが行なわれたようです。
Yahooが返すhtmlのフォーマットが変更になったらしく、今では0.14でないと正常に動作しないようです。

■2009/4/1 追記
作者の方にホームページ経由でメールを差し上げようとしたのですが、Script errorで送信に失敗しますので、この場にて、バク情報を公開します。(なお、正確には、Perlモジュールのバグではなく、Yahooが出力しているHTMLの問題です。)

これに該当するのは、株式分割が行なわれたケースで、分割後の株数に小数点が含まれているケースです。
具体的には「1株 -> 1.2株」といった分割のケースで、最近ですと、「1378 雪国マイタケ」が該当します。
HTMLに<tr bgcolor="#ffffff">と書かれるべきところが、ダブルクォートなしで<tr bgcolor=#ffffff>と書かれており、split dataとしての判断が正常に出来ず、そのHTMLページ内の以降のデータが取得されないという現象につながっています。分割数が半端な場合にのみ、TRタグのBGCOLOR属性の書き方が変わるのは、不思議です。
Quote.pmの256行目以降、「# this is a split data」の行までの、whileループとif文に、ダブルクォートなしのOR条件をそれぞれ2行ずつ追記することで、回避できるようになるようです。