Finance
Accountant Module
Accounting Controller Module
Analyst Financial Reporting & Ref Module
Asset-Liability Management Module
Consolidation Module
CSRD Consultant Module
Environmental, Social & Governance Module
- Corporate Strategy Integration AgentLive
- ESG Business Processes AgentLive
- ESG Management TeamLive
- Identifying Regulatory Requirements AgentLive
- Regulatory Reporting AgentLive
- Sectoral Decarbonization Pathways AgentLive
- Strategic Decision-Making AgentLive
- Taxonomy Business Processes AgentLive
- Taxonomy Compliance AgentLive
- Taxonomy Regulatory Requirements AgentLive
Financial Reporting Module
Forward Looking Financial Actuarial Module
IFRS17 & Solvency2 Module
Inventory Actuary Module
ISR Consultant Module
Life & Health Module
Product Design Aging Module
Product Design Life Insurance Module
Structural Risk Analyst Module
Tax Specialist Module
Need a custom agent?
Build tailored AI solutions
Work with our team to develop custom AI agents for your business.
Contact usLiquidity Interest Rate Risk Assessor
The Liquidity & Interest Rate Risk Assessor is responsible for evaluating the institution's liquidity position and interest rate risk exposure. It monitors short-term and long-term liquidity, identifies gaps in cash flow maturities, and measures sensitivity of the balance sheet to interest rate shocks. The agent produces actionable insights and metrics such as LCR, NSFR, liquidity gaps, EVE, and NII changes under different scenarios.
Instructions
Step 1: Liquidity Gap Analysis
- Input: Balance sheet data with Assets and Liabilities, including amount and maturity.
- Tool: calculate_liquidity_gaps
- Action: Compute liquidity gaps across defined time buckets to identify potential shortfalls.
Step 2: Interest Rate Risk - EVE Sensitivity
- Input: Asset and liability cash flow data including Amount, Rate, and Maturity.
- Tool: calculate_eve_sensitivity
- Action: Apply interest rate shock scenarios to compute the change in Economic Value of Equity (EVE).
Step 3: Interest Rate Risk - NII Sensitivity
- Input: Asset and liability cash flow data including Amount and Rate.
- Tool: calculate_nii_sensitivity
- Action: Apply interest rate shock scenarios to calculate projected changes in Net Interest Income (NII) over the next period.
Step 4: Reporting & Recommendations
- Input: Results from liquidity gaps, EVE, and NII calculations.
- Action: Summarize findings, highlight vulnerabilities, and provide recommendations for liquidity management and interest rate risk mitigation.Knowledge Base (.md)
Business reference guide
Drag & Drop or Click
.md, .txt, .pdf
Data Files
Upload data for analysis (CSV, JSON, Excel, PDF)
Drag & Drop or Click
Multiple files: .json, .csv, .xlsx, .xls, .pdf, .docx, .pptx, .txt
Tools 4
calculate_nii_sensitivity
Calculates the change in Net Interest Income (NII) for the next year.
Parameters:
- asset_cf: JSON string — list of objects with keys Amount (float), Rate (float).
Example: '[{"Amount":500000,"Rate":0.03}]'
- liability_cf: JSON string — same format as asset_cf.
- delta_rate: Shock in decimal (e.g. 0.01 for +100bps).
Returns:
- JSON string with NII change value.
calculate_nii_sensitivity
Calculates the change in Net Interest Income (NII) for the next year. Parameters: - asset_cf: JSON string — list of objects with keys Amount (float), Rate (float). Example: '[{"Amount":500000,"Rate":0.03}]' - liability_cf: JSON string — same format as asset_cf. - delta_rate: Shock in decimal (e.g. 0.01 for +100bps). Returns: - JSON string with NII change value.
def calculate_nii_sensitivity(asset_cf: str, liability_cf: str, delta_rate: float) -> str: """ Calculates the change in Net Interest Income(NII) for the next year. Parameters: - asset_cf: JSON string — list of objects with keys Amount(float), Rate(float). Example: '[{"Amount":500000,"Rate":0.03}]' - liability_cf: JSON string — same format as asset_cf. - delta_rate: Shock in decimal(e.g. 0.01 for +100bps). Returns: - JSON string with NII change value. """ try: a_data = json.loads(asset_cf) if isinstance(asset_cf, str) else asset_cf l_data = json.loads(liability_cf) if isinstance(liability_cf, str) else liability_cf a_df = pd.DataFrame(a_data) l_df = pd.DataFrame(l_data) asset_impact = float((a_df['Amount'] * (a_df['Rate'] + delta_rate)).sum()) liability_impact = float((l_df['Amount'] * (l_df['Rate'] + delta_rate)).sum()) nii_change = asset_impact - liability_impact return json.dumps({'nii_change': round(nii_change, 2), 'delta_rate': delta_rate}) except Exception as e: return json.dumps({'error': str(e)})
calculate_eve_sensitivity
Calculates the change in Economic Value of Equity (EVE) due to interest rate shock.
Parameters:
- asset_cf: JSON string — list of objects with keys Maturity (int, days), Amount (float), Rate (float).
Example: '[{"Maturity":30,"Amount":500000,"Rate":0.03}]'
- liability_cf: JSON string — same format as asset_cf.
- delta_rate: Shock in decimal (e.g. 0.01 for +100bps).
Returns:
- JSON string with EVE change value.
calculate_eve_sensitivity
Calculates the change in Economic Value of Equity (EVE) due to interest rate shock. Parameters: - asset_cf: JSON string — list of objects with keys Maturity (int, days), Amount (float), Rate (float). Example: '[{"Maturity":30,"Amount":500000,"Rate":0.03}]' - liability_cf: JSON string — same format as asset_cf. - delta_rate: Shock in decimal (e.g. 0.01 for +100bps). Returns: - JSON string with EVE change value.
def calculate_eve_sensitivity(asset_cf: str, liability_cf: str, delta_rate: float) -> str: """ Calculates the change in Economic Value of Equity(EVE) due to interest rate shock. Parameters: - asset_cf: JSON string — list of objects with keys Maturity(int, days), Amount(float), Rate(float). Example: '[{"Maturity":30,"Amount":500000,"Rate":0.03}]' - liability_cf: JSON string — same format as asset_cf. - delta_rate: Shock in decimal(e.g. 0.01 for +100bps). Returns: - JSON string with EVE change value. """ try: a_data = json.loads(asset_cf) if isinstance(asset_cf, str) else asset_cf l_data = json.loads(liability_cf) if isinstance(liability_cf, str) else liability_cf a_df = pd.DataFrame(a_data) l_df = pd.DataFrame(l_data) asset_change = float((a_df['Amount'] * delta_rate * a_df['Maturity'] / 365).sum()) liability_change = float((l_df['Amount'] * delta_rate * l_df['Maturity'] / 365).sum()) eve_change = asset_change - liability_change return json.dumps({'eve_change': round(eve_change, 2), 'delta_rate': delta_rate}) except Exception as e: return json.dumps({'error': str(e)})
calculate_liquidity_gaps
Calculates cumulative liquidity gaps across different time buckets.
Args:
balance_sheet: JSON string — list of objects with keys Category ('Assets' or 'Liabilities'), Amount (float), Maturity (int, days).
Example: '[{"Category":"Assets","Amount":500,"Maturity":150}, {"Category":"Liabilities","Amount":2500,"Maturity":7}]'
time_buckets: List of day boundaries defining the buckets, e.g. [0, 30, 180, 365].
Returns:
JSON string with liquidity gap per bucket.
calculate_liquidity_gaps
Calculates cumulative liquidity gaps across different time buckets. Args: balance_sheet: JSON string — list of objects with keys Category ('Assets' or 'Liabilities'), Amount (float), Maturity (int, days). Example: '[{"Category":"Assets","Amount":500,"Maturity":150}, {"Category":"Liabilities","Amount":2500,"Maturity":7}]' time_buckets: List of day boundaries defining the buckets, e.g. [0, 30, 180, 365]. Returns: JSON string with liquidity gap per bucket.
def calculate_liquidity_gaps(balance_sheet: str, time_buckets: List[int]) -> str: """ Calculates cumulative liquidity gaps across different time buckets. Args: balance_sheet: JSON string — list of objects with keys Category('Assets' or 'Liabilities'), Amount(float), Maturity(int, days). Example: '[{"Category":"Assets","Amount":500,"Maturity":150}, {"Category":"Liabilities","Amount":2500,"Maturity":7}]' time_buckets: List of day boundaries defining the buckets, e.g. [0, 30, 180, 365]. Returns: JSON string with liquidity gap per bucket. """ try: data = json.loads(balance_sheet) if isinstance(balance_sheet, str) else balance_sheet df = pd.DataFrame(data) gaps = [] for i in range(len(time_buckets) - 1): start, end = time_buckets[i], time_buckets[i + 1] inflows = df[(df['Category'] == 'Assets') & (df['Maturity'] >= start) & (df['Maturity'] < end)]['Amount'].sum() outflows = df[(df['Category'] == 'Liabilities') & (df['Maturity'] >= start) & (df['Maturity'] < end)]['Amount'].sum() gap = inflows - outflows gaps.append({'Bucket': f'{start}-{end} days', 'Inflows': round(float(inflows), 2), 'Outflows': round(float(outflows), 2), 'LiquidityGap': round(float(gap), 2)}) return json.dumps(gaps, indent=2) except Exception as e: return json.dumps({'error': str(e)})
file_tools
FileTools from agno framework
file_tools
FileTools from agno framework
Test Agent
Configure model settings at the top, then test the agent below
Enter your question or instruction for the agent