日本証券業協会の売買参考統計値を捌く

債券価格データとして利用できる日本証券業協会の売買参考統計値ファイルから価格などを抜き出す関数を書いた。
入力ファイルとして使用している売買参考統計値ファイル(S100125.csv)は
http://market.jsda.or.jp/html/saiken/kehai/downloadInput.php
からDL可能。

価格がクリーンプライスな点に注意。
利回りもクリーンプライスベース(っぽい)。

#!/usr/bin/env python
#-*- coding: utf-8 -*-
import datetime,codecs,re
#CONSTANT
FIXED_INCOME_GOVERMENT_BOND = 2
def Load(fileName_):
    bonds = []
    for line in codecs.open(fileName_,'r','shift_jis'):
        line = line.encode('utf-8')
        line = line.strip().split(',')
        bond = {}
        bond['issueType']     = int(line[1])
        bond['code']          = line[2]
        bond['name']          = line[3]
        bond['maturityDate']  = datetime.date(int(str(line[4])[0:4]),int(str(line[4])[4:6]),int(str(line[4])[6:8]))
        bond['couponRate']    = float(line[5])*0.01
        bond['compoundYield'] = float(line[6])*0.01
        bond['cleanPrice']    = float(line[7])
        matched = re.search("(\d\d)(/)(\d\d)",line[9]) 
        if not(matched is None):
            bond['IRPayMonth1']   = int(matched.group(1))
            bond['IRPayMonth2']   = int(matched.group(3))
            try:
                bond['IRPayDay']  = int(line[10].replace('"','')) 
            #末日の場合
            except:
                bond['IRPayDay']  = -1
        bonds.append(bond)
    return(bonds)

if __name__ == '__main__':
    bonds = Load('./S100125.csv')
    for bond in bonds:
        print bond['name'] + "の債券価格(クリーンプライス):" + str(bond['cleanPrice']) if bond.has_key('IRPayDay') else -1