Skip to main content

Finance toolkit for listed Brazilian companies

Project description

PyPI version Anaconda-Server Badge PyPI Downloads Python Version Anaconda License Code Style: black

FinLogic: finance data analysis toolkit for listed Brazilian companies

*** IMPORTANT LEGAL DISCLAIMER ***


FinLogic is not affiliated, endorsed or vetted by the Securities and Exchange Commission of Brazil (CVM). It's an open-source tool that uses CVM publicly available data and is intended for research and educational purposes. This finance tool is distributed under the MIT License (see the LICENSE file in the release for details).



FinLogic offers a Pythonic way to analyze financial data of listed companies in Brazil from information made publicly avaible by local securities market authority (CVM). This finance tool is built on top of Pandas.


Installation

The source code is currently hosted on GitHub at: https://github.com/crdcj/FinLogic

Binary installers for the latest released version are available at the Python Package Index (PyPI) and on Conda.

# Conda:
conda install -c conda-forge finlogic
# or PyPI:
pip install finlogic

Requirements


Quick Start

Create FinLogic Local Database

The 'update_database' function is responsible for downloading raw financial files from CVM, processesing aprox. 18 millions rows of accounting values and storing it into a single Pandas DataFrame compressed file for local data analysis. In the firt run, the process can take 3 minutes depending on CVM Server connection and local CPU power. The database generation needs at least 8 GB of free memory and a quad core processor is recommended. For subsequent updates, only updated CVM files will be processed and inserted into the database, which will be faster.

>>> import finlogic as fl

# Compile FinLogic database for the first time:
>>> fl.update_database()

Updating CVM raw files...
...
FinLogic database updated 

# Show database info:
>>> fl.database_info()
FinLogic Database Info Value
Database Path /home/crcj/repos/FinLogic/finlogic/data
File Size (MB) 39.0
Last Update Call 2022-04-20 07:29:08
Finlogic Last Modified 2022-04-20 07:31:48
CVM Last Update 2022-04-17 13:09:01
Size in Memory (MB) 626.3
Accounting Rows 18,757,249
Unique Accounting Codes 2,008
Companies 1,093
Unique Financial Statements 12,139
First Financial Statement 2009-01-31
Last Financial Statement 2022-03-31
# Search for a company in database:
>>> fl.search_company('petro')
co_name co_id co_fiscal_id
0 3R PETROLEUM ÓLEO E GÁS S.A. 25291 12.091.809/0001-55
1 PETRO RIO S.A. 22187 10.629.105/0001-68
2 PETROBRAS DISTRIBUIDORA S/A 24295 34.274.233/0001-02
3 PETROLEO BRASILEIRO S.A. PETROBRAS 9512 33.000.167/0001-01
4 PETROLEO LUB DO NORDESTE SA 9520 07.275.159/0001-68
5 PETRORECÔNCAVO S.A. 25780 03.342.704/0001-30
6 PRONOR PETROQUIMICA SA 9784 13.552.070/0001-02
7 REFINARIA DE PETROLEOS MANGUINHOS S.A. 9989 33.412.081/0001-96

The Company Class

The Company Class allows you to easily access financial data from Brazilian companies. All values are in local currency (Real).

# Create a Company object to acces its financial data:
# Both CVM (regulator) ID or Fiscal ID can be used as an identifier.
>>> petro = fl.Company(9512, acc_method='separate', acc_unit='million')

# Change company accounting method back to consolidated (default):
>>> petro.acc_method = 'consolidated'

# Change company accounting unit to billion (default is 1):
>>> petro.acc_unit = 'billion'

# Show company info:
>>> petro.info()
Company Info Values
Name PETROLEO BRASILEIRO S.A. PETROBRAS
CVM ID 9512
Fiscal ID (CNPJ) 33.000.167/0001-01
Total Accounting Rows 39,292
Selected Tax Rate 0.34
Selected Accounting Method consolidated
Selected Accounting Unit 1,000,000,000
First Annual Report 2009-12-31
Last Annual Report 2021-12-31
Last Quarterly Report 2021-09-30
# Show company assets in Brazilian currency:
>>> petro.report(report_type='assets')
...
# Show company liabilities with custom arguments:
>>> petro.report(report_type='debt', acc_level=4, num_years=3)
acc_code acc_name acc_fixed 2020-12-31 2021-12-31 2022-12-31
2.01.04 Loans and Financing True 51.364 50.631 47.65
2.01.04.01 Loans and Financing True 21.751 20.316 18.656
2.01.04.02 Debentures True 0 0 0
2.01.04.03 Lease Financing True 29.613 30.315 28.994
2.02.01 Loans and Financing True 341.184 277.187 233.053
2.02.01.01 Loans and Financing True 258.287 178.908 137.63
2.02.01.02 Debentures True 0 0 0
2.02.01.03 Lease Financing True 82.897 98.279 95.423
# Change account names to Portuguese:
>>> petro.language = "portuguese"
>>> petro.report(report_type='debt', acc_level=4, num_years=3)
acc_code acc_name acc_fixed 2020-12-31 2021-12-31 2022-12-31
2.01.04 Empréstimos e Financiamentos True 51.364 50.631 47.65
2.01.04.01 Empréstimos e Financiamentos True 21.751 20.316 18.656
2.01.04.02 Debêntures True 0 0 0
2.01.04.03 Financiamento por Arrendamento True 29.613 30.315 28.994
2.02.01 Empréstimos e Financiamentos True 341.184 277.187 233.053
2.02.01.01 Empréstimos e Financiamentos True 258.287 178.908 137.63
2.02.01.02 Debêntures True 0 0 0
2.02.01.03 Financiamento por Arrendamento True 82.897 98.279 95.423
# Show company main indicators:
>>> petro.indicators(num_years=3)
Company Financial Indicators 2019-12-31 2020-12-31 2021-12-31
revenues 302.245 272.069 452.668
operating_cash_flow 101.766 148.106 203.126
ebitda 140.203 107.926 273.879
ebit 81.701 49.621 210.831
net_income 40.970 6.246 107.264
total_cash 33.294 64.280 62.040
total_debt 351.161 392.548 327.818
net_debt 317.867 328.268 265.778
working_capital -4.046 6.036 33.334
invested_capital 617.004 639.418 655.359
return_on_assets 0.062 0.035 0.140
return_on_capital 0.097 0.053 0.217
return_on_equity 0.144 0.020 0.344
gross_margin 0.403 0.455 0.485
ebitda_margin 0.463 0.396 0.605
operating_margin 0.178 0.120 0.307
net_margin 0.135 0.022 0.236

P.S.: All contributors are welcome, from beginner to advanced.

Felipe Costa and Carlos Carvalho

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

finlogic-0.3.9.tar.gz (20.5 kB view hashes)

Uploaded Source

Built Distribution

finlogic-0.3.9-py3-none-any.whl (18.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page