EDINET APIを使って財務分析をする


# やりたいこと
上場企業すべての財務諸表を集める
そして、財務分析する。
①まずは、ある期間に提出された財務諸表をxblr形式で取得する

# 実現方法
・EDINET APIを使う
・有報Catcherさんのサービス使った方がいい気がしてきた。。。(投稿後更新)
https://ufocatch.com

# EDINET APIとは
・「有価証券報告書・四半期報告書・親会社等状況報告書などの開示書類を無料で閲覧できる」サービス
https://kotobank.jp/word/EDINET-445516
・そのAPIが最近(平成31年３月17日)公開された。
http://disclosure.edinet-fsa.go.jp/

# 内容
・例によって使い方が分からないので順を追ってやりたいことを実現する
・WebAPI全然わからないので、ご指摘お待ちしてます＞＜(予防線)

# 仕様
https://disclosure.edinet-fsa.go.jp/download/ESE140133.pdf

# 参考
https://qiita.com/mokos/items/1383d1a1c3d8c94c0740

# 仕様と流れ
EDINET APIは次の2点から構成される
・提出された書類を把握するためのAPI(書類一覧API)
・提供された書類を取得するためのAPI(書類取得API)

データ取得までの流れは次の通り
* 1. メタデータの取得・・・(書類一覧API)
* 2. メタデータの内容確認
* 3. 提出書類一覧の取得・・・(書類一覧API)
* 4. 提出書類一覧の内容確認
* 5. 提出書類の取得・・・(書類取得API)

# インターフェース
## 書類一覧API
https://disclosure.edinet-fsa.go.jp
/api/v1/documents.json?「リクエストパラメータ」

### リクエスト
パラメータは次の通り
 * date・・・(必須)提出書類一覧のファイル日付(yyyy-mm-dd形式)
   - 指定可能範囲は過去5年間。
 * type・・・(任意)1or2。Defaultは1
   - 1を指定するとメタデータのみ。2だと提出書類一覧も取得
    - メタデータってなんだ。。。

### レスポンス

 * 例1
https://disclosure.edinet-fsa.go.jp/api/v1/documents.json?date=2019-04-01

 * 結果(json形式)

| metadata||
|---|---|
| title | 提出された書類を把握するためのAPI |
| parameter |  |
| date | 2019-04-01 |
| type | 1 |
| resultset |  |
| count | 511 |
| processDateTime | 2019-04-21 00:00 |
| status | 200 |
| message | OK |


 * 例2
https://disclosure.edinet-fsa.go.jp/api/v1/documents.json?date=2019-04-01&type=2

 * 結果(json形式)

| metadata |  |
|:--|:--|
| title | 提出された書類を把握するためのAPI |
| parameter |  |
| date | 2019-04-01 |
| type | 2 |
| resultset |  |
| count | 511 |
| processDateTime | 2019-04-21 00:00 |
| status | 200 |
| message | OK |

| results |提出書類一覧(1:ある、0:ない、null：不開示?)  |
|:--|:--|
| 0 |  |
| seqNumber | 1 |
| docID | S100FH6W |
| edinetCode | E06479 |
| secCode | null |
| JCN | 7010401061146 |
| filerName | インベスコ・アセット・マネジメント株式会社 |
| fundCode | G07991 |
| ordinanceCode | 030 |
| formCode | 995000 |
| docTypeCode | 180 |
| periodStart | null |
| periodEnd | null |
| submitDateTime | 2019-04-01 09:00 |
| docDescription | 臨時報告書（内国特定有価証券） |
| issuerEdinetCode | null |
| subjectEdinetCode | null |
| subsidiaryEdinetCode | null |
| currentReportReason | 第29条第2項第4号 |
| parentDocID | null |
| opeDateTime | null |
| withdrawalStatus | 0 |
| docInfoEditStatus | 0 |
| disclosureStatus | 0 |
| xbrlFlag | 1 |
| pdfFlag | 1 |
| attachDocFlag | 0 |
| englishDocFlag | 0 |
| 1 |  |
・・・以下略

* 出力データ内容の詳細は「API仕様書」参照のこと
* とりあえず「xbrlFlag」が立っていればいいのかね
* 重要なのは「docID(書類管理番号)」「docTypeCode(書類種別コード)」である。

## 書類一覧API
https://disclosure.edinet-fsa.go.jp
/api/v1/documents/ 書類管理番号

* 後続の「書類取得API」に必要な情報は「docId(書類管理番号)」
* 「有価証券報告書」の「docTypeCode(書類種別コード)」は「120」

### リクエスト
パラメータは下記の通り
type・・・
 - 1:提出本文書及び監査報告書
 - 2:PDF
 - 3:代替書面・添付文書
 - 4:英文ファイル:
### レスポンス

例1
https://disclosure.edinet-fsa.go.jp/api/v1/documents/S100FH6W%20?type=1

type1の場合、zipでダウンロードされる
docTypeCodeが180だったので、ファイルのなかに有価証券報告書は存在しない。

例2:
https://disclosure.edinet-fsa.go.jp/api/v1/documents/S100FJAQ%20?type=1
docTypeCodeが120だったので、ファイルのなかに有価証券報告書が存在した。

# 困ったこと
* 中身のhtmlファイルに関しては、会社によって形式が異なっていた。
* また、ある期間に提出された財務諸表なので、ある期間の財務諸表ではなかった。
* csv形式で得られると思ったけど、得られたのはhtmlと謎形式xbrlだった。

# 頑張らないといけないこと
* xbrlをcsvに変換しないといけない(macで)->とりあえずbeautifulSoup
* 5年間分の有価証券報告書を効率よく取得しなくてはならない->すげー頭悪く実装するとfor文で365*5回APIを叩いて、xbrlFlagが1かつdocTypeCodeが120のものについて、zipでダウンロード(xbrl以外のファイル含まれてしまう)?? 


# 感想
おもったより簡単だったけど、やりたいことの実現までには結構ステップあるし、何より5年分しか遡れないのが結構痛い。せめて10年分欲しかった。。。。