Capital Agent

Introduction

The SSIP uses concepts like MCR (Minimum Capacity Ratio), SCR(Solvency Capital Requirements) and MLR (Maximum Leverage Ratio) to determine the capacity to sell policies and provide insurance. To implement complex mechanism like these the Capital Agent contract has been created

The SCR is the amount of funds that are required to hold to ensure that the insurance company can meet its obligations to policyholders with some probability. In Uno Re SSIPs, we use SCR as our capital management standard to calculate the minimum required amount of funds set aside to pay all the potential claims considering all quantifiable risks. SCR is calculated per pool with the following factors/inputs:

  • All the active covers and capital staked on the SSIPs

  • All the outstanding claims

  • The potential incurred but not reported claims

  • The non-life premium & reserve, lapse and catastrophe risks

  • The potential operational risk

The SCR calculation runs on a daily basis. We will review and update it to on-chain only if there is a noticeable change in the required capital requirement.

We also use MCR(Minimum Capital Ratio) as the another capital management standard in unstaking and claiming process from SSIPs.

MCR is a factor similar to SCR and is used to determine the minimal capital required to be locked in the SSIPs to guarantee solvency of the risk pool to some arbitrary and high confidence level.

SCR is a capital requirement applied per every pool, while MCR represents the threshold to apply to the whole pool.

Contract

Add Pool

To add the newly deployed SSIP pool in Capital Agent contract's ledger the addPool function is called.

 function addPool(address _ssip)

Input Variables :

  • ssip : refers to the address of the SSIP pool being added

SSIP Staking

The Capital Agent contract keeps track of the total capital staked through each SSIP pool. When a user stakes into a SSIP Pool the SSIPStaking function is called which updates the total capital variable.

function SSIPStaking(uint256 _stakingAmount, 
    uint256 _stakingAmountInUSDT)

Input Variables :

  • _stakingAmount : refers to the amount being staked into the staking pool

  • _stakingAmountInUSDT : refers to the amount being staked in terms of USDT in the pool

SSIP Withdraw

The Capital Agent contract keeps track of the total capital and respective capital staked through each SSIP pool. When a user stakes into a SSIP Pool the SSIPStaking function is called which updates the total capital variable. For the withdraw request to be approved the below mentioned condition should be true after which only the withdraw request will pass :

totalCapital - WR amount >= totalCapital * MCR
capital staked on the pool - WR amount >= SCR of the pool
function SSIPWithdraw(uint256 _withdrawAmount, 
    uint256 _withdrawAmountInUSDT)

Input Variables :

  • _withdrawAmount : refers to the amount being withdrawn into the staking pool

  • _withdrawAmountInUSDT : refers to the amount being withdrawn in terms of USDT in the pool

Add Policy

When a protocol address is added in Uno Re as a coverable/insurable asset, the addPolicy function is called and stored in the Capital Agent contract.

    function addPolicy(address _policy)

Input Variables :

  • _policy : refers to the ERC721 based Sales Policy contract for which insurance support has been added in the protocol

Policy Sale

When a user buys a policy the policySale function in the Capital Agent is called to check if the pool has enough capacity to provide insurance. The check for capacity is done according to the below mentioned requirement, when this requirement is passed it is then when the policySale will continue to be a successful purchase.

totalCoverage + policyCoverageAmount <= totalCapital * MLR
function policySale(uint256 _coverageAmount)

Input Variables :

  • _coverageAmount : refers to the amount being covered under the to be bought policy

Update Policy Status

A particular policy has a time duration associated with it which determine it's life and validity, once a particular policy expires the updatePolicyStatus function is called which adjusts the Total Coverage amount provided by the Uno Re protocol in the Capital Agent contract

    function updatePolicyStatus(address _policyAddr, 
        uint256 _policyId)

Input Variables :

  • _policyAddr : refers to the ERC721 address of the policy which has expired

  • _policyId : refers to the ID of the policy

Mark to Claim Policy

When admin is processing a claim the markToClaimPolicy function is called which changes the policy status to expired and also changes the Total Coverage amount provided by the Uno Re protocol in the Capital Agent contract

function markToClaimPolicy(address _policy, 
    uint256 _policyId)

Input Variables :

  • _policy : refers to the ERC721 address of the policy which has expired

  • _policyId : refers to the ID of the policy

Last updated