TalentPerformer

Finance

Finance

Liquidity 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.

LIVE

Purpose

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.

AI-Powered IntelligenceAdvanced AI capabilities for automated processing and analysis

Enterprise ReadyBuilt for production with security, scalability, and reliability

Seamless IntegrationEasy to integrate with your existing systems and workflows

Agent Capabilities

This agent is equipped with the following advanced capabilities:

Available Tools

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.

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.

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

Required Inputs

Balance sheet data with Assets and Liabilities, including amount and maturity.

Asset and liability cash flow data including Amount, Rate, and Maturity.

Asset and liability cash flow data including Amount and Rate.

Results from liquidity gaps, EVE, and NII calculations.

Generated Outputs

Business Value

Automated processing reduces manual effort and improves accuracy

Consistent validation logic ensures compliance and audit readiness

Early detection of issues minimizes downstream risks and costs

Graph

Liquidity Interest Rate Risk Assessor preview

Pricing

Get in touch for a tailored pricing

Contact us to discuss your specific needs and requirements and get a personalized plan.

Custom Deployment

Tailored to your organization's specific workflows and requirements.

Enterprise Support

Dedicated support team and onboarding assistance.

Continuous Updates

Regular updates and improvements based on latest AI advancements.

Contact Us

For enterprise deployments.

Custom

one time payment

plus local taxes

Contact Sales

Tailored solutionsCustom pricing based on your organization's size and usage requirements.