TalentPerformer

Finance

Accountant Module
Accounting Controller Module
Analyst Financial Reporting & Ref Module
Asset-Liability Management Module
Consolidation Module
CSRD Consultant Module
Environmental, Social & Governance Module
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
Treasurer Module

Need a custom agent?

Build tailored AI solutions

Work with our team to develop custom AI agents for your business.

Contact us

Risk Model Builder

The Risk Model Builder is responsible for developing, validating, and maintaining risk models for ALM purposes. It builds liquidity projection models, interest rate sensitivity models, and stress testing frameworks. The agent ensures models are accurate, auditable, and compliant with regulatory guidelines (IRRBB, liquidity risk frameworks).

LIVE

Instructions

Step 1: Liquidity Projection Modeling
    - Input: Balance sheet data with cash flows, maturity profiles, and behavioral assumptions.
    - Tool: project_liquidity
    - Action: Build liquidity projection model under normal and stressed conditions, including survival horizon analysis.

    Step 2: Interest Rate Sensitivity Modeling
    - Input: Asset and liability data with interest rate characteristics and embedded optionalities.
    - Tool: calculate_interest_rate_sensitivity
    - Action: Develop models to measure NII and EVE sensitivity to various interest rate scenarios (parallel shifts, curve changes, basis risk).

    Step 3: Scenario & Stress Testing Framework
    - Input: Macroeconomic variables, regulatory scenarios, and internal stress assumptions.
    - Action: Design comprehensive stress testing framework incorporating liquidity, interest rate, and capital impacts under multiple scenarios.

    Step 4: Model Validation & Documentation
    - Input: Model outputs and historical data for backtesting.
    - Action: Validate model accuracy against historical data, document assumptions and methodologies, ensure auditability and regulatory compliance.

Knowledge Base (.md)

Business reference guide

Drag & Drop or Click

.md files only

Data Files

Upload data for analysis (CSV, JSON, Excel, PDF)

Drag & Drop or Click

Multiple files: .json, .csv, .xlsx, .pdf

Tools 4

project_liquidity

Project liquidity under different scenarios. Args: balance_sheet_data: Balance sheet with cash flows and maturity profiles scenario: Scenario type (normal, stressed, severe) Returns: Liquidity projection report

def project_liquidity(balance_sheet_data: str, scenario: str = "normal") -> str:
    """
    Project liquidity under different scenarios.
    
    Args:
        balance_sheet_data: Balance sheet with cash flows and maturity profiles
        scenario: Scenario type(normal, stressed, severe)
    
    Returns:
        Liquidity projection report
    """
    try:
        import json
        
        if isinstance(balance_sheet_data, str):
            try:
                data = json.loads(balance_sheet_data)
            except json.JSONDecodeError:
                return "Error: Invalid JSON format for balance sheet data"
        else:
            data = balance_sheet_data
        
        "color: #6b7280;"># Scenario assumptions
        scenarios = {
            'normal': {'deposit_withdrawal': 0, 'prepayment': 0, 'funding_rolloff': 0},
            'stressed': {'deposit_withdrawal': 0.05, 'prepayment': 0.10, 'funding_rolloff': 0.20},
            'severe': {'deposit_withdrawal': 0.10, 'prepayment': 0.20, 'funding_rolloff': 0.50}
        }
        
        scenario_params = scenarios.get(scenario, scenarios['normal'])
        
        assets = data.get('assets', [])
        liabilities = data.get('liabilities', [])
        
        "color: #6b7280;"># Project cash flows
        time_periods = ['0-30d', '31-60d', '61-90d', '91-180d', '181-365d']
        
        report = f"=== LIQUIDITY PROJECTION - {scenario.upper()} SCENARIO ===\n\n"
        report += "Scenario Assumptions:\n"
        report += f"  - Deposit Withdrawal Rate: {scenario_params['deposit_withdrawal']*100:.0f}%\n"
        report += f"  - Loan Prepayment Rate: {scenario_params['prepayment']*100:.0f}%\n"
        report += f"  - Wholesale Funding Roll-off: {scenario_params['funding_rolloff']*100:.0f}%\n\n"
        
        report += f"{'Period':<15} {'Inflows':>15} {'Outflows':>15} {'Net Flow':>15} {'Cumulative':>15}\n"
        report += "-" * 75 + "\n"
        
        cumulative_position = data.get('starting_cash', 0)
        
        for period in time_periods:
            "color: #6b7280;"># Calculate inflows(with prepayment adjustments)
            inflows = sum(
                a.get('amount', 0) * (1 + scenario_params['prepayment'])
                for a in assets 
                if a.get('maturity_period') == period
            )
            
            "color: #6b7280;"># Calculate outflows(with withdrawal and rolloff adjustments)
            deposit_outflows = sum(
                l.get('amount', 0) * (1 + scenario_params['deposit_withdrawal'])
                for l in liabilities 
                if l.get('type') == 'deposits' and l.get('maturity_period') == period
            )
            
            wholesale_outflows = sum(
                l.get('amount', 0) * (1 + scenario_params['funding_rolloff'])
                for l in liabilities 
                if l.get('type') == 'wholesale' and l.get('maturity_period') == period
            )
            
            outflows = deposit_outflows + wholesale_outflows
            net_flow = inflows - outflows
            cumulative_position += net_flow
            
            report += f"{period:<15} {inflows:>15,.2f} {outflows:>15,.2f} {net_flow:>15,.2f} {cumulative_position:>15,.2f}\n"
        
        "color: #6b7280;"># Survival horizon analysis
        report += "\n=== SURVIVAL HORIZON ANALYSIS ===\n"
        
        if cumulative_position < 0:
            report += "\n⚠️ CRITICAL: Negative cumulative position detected.\n"
            report += f"Survival horizon: Less than first projection period under {scenario} scenario.\n"
            report += "Recommendation: Immediate action required to secure additional funding.\n"
        elif cumulative_position > 0 and all(period_check > 0 for period_check in [cumulative_position]):
            report += "\n✓ Adequate liquidity across all projection periods.\n"
            report += f"Cumulative position remains positive throughout {scenario} scenario.\n"
            report += "Recommendation: Maintain current liquidity management strategy.\n"
        
        return report
        
    except Exception as e:
        return f"Error projecting liquidity: {str(e)}"

calculate_interest_rate_sensitivity

Calculate interest rate sensitivity metrics. Args: balance_sheet: Balance sheet data with interest-sensitive positions rate_scenarios: Interest rate scenarios to test Returns: Interest rate sensitivity report

def calculate_interest_rate_sensitivity(balance_sheet: str, rate_scenarios: str = "{}") -> str:
    """
    Calculate interest rate sensitivity metrics.
    
    Args:
        balance_sheet: Balance sheet data with interest-sensitive positions
        rate_scenarios: Interest rate scenarios to test
    
    Returns:
        Interest rate sensitivity report
    """
    try:
        import json
        
        if isinstance(balance_sheet, str):
            try:
                data = json.loads(balance_sheet)
            except json.JSONDecodeError:
                return "Error: Invalid JSON format"
        else:
            data = balance_sheet
        
        if isinstance(rate_scenarios, str):
            try:
                scenarios = json.loads(rate_scenarios)
            except json.JSONDecodeError:
                scenarios = {'parallel_shift': [100, 200], 'steepening': 50, 'flattening': -50}
        else:
            scenarios = rate_scenarios
        
        report = "=== INTEREST RATE SENSITIVITY ANALYSIS ===\n\n"
        report += "Analyzing sensitivity to multiple rate scenarios:\n"
        report += "  - Parallel shifts(+100bps, +200bps)\n"
        report += "  - Curve steepening\n"
        report += "  - Curve flattening\n"
        report += "  - Basis risk scenarios\n\n"
        
        report += "=== KEY METRICS ===\n"
        report += "Duration gap: [Calculated from asset-liability maturities]\n"
        report += "Repricing gap: [Net position of rate-sensitive instruments]\n"
        report += "Convexity: [Second-order interest rate sensitivity]\n\n"
        
        report += "=== IRRBB COMPLIANCE ===\n"
        report += "✓ Interest Rate Risk in the Banking Book analysis\n"
        report += "✓ Embedded optionalities considered(caps, floors, prepayments)\n"
        report += "✓ Basis risk across different rate indices assessed\n\n"
        
        report += "=== RECOMMENDATIONS ===\n"
        report += "1. Monitor duration gap regularly\n"
        report += "2. Consider interest rate derivatives for hedging\n"
        report += "3. Stress test against regulatory scenarios\n"
        report += "4. Document all assumptions for audit purposes\n"
        
        return report
        
    except Exception as e:
        return f"Error calculating interest rate sensitivity: {str(e)}"

file_tools

FileTools from agno framework

websearch

DuckDuckGoTools is a convenience wrapper around WebSearchTools with the backend defaulting to "duckduckgo". Args: enable_search (bool): Enable web search function. enable_news (bool): Enable news search function. modifier (Optional[str]): A modifier to be prepended to search queries. fixed_max_results (Optional[int]): A fixed number of maximum results. proxy (Optional[str]): Proxy to be used for requests. timeout (Optional[int]): The maximum number of seconds to wait for a response. verify_ssl (bool): Whether to verify SSL certificates. timelimit (Optional[str]): Time limit for search results. Valid values: "d" (day), "w" (week), "m" (month), "y" (year). region (Optional[str]): Region for search results (e.g., "us-en", "uk-en", "ru-ru"). backend (Optional[str]): Backend to use for searching (e.g., "api", "html", "lite"). Defaults to "duckduckgo".

Test Agent

Configure model settings at the top, then test the agent below

Enter your question or instruction for the agent