決算短信自動取得

財務諸表データが欲しいときに利用するのがEDINETやTDnetと呼ばれるものです.
どちらもXBRL形式で,
EDNITは有価証券報告書.確定データ
TDnetは決算短信.適時データ　
こんな感じのイメージです。

# TDnetを自動取得
有報キャッチャー - 適時開示情報配信サービス
決算資料が発表されると自動で随意UPされる。

```
http://resource.ufocatch.com/atom/tdnetx
```



特定の会社を知りたいときは

```
http://resource.ufocatch.com/atom/tdnetx/query/{TDnetコード}
```

TDnetコード(5桁)は証券コード(4桁)の後ろに"0"を追加しただけのように思えるのですが, 正確なことは理解していません.
TDnetコード一覧はどこいけば見れるのかな？
一応[東証上場会社情報サービス](http://www2.tse.or.jp/tseHpFront/JJK010010Action.do) ここみればTDnetコードは見つけれるはず.


## 財務データがあるlink属性
linkタグで hrefの末尾がixbrl.htm であるもの　を取得する.
目安として, hrefのurlに以下の文字列が含まれているかどうかで決算資料の種類が大別できるようだ.
###基本系
|文字列|財務諸表の種類|
|:---:|:---:|
|bs|貸借対照表|
|pl|損益計算書|
|cf|キャッシュフロー計算書|
|ss|株主資本変動計算書|
|ds|金銭の分配にかかる計算書(REIT)|
|ed|決算短信　|
|re|決算短信(REIT)|

REITは投資会社が提出するもので,　勘定科目等が一般の会社と違い特殊.
edやreは,　jpsmやifsmを末尾につけると取得しやすい.
jpは日本の会計基準. ifはIFRSのこと.

### 修正系
|文字列|修正系の内訳|
|:---:|:---:|
|rrfc|配当金修正|
|rvfc|業績予想修正|
|rvdf|配当予想のお知らせ|


###もしAsteriaで決算短信を取得するには

```:HtmlParseコンポーネント
基本>ベースセレクター：entry
基本>ループ開始:はい
取得する値>セレクター:link[href~=ed(if|jp)sm.*xbrl]
```

こんな感じでしょうか


## 具体的に決算短信を見てみると
[適当にピックアップ](http://resource.ufocatch.com/xbrl/tdnet/TD2018083000103/2018/8/30/081220180829401866/XBRLData/Summary/tse-qcedjpsm-46660-20180830346660-ixbrl.htm)
chrome で　HTMLのソースを読むとわかるのですが

数字が入っている箇所は
table属性のtbody属性のtr属性のtd属性 の下にいます.例外がないです.
(ただし, この下に\<span\>や\<p\>で囲まれていたり, いなかったりする)

数字の箇所は下のよう ix:nonfraction　で囲まれている。

``` 例.sample
<ix:nonfraction contextref="CurrentAccumulatedQ3Duration_ConsolidatedMember_ResultMember" decimals="-6" scale="6" format="ixt:numdotdecimal" name="tse-ed-t:OrdinaryIncome" unitref="JPY">14,754</ix:nonfraction>
```
### ix:nonfraction について

|属性|解説|
|:--:|:--:|
|contexref|属性が"_"区切りで記載|
|decimals|桁数や小数点|
|scale|なんぼで割っているか(6なら百万表記)|
|name|コロン(:)以下が勘定科目名|
|unitref|通貨などの単位など|
|sign|正負(マイナスの時のみ表示される)|

### その中でもconterefについて

|分類|英語|日本語意味|
|:--:|:--:|:--:|
||Duration|期間(PL系)|
||Instant|週間(BS系)|
|期間|Prior|前期|
|期間|Current|今期|
|期間|Next|来期|
|期間|Accumulated|累積(四半期のとき)|
|期間Member|YearEnd|会計年度末|
|期間Member|Annual|1会計年|
|連結Member|Consolidated|連結|
|連結Member|NonConsolidated|非連結|
|予実Member|Result|実績|
|予実Member|Forecast|予想|


ざっとこんな感じ。




これをAsteriaのHTMLParseコンポーネントで取得するには

```:HTMLParseコンポーネント
基本>ベースセレクター:table->tbody->tr->td
取得する値>セレクター:ix|nonfraction
```

![qiita_20180903_1.png](https://qiita-image-store.s3.amazonaws.com/0/180419/82248cb1-5877-e628-149b-ec4e7640be92.png)

個別の属性値は正規表現で取得すればいいかと。


## 直してほしいところ
### ①titleを統一して

```
<title>【TDnetコード】会社名 会計年度期　(四半期)決算短信 [(日本orIFRS)会計基準] (連結or非連結)</title>
```
基本の形だが,　会計年度末は西暦/和暦, 全角/半角数字がごじゃまぜになっている.

### ②修正系は基本形を守っていない
```例
【67520】パナソニック株式会社 配当予想に関するお知らせ
```
 "【TDnetコード】会社名 タイトルの要約"
　だけでどの決算短信の修正かが一目で分かりづらい

### link　が多すぎてわかりづらい

```
<linkList>
 <link />
 <link />
</linkList>
```
せめて繰り返し項目なものは明示してほしい. ここで愚痴を言ってもダメですが... 

兎にも角にも, 
これらの情報をもとにすれば, 上場企業の全部の会社の全部の財務諸表データが取得できます.


# PS
1年以上前の投稿ですが, 最近ストックされることが多いので追記.
実は私大学生の時, 
[金融データ解析の基礎 (シリーズ Useful R 8)]( https://www.amazon.co.jp/%E9%87%91%E8%9E%8D%E3%83%87%E3%83%BC%E3%82%BF%E8%A7%A3%E6%9E%90%E3%81%AE%E5%9F%BA%E7%A4%8E-%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-Useful-R-8/dp/4320123719/ref=sr_1_5?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA+Useful+R&qid=1580371503&s=books&sr=1-5)という本を読んで,　
この記事の内容みたいことをしたことがあります.
もっと発展させたい方はこちらを読むと理解が進むと思います.