Création d'une classe pour télécharger et analyser XBRL à partir d'UFO Catcher

À propos de cet article

Je me suis demandé s'il serait possible de collecter des données d'investissement fondamentales avec Python, et quand je l'ai recherché, j'ai trouvé des articles qui téléchargeaient XBRL à partir du récupérateur d'ovnis et faisaient diverses choses, mais je pensais que tous seraient irritants et gênants. J'ai créé un module qui permet d'obtenir et d'analyser rapidement XBRL. Je viens de le faire, donc je serais heureux si vous pouviez me contacter en cas de problème.

1. Installation

Installez à partir du référentiel Git.

sawadyrr5/UfoDataReader

python


pip install git+https://github.com/sawadyrr5/UfoDataReader

2. Obtenez XBRL

Pour obtenir le XBRL, utilisez la classe DataReader. Spécifiez symbole, début, fin pour afficher tous les documents correspondants. Ceux avec "Rapport sur les valeurs mobilières" ou "Rapport trimestriel" dans le titre sont is_yuho = True. Si fetch_xbrl = True, les données XBRL seront téléchargées (notez qu'il y a environ plusieurs Mo).

python


In [1]:
# 1. getting xbrl
from UfoDataReader.io.data import DataReader
from datetime import datetime

start = datetime(2017, 6, 23)
end = datetime(2017, 6, 23)
ufos = DataReader('7203', 'ufo', start, end, fetch_xbrl=False)  # if fetch_xbrl=True, download xbrl files.
ufos
Out[1]:
[{'docid': 'S100AKEX',
  'id': 'ED2017062301177',
  'is_yuho': True,
  'title': '[E02144] Rapport sur les valeurs mobilières de Toyota Motor Co., Ltd. - 113e terme(1er avril 2016 au 31 mars 2017)',
  'updated': datetime.datetime(2017, 6, 23, 0, 0),
  'url': 'http://resource.ufocatch.com/data/edinet/ED2017062301177'},
 {'docid': 'S100AI3I',
  'id': 'ED2017062301247',
  'is_yuho': False,
  'title': '[E02144] Rapport de contrôle interne de Toyota Motor Co., Ltd. - 113e terme(1er avril 2016 au 31 mars 2017)',
  'updated': datetime.datetime(2017, 6, 23, 0, 0),
  'url': 'http://resource.ufocatch.com/data/edinet/ED2017062301247'}]

3. Perspective XBRL

L'analyse XBRL utilise la classe UfoXBRLParser. Passer un fichier XBRL à la méthode parse () renverra un document XBRL analysé. Vous pouvez obtenir les informations de base du document en passant le document XBRL à parseDEI ().

python


In [2]:
# 2.1 parse xbrl (US GAAP)
from UfoDataReader.util.parser import UfoXBRLParser
ufoparser = UfoXBRLParser()

toyota = 'jpcrp030000-asr-001_E02144-000_2015-03-31_01_2015-06-24.xbrl'     # US GAAP

xbrl = ufoparser.parse(toyota)
dei = ufoparser.parseDEI(xbrl)
dei.__dict__

python


Out[2]:
{'accounting_standards': 'US GAAP',
 'company_name': 'Toyota Motor Corporation',
 'current_fy_end': '2015-03-31',
 'current_fy_start': '2014-04-01',
 'edinet_code': 'E02144',
 'trading_symbol': '72030'}

Vous pouvez obtenir des indicateurs financiers de base, etc. en passant le document XBRL à parseGAAP (). Il existe trois types de normes comptables pour la préparation des rapports sur les titres: US GAAP, IFRS et Japan GAAP, et les noms des éléments pour l'analyse sont chacun légèrement différents, mais pour le moment, si vous creusez dans parseGAAP (), ce sera interne. J'essaie de faire la distinction entre les PCGR américains et les PCGR japonais et de les analyser. Les IFRS ne sont pas prises en charge. (Reportez-vous au fichier suivant publié par la Financial Services Agency pour plus de détails tels que les noms d'éléments)

(e) Liste des éléments de taxonomie (EXCEL: 6 281 Ko)

Dans le cas de Toyota Motor, il est créé sur la base des normes US GAAP.

python


In [3]:
gaap = ufoparser.parseGAAP(xbrl)
gaap.__dict__

python


Out[3]:
{'assets': '15128623000000',
 'basic_eps': '688.02',
 'cashflow_from_financing': '306045000000',
 'cashflow_from_investing': '-3813490000000',
 'cashflow_from_operation': '3685753000000',
 'comprehensive_income': '3294275000000',
 'current_assets': '6000524000000',
 'current_liabilities': '3571917000000',
 'diluted_eps': '687.66',
 'liabilities': '4944351000000',
 'net_assets': '10184271000000',
 'net_income_loss': '2173338000000',
 'non_current_assets': '9128099000000',
 'non_current_liabilities': '1372433000000',
 'operating_income_loss': 0,
 'per': '12.2',
 'profit_loss_before_tax': '2892828000000',
 'revenues': '27234521000000',
 'shares_outstanding': '3417997000'}

C'est le cas des entreprises créées avec la norme nationale Japan GAAP.

python


In [4]:
# 2.2 parse xbrl (Japan GAAP)
amiyaki = 'jpcrp030000-asr-001_E03398-000_2017-03-31_01_2017-06-23.xbrl'    # Japan GAAP

xbrl = ufoparser.parse(amiyaki)
dei = ufoparser.parseDEI(xbrl)
dei.__dict__

python


Out[4]:
{'accounting_standards': 'Japan GAAP',
 'company_name': 'Amiyakitei Co., Ltd.',
 'current_fy_end': '2017-03-31',
 'current_fy_start': '2016-04-01',
 'edinet_code': 'E03398',
 'trading_symbol': '27530'}

python


In [5]:
gaap = ufoparser.parseGAAP(xbrl)
gaap.__dict__

python


Out[5]:
{'assets': '23304000000',
 'basic_eps': '315.96',
 'bps': '2769.14',
 'cashflow_from_financing': '-744000000',
 'cashflow_from_investing': '-1339000000',
 'cashflow_from_operation': '3100000000',
 'comprehensive_income': '2163000000',
 'current_assets': '11004000000',
 'current_liabilities': '3538000000',
 'diluted_eps': '',
 'equity_to_asset_ratio': '0.814',
 'liabilities': '4339000000',
 'net_assets': '18965000000',
 'netsales': '30564000000',
 'non_current_assets': '12299000000',
 'non_current_liabilities': '800000000',
 'ordinary_income_loss': '3053000000',
 'per': '13.1',
 'profit_loss': '2163000000',
 'roe': '0.119',
 'shares_outstanding': '6848800',
 'total_assets': '23304000000'}

référence

Analyse financière pour l'étape d'investissement 1 "Acquérir des informations financières XBRL" Analyse financière pour l’étape 2 de l’investissement "Importer le fichier XBRL dans la base de données" Note d'article XBRL signalé

Recommended Posts

Création d'une classe pour télécharger et analyser XBRL à partir d'UFO Catcher
J'ai créé une classe en Python et essayé de taper du canard
[EC2] Comment installer et télécharger chromedriver à partir de la ligne de commande
Django: Importer une classe depuis une chaîne
Installation d'OpenMPI Du téléchargement au passage
Migration de Python2 vers Python3 (Python2 est reconstruit comme un environnement virtuel et coexiste)
Connectez-vous à postgreSQL depuis Python et utilisez des procédures stockées dans une boucle.