TalentPerformer

Operational Declassification of ORSA Agent

No description available

LIVE

Instructions

You are an Operational Declassification of ORSA specialist focusing on:

1. **ORSA Governance**:
   - Define roles and responsibilities across Risk, Actuarial, Finance, and ALM
   - Ensure Board involvement in approving scenarios, assumptions, and conclusions
   - Establish ORSA policy and governance framework

2. **Integration in Risk Management Framework**:
   - Align ORSA with day-to-day risk monitoring
   - Ensure risk appetite and tolerances are embedded into business decisions
   - Develop risk limits and early warning indicators

3. **Operationalization of ORSA**:
   - Translate ORSA results into concrete risk limits and controls
   - Define capital buffers, liquidity thresholds, underwriting restrictions
   - Implement risk-adjusted performance measurement

4. **Declassification into Business Units**:
   - Translate group-level ORSA into actionable requirements for subsidiaries
   - Cascade solvency limits and risk tolerances to local entities
   - Ensure consistent risk management across the organization

Use governance frameworks, risk management principles, and operational best practices to ensure effective ORSA implementation and integration across the organization.

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 6

orsa_report_generator

Model for storing functions that can be called by an agent.

@tool(
    name="orsa_report_generator",
    description="Generate comprehensive ORSA report with methodology and results",
    show_result=True,
)
def orsa_report_generator(
    entity_name: str,
    reporting_date: str,
    solvency_metrics: Dict[str, Any],
    scenario_analysis: Dict[str, Any],
    stress_test_results: Dict[str, Any],
    risk_management_framework: Dict[str, Any],
) -> Dict[str, Any]:
    """
    Generate comprehensive ORSA report.

    Args:
        entity_name: Name of the insurance entity
        reporting_date: Reporting date
        solvency_metrics: Current solvency metrics
        scenario_analysis: Scenario analysis results
        stress_test_results: Stress testing results
        risk_management_framework: Risk management framework details

    Returns:
        Dictionary containing ORSA report sections
    """
    report = {
        "orsa_report": {
            "entity_name": entity_name,
            "reporting_date": reporting_date,
            "report_type": "Own Risk and Solvency Assessment(ORSA)",
            "sections": {
                "executive_summary": {
                    "key_findings": [
                        f"Current solvency ratio: {solvency_metrics.get('solvency_ratio', 0)}%",
                        f"Capital adequacy level: {solvency_metrics.get('adequacy_level', 'Unknown')}",
                        f"Risk concentration: {max(solvency_metrics.get('risk_concentration', {}).values(), default=0):.1f}% in largest risk module",
                    ],
                    "recommendations": [
                        "Maintain current risk management framework",
                        "Monitor key risk indicators regularly",
                        "Review capital allocation strategy annually",
                    ],
                },
                "methodology": {
                    "approach": "Standard Formula with internal model elements",
                    "assumptions": "Based on current business plan and market conditions",
                    "validation": "Independent model validation completed",
                    "governance": "Board-approved ORSA policy and process",
                },
                "risk_assessment": {
                    "current_risk_profile": solvency_metrics,
                    "risk_concentration": solvency_metrics.get("risk_concentration", {}),
                    "risk_limits": risk_management_framework.get("risk_limits", {}),
                    "risk_monitoring": "Daily market risk, weekly credit risk, monthly comprehensive",
                },
                "capital_adequacy": {
                    "current_position": solvency_metrics,
                    "projections": scenario_analysis,
                    "stress_testing": stress_test_results,
                    "capital_management": "Risk-based dividend policy with stress testing",
                },
                "forward_looking_assessment": {
                    "scenario_analysis": scenario_analysis,
                    "business_plan_impact": "Growth strategies tested against solvency constraints",
                    "regulatory_developments": "Monitoring IFRS 17 and Solvency II developments",
                    "esg_integration": "Climate risk scenarios included in stress testing",
                },
            },
        }
    }
    return report

calculate_solvency_ratio

Model for storing functions that can be called by an agent.

@tool(
    name="calculate_solvency_ratio",
    description="Calculate Solvency II ratio and capital adequacy metrics",
    show_result=True,
)
def calculate_solvency_ratio(
    own_funds: float,
    scr_amount: float,
    mcr_amount: float,
    risk_modules: Dict[str, float],
) -> Dict[str, Any]:
    """
    Calculate Solvency II ratio and capital adequacy metrics.

    Args:
        own_funds: Available own funds
        scr_amount: Solvency Capital Requirement
        mcr_amount: Minimum Capital Requirement
        risk_modules: Dictionary of risk module amounts

    Returns:
        Dictionary containing solvency metrics and analysis
    """
    solvency_ratio = (own_funds / scr_amount) * 100 if scr_amount > 0 else 0
    mcr_ratio = (own_funds / mcr_amount) * 100 if mcr_amount > 0 else 0
    total_risk = sum(risk_modules.values())
    risk_concentration = {
        k: (v / total_risk * 100) if total_risk > 0 else 0
        for k, v in risk_modules.items()
    }
    adequacy_level = (
        "Excellent"
        if solvency_ratio >= 150
        else(
            "Good"
            if solvency_ratio >= 130
            else "Adequate" if solvency_ratio >= 100 else "Inadequate"
        )
    )
    return {
        "solvency_ratio": round(solvency_ratio, 2),
        "mcr_ratio": round(mcr_ratio, 2),
        "adequacy_level": adequacy_level,
        "risk_concentration": risk_concentration,
        "capital_buffer": own_funds - scr_amount,
        "regulatory_margin": own_funds - mcr_amount,
    }

stress_test_scenarios

Model for storing functions that can be called by an agent.

@tool(
    name="stress_test_scenarios",
    description="Perform stress testing under various risk scenarios",
    show_result=True,
)
def stress_test_scenarios(
    base_solvency_ratio: float,
    base_scr: float,
    base_own_funds: float,
    stress_scenarios: List[str],
) -> Dict[str, Any]:
    """
    Perform stress testing under various risk scenarios.

    Args:
        base_solvency_ratio: Base solvency ratio
        base_scr: Base SCR amount
        base_own_funds: Base own funds
        stress_scenarios: List of stress scenarios to test

    Returns:
        Dictionary containing stress test results
    """
    scenario_definitions = {
        "interest_rate_shock": {"description": "Parallel shift in interest rates", "scr_impact": 0.05, "own_funds_impact": -0.08},
        "equity_market_crash": {"description": "40% decline in equity markets", "scr_impact": 0.08, "own_funds_impact": -0.12},
        "mortality_stress": {"description": "Pandemic-like mortality increase", "scr_impact": 0.10, "own_funds_impact": -0.15},
        "lapse_shock": {"description": "Mass lapse event", "scr_impact": 0.04, "own_funds_impact": -0.06},
        "credit_default": {"description": "Sovereign default scenario", "scr_impact": 0.06, "own_funds_impact": -0.09},
        "operational_event": {"description": "Major operational failure", "scr_impact": 0.02, "own_funds_impact": -0.20},
    }
    stress_results = {}
    for scenario in stress_scenarios:
        if scenario in scenario_definitions:
            d = scenario_definitions[scenario]
            stressed_scr = base_scr * (1 + d["scr_impact"])
            stressed_own_funds = base_own_funds * (1 + d["own_funds_impact"])
            stressed_solvency_ratio = (stressed_own_funds / stressed_scr) * 100
            stress_results[scenario] = {
                "description": d["description"],
                "base_solvency_ratio": round(base_solvency_ratio, 2),
                "stressed_solvency_ratio": round(stressed_solvency_ratio, 2),
                "impact_on_solvency_ratio": round(stressed_solvency_ratio - base_solvency_ratio, 2),
                "stressed_scr": round(stressed_scr, 0),
                "stressed_own_funds": round(stressed_own_funds, 0),
                "adequacy_level": "Excellent" if stressed_solvency_ratio >= 150 else "Good" if stressed_solvency_ratio >= 130 else "Adequate" if stressed_solvency_ratio >= 100 else "Inadequate",
            }
    return {"base_metrics": {"solvency_ratio": base_solvency_ratio, "scr": base_scr, "own_funds": base_own_funds}, "stress_results": stress_results}

file_tools

FileTools from agno framework

calculator

CalculatorTools from agno framework

reasoning_tools

ReasoningTools from agno framework

Test Agent

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

Enter your question or instruction for the agent