walaa2022 commited on
Commit
ea6f9b4
·
verified ·
1 Parent(s): bffbb33

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -13
app.py CHANGED
@@ -132,32 +132,33 @@ class FinancialAnalyzer:
132
  metrics = {}
133
 
134
  # 1. Gross Profit Margin Ratio
 
135
  revenue = self.get_nested_value(income_data, "Revenue", "Total Net Revenue", "2025")
136
- cogs = self.get_nested_value(income_data, "Operating Expenses", "Cost of Goods Sold", "2025")
137
  gross_profit = revenue - cogs
138
  metrics['gross_profit_margin'] = (gross_profit / revenue) * 100 if revenue != 0 else 0
139
 
140
  # 2. Current Ratio
141
- current_assets = self.get_nested_value(balance_data, "Assets", "Total Current Assets", "2025")
142
- current_liabilities = self.get_nested_value(balance_data, "Liabilities", "Total Current Liabilities", "2025")
143
  metrics['current_ratio'] = current_assets / current_liabilities if current_liabilities != 0 else 0
144
 
145
  # 3. Debt Ratio
146
- total_liabilities = self.get_nested_value(balance_data, "Liabilities", "Total Liabilities", "2025")
147
- total_assets = self.get_nested_value(balance_data, "Assets", "Total Assets", "2025")
148
  metrics['debt_ratio'] = (total_liabilities / total_assets) * 100 if total_assets != 0 else 0
149
 
150
  # 4. Sustainable Growth Rate (SGR)
151
- net_income = self.get_nested_value(income_data, "Net Income", "Total Net Income", "2025")
152
- equity = self.get_nested_value(balance_data, "Equity", "Total Shareholders Equity", "2025")
153
- dividends = self.get_nested_value(income_data, "Dividends", "Dividends Paid", "2025")
154
-
155
  roe = (net_income / equity) * 100 if equity != 0 else 0
156
  retention_ratio = (net_income - dividends) / net_income if net_income != 0 else 0
157
  metrics['sgr'] = roe * retention_ratio / 100 if roe != 0 else 0
158
 
159
  # 5. Accounts Receivable Turnover
160
- accounts_receivable = self.get_nested_value(balance_data, "Assets", "Accounts Receivable", "2025")
161
  metrics['ar_turnover'] = revenue / accounts_receivable if accounts_receivable != 0 else 0
162
 
163
  # 6. Return on Equity (ROE)
@@ -167,16 +168,20 @@ class FinancialAnalyzer:
167
  metrics['net_profit_margin'] = (net_income / revenue) * 100 if revenue != 0 else 0
168
 
169
  # 8. Retained Earnings Ratio
170
- retained_earnings = self.get_nested_value(balance_data, "Equity", "Retained Earnings", "2025")
171
  metrics['retained_earnings_ratio'] = (retained_earnings / total_assets) * 100 if total_assets != 0 else 0
172
 
173
- # Additional YoY metrics
174
  revenue_2024 = self.get_nested_value(income_data, "Revenue", "Total Net Revenue", "2024")
175
  metrics['revenue_growth'] = ((revenue / revenue_2024) - 1) * 100 if revenue_2024 != 0 else 0
176
 
 
 
 
 
177
  return metrics
178
  except Exception as e:
179
- print(f"Error calculating metrics: {str(e)}")
180
  return {}
181
 
182
 
 
132
  metrics = {}
133
 
134
  # 1. Gross Profit Margin Ratio
135
+ # 1. Gross Profit Margin
136
  revenue = self.get_nested_value(income_data, "Revenue", "Total Net Revenue", "2025")
137
+ cogs = self.get_nested_value(income_data, "Cost and Gross Profit", "Cost of Goods Sold", "2025")
138
  gross_profit = revenue - cogs
139
  metrics['gross_profit_margin'] = (gross_profit / revenue) * 100 if revenue != 0 else 0
140
 
141
  # 2. Current Ratio
142
+ current_assets = self.get_nested_value(balance_data, "Key Totals", "Total_Current_Assets", "2025")
143
+ current_liabilities = self.get_nested_value(balance_data, "Key Totals", "Total_Current_Liabilities", "2025")
144
  metrics['current_ratio'] = current_assets / current_liabilities if current_liabilities != 0 else 0
145
 
146
  # 3. Debt Ratio
147
+ total_liabilities = self.get_nested_value(balance_data, "Key Totals", "Total_Liabilities", "2025")
148
+ total_assets = self.get_nested_value(balance_data, "Key Totals", "Total_Assets", "2025")
149
  metrics['debt_ratio'] = (total_liabilities / total_assets) * 100 if total_assets != 0 else 0
150
 
151
  # 4. Sustainable Growth Rate (SGR)
152
+ net_income = self.get_nested_value(income_data, "Profit Summary", "Net Earnings", "2025")
153
+ equity = self.get_nested_value(balance_data, "Key Totals", "Total_Shareholders_Equity", "2025")
154
+ dividends = self.get_nested_value(income_data, "Profit Summary", "Dividends Paid", "2025")
155
+
156
  roe = (net_income / equity) * 100 if equity != 0 else 0
157
  retention_ratio = (net_income - dividends) / net_income if net_income != 0 else 0
158
  metrics['sgr'] = roe * retention_ratio / 100 if roe != 0 else 0
159
 
160
  # 5. Accounts Receivable Turnover
161
+ accounts_receivable = self.get_nested_value(balance_data, "Balance Sheet Data 2021-2025", "Accounts_Receivable", "2025")
162
  metrics['ar_turnover'] = revenue / accounts_receivable if accounts_receivable != 0 else 0
163
 
164
  # 6. Return on Equity (ROE)
 
168
  metrics['net_profit_margin'] = (net_income / revenue) * 100 if revenue != 0 else 0
169
 
170
  # 8. Retained Earnings Ratio
171
+ retained_earnings = self.get_nested_value(balance_data, "Balance Sheet Data 2021-2025", "Retained_Earnings", "2025")
172
  metrics['retained_earnings_ratio'] = (retained_earnings / total_assets) * 100 if total_assets != 0 else 0
173
 
174
+ # 9. Revenue Growth (YoY)
175
  revenue_2024 = self.get_nested_value(income_data, "Revenue", "Total Net Revenue", "2024")
176
  metrics['revenue_growth'] = ((revenue / revenue_2024) - 1) * 100 if revenue_2024 != 0 else 0
177
 
178
+ # 10. Revenue CAGR (2021-2025)
179
+ revenue_2021 = self.get_nested_value(income_data, "Revenue", "Total Net Revenue", "2021")
180
+ metrics['revenue_cagr'] = ((revenue / revenue_2021) ** (1 / 4) - 1) * 100 if revenue_2021 != 0 else 0
181
+
182
  return metrics
183
  except Exception as e:
184
+ print(f"Error calculating metrics: {e}")
185
  return {}
186
 
187