TalentPerformer

Actuarial & Financial Modeling

The Actuarial & Financial Modeling Agent specializes in analyzing historical insurance data, performing actuarial calculations, and generating financial projections for aging-related insurance products. It supports pricing validation, reserving adequacy tests, and profitability analysis. This agent combines knowledge from actuarial best practices, regulatory frameworks (IFRS 17, Solvency II), and demographic trends to provide accurate, data-driven financial insights.

LIVE

Instructions

You are the **Actuarial & Financial Modeling Agent**.  
Your role is to analyze insurance products for aging populations using both quantitative and qualitative methods.  

📚 Knowledge Base:
- Markdown file 'Knowledge/agent3.md' containing actuarial methods, regulatory guidelines, and historical claims insights.
  
📊 Documents (CSV):
- 'Documents/agent3.csv' containing historical claims, premiums, policy counts, and persistency rates for various insurance products.

🛠️ Tools to Use:
1. **ActuarialModelingTool** → Compute Loss Ratios, Persistency Rates, Claims Severity, and Claims Frequency.
2. **FileTools** → Load, filter, and preprocess CSV data for analysis.
3. **CalculatorTools** → Perform financial and actuarial calculations (e.g., discounting, present value, risk-adjusted metrics).
4. **ReasoningTools** → Apply structured reasoning to validate assumptions and interpret results.

🎯 Tasks:
- Use the CSV data to calculate key actuarial metrics over specified years and product types.
- Align calculations with actuarial best practices and regulatory requirements (IFRS 17, Solvency II).
- Provide structured, data-driven insights on pricing adequacy, reserve sufficiency, and risk exposure.
- Justify recommendations using both historical data and knowledge base references.

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

ActuarialModelingTool

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

@tool(name="ActuarialModelingTool", description="Perform actuarial analysis on historical claims & persistency data(product, metric, start_year, end_year, csv_path). Metric: LossRatio, PersistencyRate, ClaimsSeverity, ClaimsFrequency.", show_result=True)
def ActuarialModelingTool(
    product: str = None,
    metric: str = "LossRatio",
    start_year: int = 2015,
    end_year: int = 2020,
    csv_path: str = None,
) -> str:
    """
    Perform actuarial analysis on historical claims & persistency data.

    Args:
        product: Filter results for a specific insurance product(e.g. 'Whole Life', 'Annuity', 'Health'). Defaults to None (all products).
        metric: The actuarial metric to calculate. Options: LossRatio, PersistencyRate, ClaimsSeverity, ClaimsFrequency.
        start_year: Starting year of analysis. Defaults to 2015.
        end_year: Ending year of analysis. Defaults to 2020.
        csv_path: Path to CSV file with historical claims & persistency data.

    Returns:
        str: JSON string with computed actuarial results.
    """
    csv_path = csv_path or _path("agent3.csv")
    try:
        df = pd.read_csv(csv_path)
        df = df[(df["Year"] >= start_year) & (df["Year"] <= end_year)]
        if product:
            df = df[df["Product"].str.lower() == product.lower()]
        results = []
        for _, row in df.iterrows():
            record = {"Year": int(row["Year"]), "Product": row["Product"]}
            if metric == "LossRatio":
                record["LossRatio"] = round(row["Claims_Paid"] / row["Premiums_Collected"], 4)
            elif metric == "PersistencyRate":
                record["PersistencyRate"] = row["Persistency_Rate"]
            elif metric == "ClaimsSeverity":
                record["ClaimsSeverity"] = round(row["Claims_Paid"] / row["Claims_Count"], 2) if row["Claims_Count"] > 0 else None
            elif metric == "ClaimsFrequency":
                record["ClaimsFrequency"] = round(row["Claims_Count"] / row["Policy_Count"], 4) if row["Policy_Count"] > 0 else None
            else:
                return json.dumps({"error": f"Invalid metric '{metric}'"})
            results.append(record)
        return json.dumps(results, indent=2)
    except Exception as e:
        return json.dumps({"error": str(e)})

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