FMP
Sep 11, 2023 5:44 PM - Rajnish Katharotiya
In this new post on Python for Finance, we are going to build an amazing Python tool to retrieve company fundamentals. It will be super simple to use.
We will pass the ticker of the company that we are interested in and Python will do its magic to show us below Pandas DataFrame converted into an Excel file.
Photo by Pixabay on Pexels
Below is just a sample for Apple. All main Apple fundamentals are basically presented to us thanks to this powerful script:
The main goal of the code is to get company financials from the last 5 years. Then, calculate some growth metrics and export to an Excel file. I would state below the main steps to achieve this:
Request data from the financialmodelingprep.
Load into a Python variable the main financial data requested from the API. That is, IS, BS, CF and main financial ratios.
Create an empty dictionary in order to store the values using the respective year as the key.
Transform the dictionary into a Pandas DataFrameCalculate a few growth measures as new columns
Export to Excel
And here is the code:
import pandas as pd
pd.options.display.float_format = '{:,.2f}'.format
#pass ticker of the company
company = 'AAPL'
api = 'your api key'
# Request Financial Data from API and load to variables
IS = requests.get(f'https://financialmodelingprep.com/api/v3/income-statement/{company}?apikey={api}').json()
BS = requests.get(f'https://financialmodelingprep.com/api/v3/balance-sheet-statement/{company}?apikey={api}').json()
CF = requests.get(f'https://financialmodelingprep.com/api/v3/cash-flow-statement/{company}?apikey={api}').json()
Ratios = requests.get(f'https://financialmodelingprep.com/api/v3/ratios/{company}?apikey={api}').json()
key_Metrics = requests.get(f'https://financialmodelingprep.com/api/v3/key-metrics/{company}?apikey={api}').json()
profile = requests.get(f'https://financialmodelingprep.com/api/v3/profile/{company}?apikey={api}').json()
millions = 1000000
#Create empty dictionary and add the financials to it
financials = {}
dates = [2021,2020,2019,2018,2017]
for item in range(5):
financials[dates[item]] ={}
#Key Metrics
financials[dates[item]]['Mkt Cap'] = key_Metrics[item]['marketCap'] /millions
financials[dates[item]]['Debt to Equity'] = key_Metrics[item]['debtToEquity']
financials[dates[item]]['Debt to Assets'] = key_Metrics[item]['debtToAssets']
financials[dates[item]]['Revenue per Share'] = key_Metrics[item]['revenuePerShare']
financials[dates[item]]['NI per Share'] = key_Metrics[item]['netIncomePerShare']
financials[dates[item]]['Revenue'] = IS[item]['revenue'] / millions
financials[dates[item]]['Gross Profit'] = IS[item]['grossProfit'] / millions
financials[dates[item]]['R&D Expenses'] = IS[item]['researchAndDevelopmentExpenses']/ millions
financials[dates[item]]['Op Expenses'] = IS[item]['operatingExpenses'] / millions
financials[dates[item]]['Op Income'] = IS[item]['operatingIncome'] / millions
financials[dates[item]]['Net Income'] = IS[item]['netIncome'] / millions
financials[dates[item]]['Cash'] = BS[item]['cashAndCashEquivalents'] / millions
financials[dates[item]]['Inventory'] = BS[item]['inventory'] / millions
financials[dates[item]]['Cur Assets'] = BS[item]['totalCurrentAssets'] / millions
financials[dates[item]]['LT Assets'] = BS[item]['totalNonCurrentAssets'] / millions
financials[dates[item]]['Int Assets'] = BS[item]['intangibleAssets'] / millions
financials[dates[item]]['Total Assets'] = BS[item]['totalAssets'] / millions
financials[dates[item]]['Cur Liab'] = BS[item]['totalCurrentLiabilities'] / millions
financials[dates[item]]['LT Debt'] = BS[item]['longTermDebt'] / millions
financials[dates[item]]['LT Liab'] = BS[item]['totalNonCurrentLiabilities'] / millions
financials[dates[item]]['Total Liab'] = BS[item]['totalLiabilities'] / millions
financials[dates[item]]['SH Equity'] = BS[item]['totalStockholdersEquity'] / millions
financials[dates[item]]['CF Operations'] = CF[item]['netCashProvidedByOperatingActivities'] / millions
financials[dates[item]]['CF Investing'] = CF[item]['netCashUsedForInvestingActivites'] / millions
financials[dates[item]]['CF Financing'] = CF[item]['netCashUsedProvidedByFinancingActivities'] / millions
financials[dates[item]]['CAPEX'] = CF[item]['capitalExpenditure'] / millions
financials[dates[item]]['FCF'] = CF[item]['freeCashFlow'] / millions
financials[dates[item]]['Dividends Paid'] = CF[item]['dividendsPaid'] / millions
#Income Statement Ratios
financials[dates[item]]['Gross Profit Margin'] = Ratios[item]['grossProfitMargin']
financials[dates[item]]['Op Margin'] = Ratios[item]['operatingProfitMargin']
financials[dates[item]]['Int Coverage'] = Ratios[item]['interestCoverage']
financials[dates[item]]['Net Profit Margin'] = Ratios[item]['netProfitMargin']
financials[dates[item]]['Dividend Yield'] = Ratios[item]['dividendYield']
#BS Ratios
financials[dates[item]]['Current Ratio'] = Ratios[item]['currentRatio']
financials[dates[item]]['Operating Cycle'] = Ratios[item]['operatingCycle']
financials[dates[item]]['Days of AP Outstanding'] = Ratios[item]['daysOfPayablesOutstanding']
financials[dates[item]]['Cash Conversion Cycle'] = Ratios[item]['cashConversionCycle']
#Return Ratios
financials[dates[item]]['ROA'] = Ratios[item]['returnOnAssets']
financials[dates[item]]['ROE'] = Ratios[item]['returnOnEquity']
financials[dates[item]]['ROCE'] = Ratios[item]['returnOnCapitalEmployed']
financials[dates[item]]['Dividend Yield'] = Ratios[item]['dividendYield']
#Price Ratios
financials[dates[item]]['PE'] = Ratios[item]['priceEarningsRatio']
financials[dates[item]]['PS'] = Ratios[item]['priceToSalesRatio']
financials[dates[item]]['PB'] = Ratios[item]['priceToBookRatio']
financials[dates[item]]['Price To FCF'] = Ratios[item]['priceToFreeCashFlowsRatio']
financials[dates[item]]['PEG'] = Ratios[item]['priceEarningsToGrowthRatio']
financials[dates[item]]['EPS'] = IS[item]['eps']
financials[dates[item]]['EPS'] = IS[item]['eps']
#Transform the dictionary into a Pandas
fundamentals = pd.DataFrame.from_dict(financials,orient='columns')
#Calculate Growth measures
fundamentals['CAGR'] = ((fundamentals[2021]/fundamentals[2017])**(1/5) - 1
fundamentals['2021 growth'] = (fundamentals[2021] - fundamentals[2020] )/ fundamentals[2020]
fundamentals['2020 growth'] = (fundamentals[2020] - fundamentals[2019] )/ fundamentals[2019]
fundamentals['2019 growth'] = (fundamentals[2019] - fundamentals[2018] )/ fundamentals[2018]
fundamentals['2018 growth'] = (fundamentals[2018] - fundamentals[2017] )/ fundamentals[2017]
#Export to Excel
fundamentals.to_excel('fundamentals.xlsx')
print(fundamentals)
Once the script runs, Python should create an Excel file including all company fundamentals.
Sep 11, 2023 1:38 PM - Rajnish Katharotiya
Price to Earnings is one of the key metrics use to value companies using multiples. The P/E ratio and other multiples are relative valuation metrics and they cannot be looked at in isolation. One of the problems with the P/E metric is the fact that if we are in the peak of a business cycle, earni...
Sep 11, 2023 1:49 PM - Rajnish Katharotiya
Price-to-Earnings ratio is a relative valuation tool. It is used by investors to find great companies at low prices. In this post, we will build a Python script to calculate Price Earnings Ratio for comparable companies. Photo by Skitterphoto on Pexels Price Earnings Ratio and Comparable Compa...
Oct 17, 2023 3:09 PM - Davit Kirakosyan
Shares of VMware (NYSE:VMW) witnessed a sharp drop of 12% intra-day today due to rising concerns about China's review of the company's significant sale deal to Broadcom. Consequently, Broadcom's shares also saw a dip of around 4%. Even though there aren’t any apparent problems with the proposed solu...