financial_ratios_analysis
Calculate comprehensive financial ratios for investment analysis, cash flow projections, and automated financial reporting using Excel formulas.
Instructions
Calculate comprehensive financial ratios
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| asOfDate | Yes |
Implementation Reference
- Core handler function implementing the financial ratios analysis logic in FinancialReportGenerator class. Computes liquidity (current ratio), leverage (debt-to-equity, debt-to-assets), and profitability ratios (ROA, ROE) using generated balance sheet and income statement data.def financial_ratios_analysis(self, as_of_date: date) -> Dict: """Calculate comprehensive financial ratios""" balance_sheet = self.generate_balance_sheet(as_of_date) # Extract balance sheet items for calculations assets = balance_sheet['assets'] liabilities = balance_sheet['liabilities'] equity = balance_sheet['equity'] # Get income statement for the year year_start = date(as_of_date.year, 1, 1) income_statement = self.generate_income_statement(year_start, as_of_date) # Liquidity Ratios current_ratio = (assets['current_assets']['total'] / liabilities['current_liabilities']['total']) if liabilities['current_liabilities']['total'] > 0 else float('inf') # Leverage Ratios debt_to_equity = (liabilities['total_liabilities'] / equity['total']) if equity['total'] > 0 else float('inf') debt_to_assets = (liabilities['total_liabilities'] / assets['total_assets']) if assets['total_assets'] > 0 else 0 # Profitability Ratios roa = (income_statement['net_income'] / assets['total_assets']) * 100 if assets['total_assets'] > 0 else 0 roe = (income_statement['net_income'] / equity['total']) * 100 if equity['total'] > 0 else 0 return { 'as_of_date': as_of_date.isoformat(), 'liquidity_ratios': { 'current_ratio': round(current_ratio, 2), 'quick_ratio': 'N/A', # Would need inventory detail 'cash_ratio': 'N/A' # Would need cash detail }, 'leverage_ratios': { 'debt_to_equity': round(debt_to_equity, 2), 'debt_to_assets': round(debt_to_assets, 2), 'equity_multiplier': round(assets['total_assets'] / equity['total'], 2) if equity['total'] > 0 else float('inf') }, 'profitability_ratios': { 'gross_margin_pct': income_statement['gross_margin_pct'], 'operating_margin_pct': income_statement['operating_margin_pct'], 'net_margin_pct': income_statement['net_margin_pct'], 'return_on_assets_pct': round(roa, 2), 'return_on_equity_pct': round(roe, 2) } }
- src/tools/reporting-tools.ts:180-204 (registration)MCP tool registration defining the tool name, description, input schema (asOfDate: date string), and handler that bridges to the Python implementation via pythonBridge.name: "financial_ratios_analysis", description: "Calculate comprehensive financial ratios", inputSchema: { type: "object", properties: { asOfDate: { type: "string", format: "date" } }, required: ["asOfDate"] }, handler: async (args: any): Promise<ToolResult> => { try { const result = await pythonBridge.callPythonFunction({ module: 'financial_reporting', function: 'FinancialReportGenerator.financial_ratios_analysis', args: [args.asOfDate] }); return result; } catch (error) { return { success: false, error: error instanceof Error ? error.message : String(error) }; } } },
- src/tools/reporting-tools.ts:182-188 (schema)Input schema definition for the tool, specifying asOfDate as a required date-formatted string.inputSchema: { type: "object", properties: { asOfDate: { type: "string", format: "date" } }, required: ["asOfDate"] },