Skip to content

Commit

Permalink
[ADD] acf/pacf analysis of EBITDA
Browse files Browse the repository at this point in the history
  • Loading branch information
hollydinkel committed Aug 19, 2024
1 parent 58ae448 commit 6d57b8c
Show file tree
Hide file tree
Showing 11 changed files with 19 additions and 3 deletions.
Binary file modified images/acf_analysis/Assets_acf.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified images/acf_analysis/Assets_pacf.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/acf_analysis/EBITDA_acf.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/acf_analysis/EBITDA_pacf.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified images/acf_analysis/Equity_acf.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified images/acf_analysis/Equity_pacf.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified images/acf_analysis/Liabilities_acf.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified images/acf_analysis/Liabilities_pacf.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/acf_analysis/Revenue_acf.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
22 changes: 19 additions & 3 deletions src/process.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ def transformFinancialMetrics(company, filteredData):
else:
revenue = filteredData["Revenue"]
data["Revenue"] = pd.Series(revenue).reset_index(drop=True)
data["EBITDA"] = pd.Series(filteredData["EBITDA"]).reset_index(drop=True)
data["financialLeverage"] = (data["totalAssets"]/data["totalEquity"]).reset_index(drop=True)
data["assetTurnover"] = (data["Revenue"]/data["totalAssets"]).reset_index(drop=True)
data["netProfitMargin"] = (filteredData["Net Loss"].reset_index(drop=True)/data["Revenue"])
Expand All @@ -49,40 +50,47 @@ def transformFinancialMetrics(company, filteredData):
# Merge filteredData with exchangeRateData_data based on dates
merged_data = pd.merge(filteredData, yenExchangeRateData, left_on='Quarter', right_on='Date', how='left')
merged_data['Revenue_USD'] = merged_data['Revenue'] / merged_data['Value']
merged_data['EBITDA_USD'] = merged_data['EBITDA'] / merged_data['Value']
merged_data['Total_Assets_USD'] = merged_data['Total Assets'] / merged_data['Value']
merged_data['Total_Liabilities_USD'] = merged_data['Total Liabilities'] / merged_data['Value']
merged_data['Total_Equity_USD'] = merged_data['Total Equity'] / merged_data['Value']
# Handle missing values
data["Revenue_USD"] = merged_data['Revenue_USD'].fillna(method='ffill').astype(int).reset_index(drop=True)
data["EBITDA_USD"] = merged_data['EBITDA_USD'].fillna(method='ffill').astype(int).reset_index(drop=True)
data["Total_Assets_USD"] = merged_data['Total_Assets_USD'].fillna(method='ffill').astype(int).reset_index(drop=True)
data["Total_Liabilities_USD"] = merged_data['Total_Liabilities_USD'].fillna(method='ffill').astype(int).reset_index(drop=True)
data["Total_Equity_USD"] = merged_data['Total_Equity_USD'].fillna(method='ffill').astype(int).reset_index(drop=True)
elif company == "GomSpace":
# Merge filteredData with exchangeRateData_data based on dates
merged_data = pd.merge(filteredData, sekExchangeRateData, left_on='Quarter', right_on='Date', how='left')
merged_data['Revenue_USD'] = merged_data['Revenue'] / merged_data['Value']
merged_data['EBITDA_USD'] = merged_data['EBITDA'] / merged_data['Value']
merged_data['Total_Assets_USD'] = merged_data['Total Assets'] / merged_data['Value']
merged_data['Total_Liabilities_USD'] = merged_data['Total Liabilities'] / merged_data['Value']
merged_data['Total_Equity_USD'] = merged_data['Total Equity'] / merged_data['Value']
# Handle missing values
data["Revenue_USD"] = merged_data['Revenue_USD'].fillna(method='ffill').astype(int).reset_index(drop=True)
data["EBITDA_USD"] = merged_data['EBITDA_USD'].fillna(method='ffill').astype(int).reset_index(drop=True)
data["Total_Assets_USD"] = merged_data['Total_Assets_USD'].fillna(method='ffill').astype(int).reset_index(drop=True)
data["Total_Liabilities_USD"] = merged_data['Total_Liabilities_USD'].fillna(method='ffill').astype(int).reset_index(drop=True)
data["Total_Equity_USD"] = merged_data['Total_Equity_USD'].fillna(method='ffill').astype(int).reset_index(drop=True)
elif company == "Kleos Space":
# Merge filteredData with exchangeRateData_data based on dates
merged_data = pd.merge(filteredData, eurExchangeRateData, left_on='Quarter', right_on='Date', how='left')
merged_data['Revenue_USD'] = merged_data['Revenue'] / merged_data['Value']
merged_data['EBITDA_USD'] = merged_data['EBITDA'] / merged_data['Value']
merged_data['Total_Assets_USD'] = merged_data['Total Assets'] / merged_data['Value']
merged_data['Total_Liabilities_USD'] = merged_data['Total Liabilities'] / merged_data['Value']
merged_data['Total_Equity_USD'] = merged_data['Total Equity'] / merged_data['Value']
# Handle missing values
data["Revenue_USD"] = merged_data['Revenue_USD'].fillna(method='ffill').astype(int).reset_index(drop=True)
data["EBITDA_USD"] = merged_data['EBITDA_USD'].fillna(method='ffill').astype(int).reset_index(drop=True)
data["Total_Assets_USD"] = merged_data['Total_Assets_USD'].fillna(method='ffill').astype(int).reset_index(drop=True)
data["Total_Liabilities_USD"] = merged_data['Total_Liabilities_USD'].fillna(method='ffill').astype(int).reset_index(drop=True)
data["Total_Equity_USD"] = merged_data['Total_Equity_USD'].fillna(method='ffill').astype(int).reset_index(drop=True)
elif company == "Planet Labs" or "Satellogic":
data["Revenue_USD"] = filteredData['Revenue'].reset_index(drop=True)
data["EBITDA_USD"] = filteredData['EBITDA'].fillna(method='ffill').astype(int).reset_index(drop=True)
data["Total_Assets_USD"] = filteredData['Total Assets'].reset_index(drop=True)
data["Total_Liabilities_USD"] = filteredData['Total Liabilities'].reset_index(drop=True)
data["Total_Equity_USD"] = filteredData['Total Equity'].reset_index(drop=True)
Expand Down Expand Up @@ -129,7 +137,11 @@ def generate_next_quarters(start_date, n):
fig25.suptitle("ACF: Revenue", fontsize=20)
fig26, ax26 = plt.subplots(2, 3, figsize=(12, 10), dpi=300)
fig26.suptitle("PACF: Revenue", fontsize=20)
acf_list = [fig1, fig2, fig21, fig22, fig23, fig24, fig25, fig26]
fig27, ax27 = plt.subplots(2, 3, figsize=(12, 10), dpi=300)
fig27.suptitle("ACF: EBITDA", fontsize=20)
fig28, ax28 = plt.subplots(2, 3, figsize=(12, 10), dpi=300)
fig28.suptitle("PACF: EBITDA", fontsize=20)
acf_list = [fig1, fig2, fig21, fig22, fig23, fig24, fig25, fig26, fig27, fig28]

# KPI Plots
fig3, ax3 = plt.subplots(figsize=(10, 7), dpi=300)
Expand Down Expand Up @@ -205,6 +217,8 @@ def generate_next_quarters(start_date, n):
fig17 = plotKPIs(fig17, ax17, transformedData, "Revenue_USD", companyMetadata, company, 'Revenue ($USD)')
plot_acf(transformedData["Revenue_USD"], lags=3, title=company, ax = ax25[i//3, i%3], color = 'red')
plot_pacf(transformedData["Revenue_USD"], lags=2, title=company, ax = ax26[i//3, i%3], color = 'red')
plot_acf(transformedData["EBITDA_USD"], lags=3, title=company, ax = ax27[i//3, i%3], color = 'red')
plot_pacf(transformedData["EBITDA_USD"], lags=2, title=company, ax = ax28[i//3, i%3], color = 'red')
plotPredictions(fig18, ax18[i//3, i%3], company, companyMetadata, filteredData["Quarter"], inSamplePredictions, outSamplePredictions, transformedData["Revenue_USD"], split, plotEverything=True)
else:
plotPredictions(fig18, ax18[i//3, i%3], company, companyMetadata, plotEverything=True)
Expand All @@ -231,8 +245,10 @@ def generate_next_quarters(start_date, n):
fig22.savefig(f"./images/acf_analysis/Liabilities_pacf.png", bbox_inches='tight')
fig23.savefig(f"./images/acf_analysis/Equity_acf.png", bbox_inches='tight')
fig24.savefig(f"./images/acf_analysis/Equity_pacf.png", bbox_inches='tight')
fig25.savefig(f"./images/acf_analysis/Revenue.png", bbox_inches='tight')
fig26.savefig(f"./images/acf_analysis/Revenue.png", bbox_inches='tight')
fig25.savefig(f"./images/acf_analysis/Revenue_acf.png", bbox_inches='tight')
fig26.savefig(f"./images/acf_analysis/Revenue_pacf.png", bbox_inches='tight')
fig27.savefig(f"./images/acf_analysis/EBITDA_acf.png", bbox_inches='tight')
fig28.savefig(f"./images/acf_analysis/EBITDA_pacf.png", bbox_inches='tight')
fig3.savefig(f"./images/total_asset_growth_rate.png", bbox_inches='tight')
fig4.savefig(f"./images/total_liabilities_growth_rate.png", bbox_inches='tight')
fig5.savefig(f"./images/total_equity_growth_rate.png", bbox_inches='tight')
Expand Down

0 comments on commit 6d57b8c

Please sign in to comment.