SlideShare a Scribd company logo
2
Most read
4
Most read
8
Most read
バフェットコードのデータ処理
-XBRLのデータ構造とparserの話-
@shoe116
0. 今日話すこと
1. 自己紹介的な
2. バフェットコードについて
○ バフェットコードって何?
○ バフェットコードが生まれたわけ
3. バフェットコードの日次データ処理
4. XBRLデータ構造とparserの話
○ XBRLとは
○ XBRLのデータ構造
○ データ処理におけるparserの考え方
5. まとめ
1. 自己紹介的な
なまえ:しゅう (@shoe116)
お仕事:広告系エンジニア→データ分析基盤屋さん
推し事:ももくろ→でんぱ組→BiSH→CY8ER、オサカナ
関連語:Hadoop, Kafka, Storm, Tez, Beam, Cloud Dataflow
開発言語:Java or Scala, Python, Go
バフェットコードはデータ処理を中心にwebアプリ以外を担当
2.1 バフェットコードって何?
オープンデータを用いた、効率的な企業分析を行うためのwebサイト
使い方は、https://www.buffett-code.com/ にアクセスするだけ
主な機能は以下の3つ
1. 財務・株価データの参照
2. スクリーニング
3. 企業比較
最近、ようやく有料機能出した
機能①. 企業別財務数値・株価指標の参照
● 国内の上場企業データベースを可視化して提供
○ 検索窓に企業名or銘柄コードを入力
○ 業種から銘柄を探すことも可能
○ 例:任天堂の企業詳細ページ
● 企業ごとに以下のデータを提供
○ 基本的な財務数値と株価指標
○ 株価推移とヒストリカルマルチプル
○ 大株主情報
○ 四半期毎の業績と業績予想
○ 開示資料へのリンク集
機能②. スクリーニング(条件検索)
投資基準に当てはまる企業を検索する
https://www.buffett-code.com/screening
● 多彩な検索条件を指定可能
○ P/L、B/S、C/S
○ 収益性と成長性、財務健全性
○ 財務数値
○ キャッシュフロー
○ 研究開発費や上場年数
機能③. 企業比較
複数企業の財務データ・株価指数を、指定した科目で一覧比較
https://www.buffett-code.com/comps
● 柔軟な科目指定
● 見やすい表示
○ 最大・最小を色付け
○ 代表値の自動表示
● 同一銘柄の新旧比較も可能
○ 3年前のデータの表示
2.2 バフェットコードが生まれたわけ
We created
Buffet-Code
3. バフェットコードの日次データ加工処理
1. OPENデータ(XBRL file)を取得、保存
○ EDINETから、該当日発行分の有価証券報告書(有報)を取得
○ TDNETから、該当日発行分の決算短信を取得
○ Edgarから、該当日発行分の10-K, 10-Qを取得
○ それぞれをオブジェクトストレージに保存
2. 取得したXBRL fileをparseし、RDBに格納
3. 格納されたデータと、当日の株価を元に財務数値を計算、RDBに格納
4. RDB上のスクリーニング、比較用のデータセットを更新
4.1 XBRLとは
● eXtensible Business Reporting Language
● Edinet, Tdnet, Edgar 等から結構いい感じにDLできるXML
○ Edinet http://disclosure.edinet-fsa.go.jp
○ Tdnet https://www.jpx.co.jp/equities/listing/tdnet/index.html
○ Edgar https://www.sec.gov/edgar.shtml
● XMLのタグごとに、データが入っている
$ grep ‘jppfs_cor:NetSales’ test.xbrl
<jppfs_cor:NetSales contextRef="Prior1YearDuration" unitRef="JPY" decimals="-3">41275187000</jppfs_cor:NetSales>
<jppfs_cor:NetSales contextRef="CurrentYearDuration" unitRef="JPY" decimals="-3">45089432000</jppfs_cor:NetSales>
4.2 XBRLのデータ構造
Tag
- contextRef
- unitRef
- decimals
- value
- XBRLには、簡単に言うと ↓ の配列が入っている
- 使うときはTag と contextRefでvalueを特定しdecimalsでオフセット
- ライブラリ書いたよ! https://github.com/BuffetCode/edinet_xbrl
<jppfs_cor:NetSales contextRef="Prior1YearDuration" unitRef="JPY" decimals="-3">41275187000</jppfs_cor:NetSales>
4.3 データ処理におけるparserの考え方
● 死ぬほど当たり前だけど、parse := Inv format
● 感覚的にはserializerとdeserializerを実装するときと似ている
○ 論理的なデータ構造は変えず、物理的なAlignmentだけ変換する
● 論理的なデータ構造から設計するべき
  1. 論理的な財務データを考える (FinancialsObject)
  2. def XBRL.formatter(financials: FinancialsObject) : XBRLFile を想像する
  3. def XBRL.parser(xbrl: XBRLFile): FinancialsObject が決まる
● 論理的な中間表現を介して変換のペアを書くときれいに作れる
○ XBRL => JSONならXBRL parserとJSON Formatter
○ XBRL => TableRowなら、XBRL parserとTableRow Formatter
4.4 「XBRLのparseは難しい」という人へ
● 難しいのparseじゃなくてformat
○ nestしているので、RDBのrowとかCSVにするのは難しい
○ XBRLってつまりXMLなので、難しいはずない
● Parserにparse以外のロジックを書いているコードはよく見る
○ 必要な情報だけ抽出する、内部の変数を上書きするetc
○ 戻り値をformatterに食わせて元に戻らないのはparserじゃない
● XX2YYConverterは↓って実装すると読みやすいしテストしやすい
def convert(input: XX): YY
obj = XXParser.parse(input)
YYFormatter.format(obj)
5. Appendix
Buffett-Codeの現状
1. Buffett-Codeと周辺サービス
○ メインのWebアプリケーション https://www.buffett-code.com/
○ フォロワー26.5K超のTwitter https://twitter.com/buffett_code
○ 企業分析に役立つBlog https://blog.buffett-code.com/
○ CampFire https://camp-fire.jp/projects/view/114594
2. Buffett-Codeの技術発信
○ OSSの公開 https://github.com/buffetcode
○ Python Packageの公開 https://pypi.org/project/edinet-xbrl/
○ Buffett-Codeの内部技術の紹介
■ https://qiita.com/shoe116/items/dd362ad880f2b6baa96f
■ https://qiita.com/shoe116/items/a7b688d05b699cf403a1
● Buffett-Code
○ WebApp https://www.buffett-code.com/
○ Usage https://blog.buffett-code.com/entry/18/02/01
○ Twitter https://twitter.com/buffett_code
○ Blog https://blog.buffett-code.com/
○ GitHub https://github.com/buffetcode
○ Dev Docs https://qiita.com/shoe116/items/dd362ad880f2b6baa96f
● Data Sources
○ Edinet, http://disclosure.edinet-fsa.go.jp
○ Tdnet, https://www.jpx.co.jp/equities/listing/tdnet/index.html
○ Edgar, https://www.sec.gov/edgar/searchedgar/companysearch.html
● XBRL Info
○ XBRL.org https://www.xbrl.org/
○ 有報キャッチャー https://ufocatch.com/

More Related Content

PDF
스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)
PPTX
AWSで作る分析基盤
PDF
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
PDF
Dockerからcontainerdへの移行
PDF
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
PDF
最近のストリーム処理事情振り返り
PDF
Apache NiFi の紹介 #streamctjp
PDF
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)
AWSで作る分析基盤
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
Dockerからcontainerdへの移行
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
最近のストリーム処理事情振り返り
Apache NiFi の紹介 #streamctjp
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門

What's hot (20)

PPTX
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
PDF
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
PPTX
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
PPT
Cassandraのしくみ データの読み書き編
PDF
待ち事象から考える、Sql server の改善ポイント
PPTX
Amazon SageMakerでカスタムコンテナを使った学習
PPTX
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
PDF
MLflow Model Serving
PDF
[236] 카카오의데이터파이프라인 윤도영
PDF
アプリを成長させるためのログ取りとログ解析に必要なこと
PDF
쿠키런 1년, 서버개발 분투기
PDF
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
PDF
PHPでWebSocketを実装してみてわかったこと
PPTX
PFSなTLS通信を復号する
PDF
ChatGPT の現状理解と 2023年7月版 LLM情報アップデート
PDF
[DI05] Azure Event Hubs と Azure Stream Analytics で、”今を処理”する
PPTX
로그 기깔나게 잘 디자인하는 법
PDF
データ分析基盤について
PDF
Apache Arrow - データ処理ツールの次世代プラットフォーム
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
大量のデータ処理や分析に使えるOSS Apache Spark入門(Open Source Conference 2021 Online/Kyoto 発表資料)
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
Cassandraのしくみ データの読み書き編
待ち事象から考える、Sql server の改善ポイント
Amazon SageMakerでカスタムコンテナを使った学習
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
MLflow Model Serving
[236] 카카오의데이터파이프라인 윤도영
アプリを成長させるためのログ取りとログ解析に必要なこと
쿠키런 1년, 서버개발 분투기
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
PHPでWebSocketを実装してみてわかったこと
PFSなTLS通信を復号する
ChatGPT の現状理解と 2023年7月版 LLM情報アップデート
[DI05] Azure Event Hubs と Azure Stream Analytics で、”今を処理”する
로그 기깔나게 잘 디자인하는 법
データ分析基盤について
Apache Arrow - データ処理ツールの次世代プラットフォーム
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Ad

More from Shu (shoe116) (9)

PDF
GCPでStreamなデータパイプライン作った
PDF
オープンデータを利用した企業分析ツール"Buffett-Code"について
PDF
データ分析基盤の憂鬱と退屈
PDF
analists_rating_by_lda_hackday_201702
PPTX
データサイエンティストの憂鬱と退屈
PPTX
idoling_approval_desire
PPTX
tokyo_webmining_no51
PDF
Hadoop Ops & Fabric
PDF
エンジニアが日々何を考えているのか、ということ
GCPでStreamなデータパイプライン作った
オープンデータを利用した企業分析ツール"Buffett-Code"について
データ分析基盤の憂鬱と退屈
analists_rating_by_lda_hackday_201702
データサイエンティストの憂鬱と退屈
idoling_approval_desire
tokyo_webmining_no51
Hadoop Ops & Fabric
エンジニアが日々何を考えているのか、ということ
Ad

Recently uploaded (10)

PDF
世界半導体用酸化ハフニウム市場のサプライチェーン解析:上流、下流、収益モデル分析2025-2031
PDF
Qlik TECH TALK セミナー:What's New In Qlik ~ 2025年7月リリース最新機能のご紹介
PDF
グローバルロープウェイ用スチールワイヤーロープ市場2025:主要企業のシェア、売上動向、競争戦略
PDF
【QYResearch】人形ロボット産業の市場構造と今後の発展方向に関する分析レポート
PDF
商用ウェブカメラ市場:世界の産業現状、競合分析、シェア、規模、動向2025-2031年の予測
PDF
限外ろ過膜調査レポート:市場規模、シェア、産業分析データ、最新動向2025-2031 YH Research
PDF
細胞培養用バイオリアクターおよび発酵槽市場規模の成長見通し:2031年には2823百万米ドルに到達へ
PDF
【QYResearch】グローバル農業機械市場の動向分析と成長戦略に関する総合調査報告
PDF
【QYResearch】グローバルコネクタ市場の動向と将来展望に関する詳細な分析報告
PDF
XCMSを用いた質量分析データ処理_BioCAsia2021_yamamoto.pdf
世界半導体用酸化ハフニウム市場のサプライチェーン解析:上流、下流、収益モデル分析2025-2031
Qlik TECH TALK セミナー:What's New In Qlik ~ 2025年7月リリース最新機能のご紹介
グローバルロープウェイ用スチールワイヤーロープ市場2025:主要企業のシェア、売上動向、競争戦略
【QYResearch】人形ロボット産業の市場構造と今後の発展方向に関する分析レポート
商用ウェブカメラ市場:世界の産業現状、競合分析、シェア、規模、動向2025-2031年の予測
限外ろ過膜調査レポート:市場規模、シェア、産業分析データ、最新動向2025-2031 YH Research
細胞培養用バイオリアクターおよび発酵槽市場規模の成長見通し:2031年には2823百万米ドルに到達へ
【QYResearch】グローバル農業機械市場の動向分析と成長戦略に関する総合調査報告
【QYResearch】グローバルコネクタ市場の動向と将来展望に関する詳細な分析報告
XCMSを用いた質量分析データ処理_BioCAsia2021_yamamoto.pdf

DataProcessingInBuffettCode-20190213