エンジニアリングとお金の話

都内で働くエンジニアの日記です。

【技術】各企業の業績予想を抽出してみた

【SPONSORED LINK】

5月も後半に入り、多くの企業で決算短信が出揃った。決算短信には、来期(平成25年 4月 1日~平成26年 3月31日)の業績予想が記載されており、株価の動向を占う上で大切な情報となっている。

東京証券取引所の適時開示情報閲覧サービスや、各社のホームページから決算短信は取得する事が可能であるが、全ての上場企業のデータを取得し業績予報を確認するのは非常に大変である。その為、来期の業績予想を取得するプログラムを書いてみた。

なお、取得の方法は以下の通りである。

  1. 4月後半から5月中までの決算短信情報を適時開示情報WEB-APIより取得。
  2. 取得した情報より、XBRLデータの格納URLを取得しダウンロード。
  3. XBRLデータより業績予想(売上高予想、営業利益予想)を抽出。

【業績予想抽出プログラム】

#-*- coding:utf-8 -*-

import re
import urllib
import json
import zipfile
from StringIO import StringIO

def main():
    re1=re.compile(">(.*)<")
    fp=open("/home/hatakazu/work/python/src/profitCheck/data.txt","w")
    tmpArray1=[]
    tmpArray2=[]
    tmpArray3=[]

    url1="http://webapi.yanoshin.jp/webapi/tdnet/list/20130422-20130426.json?limit=3000"
    url2="http://webapi.yanoshin.jp/webapi/tdnet/list/20130429-20130503.json?limit=3000"
    url3="http://webapi.yanoshin.jp/webapi/tdnet/list/20130506-20130510.json?limit=3000"
    url4="http://webapi.yanoshin.jp/webapi/tdnet/list/20130513-20130517.json?limit=3000"
    urls=[url1,url2,url3,url4]

    for url in urls:
        #apiにて適宜開示情報データを取得
        tdnetData=urllib.urlopen(url).read()
        formatData=re.sub(u"<!--.*-->","",tdnetData)
        for line in json.loads(formatData)["items"]:
            #決算短信データのみ取得
            if re.compile(r"^平成.*決算短信.*(連結)").search(line["Tdnet"]["title"].encode("utf_8")) is not None:
                try:
                    #会社コードを設定
                    tmpArray1.append(line["Tdnet"]["company_code"].encode("utf_8"))
                    #会社名を設定
                    tmpArray1.append(line["Tdnet"]["company_name"].encode("utf_8"))
                    sf=StringIO(urllib.urlopen(line["Tdnet"]["url_xbrl"]).read())
                    z=zipfile.ZipFile(sf)
                    zd=z.read([line for line in z.namelist() if line.find("xbrl") > -1][0])
                    for line in zd.split("><"):
                        #予想売上、売上伸び率を設定
                        if line.find("ForecastNetSales") > -1:
                            if line.find("NextYearConsolidatedDuration") > -1:
                                if re1.search(line) is not None:
                                    tmpArray2.append(re1.search(line).group(1))
                        #予想営業利益、営業利益伸び率を設定
                        if line.find("ForecastOperatingIncome") > -1:
                            if line.find("NextYearConsolidatedDuration") > -1:
                                if re1.search(line) is not None:
                                    tmpArray3.append(re1.search(line).group(1))
                    tmpArray1.extend(sorted(tmpArray2,reverse=True))
                    tmpArray1.extend(sorted(tmpArray3,reverse=True))
                except:
                    pass
                #取得データを表示
                if len(tmpArray1) == 6:
                    print >>fp,"%s,%s,%s,%s,%s,%s" % (tmpArray1[0],tmpArray1[1],tmpArray1[2],tmpArray1[3],tmpArray1[4],tmpArray1[5])
                #配列初期化
                tmpArray1=[]
                tmpArray2=[]
                tmpArray3=[]

if __name__ == '__main__':
    main()

取得したデータの内、売上高増加率上位100社は以下の通り。

会社コード 会社名 売上高 売上増減率 営業利益 営業利益増減率
32370 M-イントランス 4600000000 198% 500000000 44%
96100 ウィルソンWLW 3500000000 111% 345000000 125%
47430 アイティフォー 11000000000 106% 1450000000 110%
77440 ノーリツ鋼機 55000000000 101% 2750000000 346%
64170 SANKYO 200000000000 92% 32000000000 356%
17190 安藤ハザマ 355000000000 79% 7000000000 25%
62450 ヒラノテクシード 28000000000 78% 2730000000 133%
32520 日本商業開発 11300000000 72% 1100000000 107%
46510 サニックス 71500000000 65% 8000000000 328%
88900 レーサム 25200000000 64% 4300000000 96%
37420 M-ITBOOK 1800000000 58% 80000000 136%
71020 日車輌 123000000000 48% 8500000000 323%
42980 プロトコーポ 56760000000 48% 4650000000 11%
21810 テンプHD 365000000000 48% 18500000000 88%
67270 ワコム 88000000000 44% 11380000000 44%
32580 常和HD 21400000000 44% 6700000000 35%
14200 サンヨーH 57735000000 41% 2362000000 222%
53440 MARUWA 34000000000 39% 3700000000 62%
31750 M-APC 15787000000 39% 929000000 32%
46540 ニチゾウテック 13700000000 38% 700000000 75%
24670 バルクHD 1431000000 37% 20000000 34%
51910 東海ゴム 360000000000 37% 12000000000 30%
59900 スーパーツール 8550000000 36% 850000000 26%
63670 ダイキン工 1760000000000 36% 125000000000 41%
42370 フジプレアム 16105000000 36% 1624000000 53%
93850 ショーエイコーポ 15500000000 36% 429000000 224%
90410 近鉄 1250000000000 34% 51000000000 8%
63570 三精輸送機 20000000000 34% 1150000000 27%
30110 バナーズ 4059000000 34% 153000000 -6%
42060 アイカ工 135000000000 33% 13400000000 11%
68320 アオイ電子 37279000000 31% 2992000000 24%
37630 プロシップ 4500000000 31% 1100000000 32%
63300 洋エンジ 300000000000 31% 10000000000 527%
43470 ブロードメディア 17000000000 31% 400000000 140%
80960 兼松エレク 59000000000 31% 5300000000 11%
24130 エムスリー 34000000000 31% 11400000000 23%
80020 丸紅 13700000000000 30% 175000000000 42%
40080 住友精化 91500000000 30% 4800000000 15%
19160 日成ビルト 33000000000 30% 2100000000 14%
81390 ナガホリ 18700000000 29% 590000000 22%
72660 今仙電機 110000000000 28% 5500000000 96%
66740 GSユアサ 350000000000 28% 16000000000 64%
42710 日カーリット 47500000000 26% 2000000000 45%
66750 サクサ 49000000000 26% 800000000 43%
14910 中外鉱 24600000000 26% 1200000000 -20%
67770 SANTEC 3031000000 26% 200000000 636%
72110 三菱自 2270000000000 26% 100000000000 57%
45570 医学生物 8693000000 26% 232000000 -2%
38500 M-NTTDIM 4500000000 25% 540000000 46%
74080 ジャムコ 64180000000 25% 3017000000 5%
72140 GMB 57500000000 25% 2100000000 61%
57070 東邦鉛 129000000000 25% 4100000000 667%
78370 アールシーコア 12700000000 24% 890000000 29%
45240 仁丹 12000000000 24% 600000000 118%
75910 エクセル 110000000000 24% 1930000000 53%
67370 EIZO 72000000000 24% 6000000000 192%
77270 オーバル 14834000000 24% 744000000 121%
32540 プレサンス 52288000000 24% 10004000000 7%
67890 ローランドDG 38590000000 23% 3780000000 165%
67090 明星電 8000000000 23% 500000000 446%
72300 日信工業 214000000000 23% 18000000000 105%
21750 SMS 12475000000 23% 1780000000 13%
72670 ホンダ 12100000000000 23% 780000000000 43%
37660 システムズD 6756000000 22% 306000000 144%
18350 東鉄工 105800000000 21% 6100000000 12%
24540 オールアバウト 4000000000 21% 200000000 27%
88600 フジ住宅 80000000000 21% 5400000000 42%
49660 上村工業 45890000000 21% 5660000000 31%
24830 翻訳センター 8800000000 21% 470000000 11%
61130 アマダ 230000000000 21% 14500000000 214%
69320 遠藤照明 48010000000 21% 8150000000 13%
40050 住友化 2350000000000 20% 90000000000 100%
23710 カカクコム 28000000000 20% 13700000000 18%
60600 こころネット 12633000000 20% 1004000000 8%
80860 ニプロ 290000000000 20% 15400000000 35%
68690 シスメックス 175000000000 20% 30000000000 38%
20580 ヒガシマル 9857000000 20% 508000000 88%
63260 クボタ 1400000000000 20% 160000000000 41%
54440 大和工 190000000000 20% 5000000000 -9%
42010 日本合 110000000000 20% 15500000000 31%
19250 大和ハウス 2400000000000 20% 140000000000 9%
72940 ヨロズ 132000000000 19% 6000000000 -16%
68890 オーデリック 36000000000 19% 4500000000 78%
78640 フジシール 118000000000 19% 8400000000 8%
50090 富士興産 114000000000 19% 950000000 11%
33410 日本調剤 166196000000 19% 6881000000 112%
66240 田淵電機 37000000000 19% 2000000000 64%
80150 豊田通商 7500000000000 19% 155000000000 34%
31500 グリムス 6201000000 19% 350000000 121%
32380 セントラル総 19000000000 19% 850000000 2%
99620 ミスミG 160000000000 19% 17500000000 4%
97880 ナック 86000000000 18% 5300000000 19%
34310 宮地エンジ 23000000000 18% 700000000 16%
66170 東光高岳 90000000000 18% 1740000000 -23%
66520 IDEC 34700000000 18% 3200000000 123%
48200 EMシステムズ 12129000000 18% 1541000000 27%
63660 千代化建 470000000000 18% 24000000000 -4%
72740 ショーワ 274000000000 18% 19000000000 49%

XBRLデータから業績予想を抽出する際、BeautifulSoupを使用してデータの抽出を試してみたが、うまくいかなかったので、正規表現を使用してデータ抽出を行った。また、XBRLデータはzipファイルに圧縮されて格納されている為、ダウンロード後解凍する必要があると考えていたが、zipfileモジュールを使用する事により解凍せずに直接対象ファイルを読み込む事が出来た。

抽出出来たデータ件数は1300件程である。ぱっと見であるが、レーサムや日本商業開発、常和HD等不動産関連銘柄が強気な来期予想を立てている感じがする。もう少し分析してみて今後の投資に役立てていきたい。