Skip to content

Pricing API

Request

Endpoint

POST https://www.clarinetlive.com/api/latest/valuationAndRiskCalculator

Role

Pricing API

Request

The request defines the cases, insureds, scenarios and settings used to create a valuation. See full definition of fields in the Schema section.

Example request:

json
{
  "ValueDate": "2023-01-01",
  "Cases": [
    {
      "CaseReference": "example-case",
      "InsuredLives": [
        {
          "InsuredReference": "example-insured",
          "Gender": "M",
          "DateOfBirth": "1935-09-16",
          "DateOfDeath": null,
          "UnderwriterReports": [
            {
              "Underwriter": "UserDefined",
              "ReportDate": "2014-05-21",
              "SmokingStatus": "NonSmoker",
              "Mortality": null,
              "MeanLE50": 75.0,
              "MedianLE50": null,
              "LE85": null,
              "AnnualDeaths": null
            }
          ]
        }
      ],
      "Policy": {
        "UniversalDeathBenefitType": "Level",
        "UniversalReturnType": "NonVariable",
        "Conversion": null,
        "PolicyType": "UniversalLife",
        "PolicyDate": "2000-08-28",
        "FaceAmount": 500000.0,
        "MaturityAge": 100,
        "MaturityDate": null,
        "CoverageEndDate": "2035-08-28",
        "AgeBasis": "ANB",
        "JointLifePayoutType": null,
        "CoverageEndPaymentType": "None",
        "LapseBasis": "CSV",
        "NonGuaranteedCreditingRate": 0.0,
        "SurrenderChargeType": "Annual"
      },
      "CaseProjection": {
        "TotalPremiumsPaidAmount": null,
        "AccountValueAtCoverageEnd": 0.0,
        "Premiums": [
          {
            "Date": "2023-01-28T00:00:00",
            "Amount": 2661.08
          },
          {
            "Date": "2023-02-28T00:00:00",
            "Amount": 2661.08
          },
          {
            "Date": "2023-03-28T00:00:00",
            "Amount": 2661.08
          },
          {
            "Date": "2023-04-28T00:00:00",
            "Amount": 2661.08
          },
        ],
        "NDBs": [
          {
            "Date": "2014-04-14T00:00:00",
            "Amount": 500000.0
          }
        ],
        "LoanPayments": null,
        "CashWithdrawals": null
      },
      "PaymentHistory": [],
      "Purchase": {
        "PurchaseDate": "2014-05-22T00:00:00",
        "PurchaseCost": 120518.0,
        "OriginationFee": 0.0,
        "PurchaseOtherCosts": 0.0,
        "RetainedDeathBenefit": null,
        "RetainedDeathBenefitSchedule": null
      },
      "Disposal": null,
      "Maturity": null
    }
  ],
  "Scenarios": [
    {
      "ScenarioReference": "Base Scenario",
      "IRR": 0.15
    },
    {
      "ScenarioReference": "13%",
      "IRR": 0.13
    },
    {
      "ScenarioReference": "14%",
      "IRR": 0.14
    }
  ],
  "ValuationSettings": {
    "PricingType": 0,
    "DefaultActuarialTable": "2008 VBT",
    "DefaultAgeBasis": "ANB",
    "DayCountConvention": "30/360",
    "QxAdjustment": null,
    "CalculateRealizedIRR": false,
    "DeterministicBreakevenCalculationType": 0,
    "CalculateDeterministicResults": false,
    "ExcludePaidPremiums": false,
    "IncludePayments": false,
    "AllowNegativeCSVInOptimizer": false,
    "UsePurchaseDateForValueDate": false,
    "CashflowBucketingType": "EndOfMonth",
    "FloorPolicyValuesAtZero": false,
    "NPVCap": 0.0
  },
  "PerPolicyFees": null,
  "PortfolioFees": null,
  "CarrierSettings": {
    "NDBCollectionLag": 2,
    "NDBCollectionLagRate": null,
    "ApplyNDBCollectionLagInterest": false,
    "UsePreviousMonthNDB": false
  },
  "ImprovementSettings": {
    "MNSRate": 0.0,
    "MSRate": 0.0,
    "MARate": 0.0,
    "FNSRate": 0.0,
    "FSRate": 0.0,
    "FARate": 0.0,
    "AgingType": "Regular",
    "StartType": "TableStartDate",
    "ApplyBeforeMortalityCalculation": true
  },
  "IRRSettings": {
    "IncludeOriginationFee": false,
    "IncludeOtherPurchaseCosts": false
  },
  "LEReportSettings": {
    "CalculationType": "Mean",
    "SmokingStatusOverride": "NonSmoker",
    "ReviewDateBlendingType": "Oldest",
    "LongevityBlendingType": "Mortality",
    "OverrideDateToPolicyMonthiversary": false,
    "SubtractFromLE50": 0.0,
    "FallbackToFirstReport": false
  },
  "LESelectionAndBlendingSettings": null,
  "SurvivalCurveSettings": {
    "InterpolationType": "PiecewiseConstantQx",
    "LongevityType": "Exact",
    "JointLifeType": "Frasierized",
    "VBTInterpolation": false,
    "UseFasanoIfAvailable": false,
    "ValueDateShift": "None"
  },
  "UnderwriterSettings": [
    {
      "InsuredReference": "example-insured",
      "UnderwriterWeightings": [
        {
          "Weighting": 100.0,
          "MortalitySpecifier": "LE50ActuarialMean",
          "ApplyImprovementBeforeImpliedMF": false,
          "ActuarialTable": "2008 VBT",
          "AgeBasis": "ANB"
        }
      ]
    }
  ]
}

Response

The response HTTP status code will be set appropriately. I.e. 400 for a bad request and 200 for a successful request.

json
{
  "IsSuccess": true,
  "Result": {
    "Valuations": [
      {
        "CaseReference": "example-case",
        "ScenarioReference": "S1",
        "NPV": 51615.519988105916,
        "UsedLE": 35.217906606316333,
        "AgedLE": 34.808884227787367,
        "ImpliedMortality": 3.0,
        "CashFlows": {
          "CashWithdrawalCfs": [
            0.0,
            ...
	       		0.0
          ],
          "FeesCfs": [
            0.0,
            ...
            0.0
          ],
          "LoanInterestPaymentCfs": [
            0.0,
            ...
            0.0
          ],
          "LoanRepaymentCfs": [
            0.0,
            ...
            0.0
          ],
          "NDBCfs": [
            0.0,
            3303.0420754897041,
            ...
          ],
          "PremiumCfs": [
            0.0,
            ...
            0.0
          ],
          "AggregateCfs": [
            0.0,
            3303.0420754897041,
            ...
          ],
          "AggregateLoanPaymentCfs": [
            0.0,
            ...
            0.0
          ],
          "AggregatePremiumAndLoanPaymentCfs": [
            0.0,
            ...
            0.0
          ]
        },
        "SurvivalProbabilities": [
          1.0,
          0.9966969579245103,
          ...
        ]
      }
    ],
    "BucketSchedule": [
      "2023-01-01T00:00:00",
	  "2023-01-01T00:00:00"
    ]
  }
}

Schema

PortfolioPricingRequestDto

NameTypeRequired
ValueDatestring
CasesArray[CaseDto]Yes
ScenariosArray[ScenarioDto]Yes
ValuationSettingsValuationSettingsDtoYes
PerPolicyFeesArray[RecurringFeeDto]
PortfolioFeesPortfolioFeesDto
CarrierSettingsCarrierSettingsDto
ImprovementSettingsImprovementSettingsDto
IRRSettingsIRRSettingsDto
LEReportSettingsLEReportSettingsDto
LESelectionAndBlendingSettingsLESelectionAndBlendingSettingsDto
SurvivalCurveSettingsSurvivalCurveSettingsDto
UnderwriterSettingsArray[InsuredUnderwriterSettingsDto]

CaseDto

NameTypeRequired
CaseReferencestringYes
InsuredLivesArray[InsuredLifeDto]Yes
PolicyPolicyDtoYes
CaseProjectionCaseProjectionDtoYes
PaymentHistoryArray[PaymentDto]
PurchaseLifeSettlementDto
DisposalPolicyDisposalDto
MaturityPolicyMaturityDto

ScenarioDto

NameTypeRequired
ScenarioReferencestringYes
IRRnumberYes
LE50Floorinteger
PremiumMultipliernumber
LE50RiskBumpRiskBumpDto
MortalityRiskBumpRiskBumpDto

ValuationSettingsDto

NameTypeRequiredPotential Values
PricingTypestringYesProbabilistic
DeterministicAgedJointLE
DeterministicValueDate
DeterministicIndividualLE
DefaultActuarialTableActuarialTableDtoYes
DefaultAgeBasisstringYesALB
ANB
DayCountConventionstring
PremiumPaymentShiftPremiumPaymentShiftDto
QxAdjustmentQxAdjustmentDto
CalculateRealizedIRRboolean
DeterministicBreakevenCalculationTypestringNone
PurchasePrice
CurrentValuation
PurchasePriceAndCurrentValuation
CalculateDeterministicResultsboolean
ExcludePaidPremiumsboolean
IncludePaymentsboolean
AllowNegativeCSVInOptimizerboolean
UsePurchaseDateForValueDateboolean
CashflowBucketingTypestringNone
EndOfMonth
RawCashflows
FloorPolicyValuesAtZeroboolean
NPVCapnumber

RecurringFeeDto

NameTypeRequiredPotential Values
Amountnumber
MinimumAmountnumber
Durationnumber
Intervalnumber
FrequencystringYesMonthly
Annual
Acquisition
Maturity
PaymentTypestringYesFixed
AcquisitionPrice
NDB
NPV

PortfolioFeesDto

NameTypeRequiredPotential Values
Amountnumber
FrequencystringYesMonthly
Quarterly
SemiAnnual
Annual

CarrierSettingsDto

NameTypeRequired
NDBCollectionLaginteger
NDBCollectionLagRatenumber
ApplyNDBCollectionLagInterestboolean
UsePreviousMonthNDBboolean

ImprovementSettingsDto

NameTypeRequiredPotential Values
MNSRatenumber
MSRatenumber
MARatenumber
FNSRatenumber
FSRatenumber
FARatenumber
AgingTypestringRegular
BeforeBlending
Straight
RollDown
StartTypestringTableStartDate
UnderwritingDate
UnderwritingDateWithExtraYear
ApplyBeforeMortalityCalculationboolean

IRRSettingsDto

NameTypeRequired
IncludeOriginationFeeboolean
IncludeOtherPurchaseCostsboolean

LEReportSettingsDto

NameTypeRequiredPotential Values
CalculationTypestringMean
Median
SmokingStatusOverridestringNonSmoker
Smoker
Aggregate
ReviewDateBlendingTypestringOldest
Newest
Blended
LongevityBlendingTypestringMortality
MeanLE50
Mqx
Lx
OverrideDateToPolicyMonthiversaryboolean
SubtractFromLE50number
FallbackToFirstReportboolean

LESelectionAndBlendingSettingsDto

NameTypeRequired
RulesArray[LESelectionAndBlendingRuleDto]
PreventUnderwriterReselectionboolean

SurvivalCurveSettingsDto

NameTypeRequiredPotential Values
InterpolationTypestringPiecewiseConstantForceOfDeath
PiecewiseConstantQx
PiecewiseLinearForceOfDeath
PiecewiseLinearQx
LongevityTypestringExact
ExactWithOneMonthNDBDelay
Monthly
ExactWithFullYearMqx
JointLifeTypestringShortestLE
LongestLE
Frasierized
VBTInterpolationboolean
UseFasanoIfAvailableboolean
ValueDateShiftstringNone
Next
ThisMonth

InsuredUnderwriterSettingsDto

NameTypeRequired
InsuredReferencestringYes
UnderwriterWeightingsArray[InsuredUnderwriterWeightingDto]Yes

InsuredLifeDto

NameTypeRequiredPotential Values
InsuredReferencestring
GenderstringM
F
DateOfBirthstring
DateOfDeathstring
UnderwriterReportsArray[UnderwriterReportDto]

PolicyDto

NameTypeRequiredPotential Values
PolicyTypestringYesUniversalLife
WholeLife
TermLife
Endowment
PolicyDatestringYes
FaceAmountnumberYes
MaturityAgeinteger
MaturityDatestring
CoverageEndAgeinteger
CoverageEndDatestring
AgeBasisstringALB
ANB
ANBm
JointLifePayoutTypestringFirstToDie
SecondToDie
CoverageEndPaymentTypestringNone
NDB
AV
LapseBasisstringCSV
AV
NonGuaranteedCreditingRatenumber
SurrenderChargeTypestringAnnual
MonthlyGraded
AnnualWithDelay
MonthlyGradedWithDelay

CaseProjectionDto

NameTypeRequired
TotalPremiumsPaidAmountnumber
AccountValueAtCoverageEndnumber
PremiumsArray[PremiumProjectionRowDto]
NDBsArray[NDBProjectionRowDto]Yes
LoanPaymentsArray[LoanPaymentProjectionRowDto]
CashWithdrawalsArray[CashWithdrawalProjectionRowDto]

PaymentDto

NameTypeRequiredPotential Values
PaymentTypestringYesPremium Fee
LoanDrawdown
LoanRepayment
CashWithdrawal
PaymentDatestringYes

LifeSettlementDto

NameTypeRequired
PurchaseDatestringYes
PurchaseCostnumberYes
OriginationFeenumber
PurchaseOtherCostsnumber
RetainedDeathBenefitRetainedDeathBenefitDto
RetainedDeathBenefitScheduleArray[Row]

PolicyDisposalDto

NameTypeRequiredPotential Values
DisposalDatestringYes
DisposalTypestringSold
Surrendered
Lapsed
Expired
DisposalAmountnumberYes
PremiumReimbursementnumber

PolicyMaturityDto

NameTypeRequired
PaymentDatestring
NDBnumberYes
Interestnumber
ReturnOfPremiumnumber
OtherAmountnumber

RiskBumpDto

NameTypeRequired
Addnumber
Multiplynumber
Expressionstring

PremiumPaymentShiftDto

NameTypeRequiredPotential Values
ShiftTypestringYesFollowing
Preceding
Next
Previous
DayOfMonthinteger

QxAdjustmentDto

NameTypeRequired
MonthsintegerYes
Additionnumber
Multiplicationnumber
Expressionstring

LESelectionAndBlendingRuleDto

NameTypeRequiredPotential Values
SelectionTypestringMostRecent
ShortestMeanLE50
LongestMeanLE50
MostRecentOnOrBeforeValueDate
MostRecentBeforeSpecifiedDate
MostRecentAfterSpecifiedDate
ShortestMedianLE50
LongestMedianLE50
HighestMortality
LowestMortality
ShortestMeanLE50StraightAged
LongestMeanLE50StraightAged
SelectionDatestring
UnderwriterstringUserDefined
TWENTY_FIRST
AUS
ELEVATION
AVS
PREDICTIVE_RESOURCES
LSI
FOCUS
CONVERGENCE
EMSI
FASANO
LAPETUS
ISC
GLOBAL_LIFE
POLARIS
MortalitySpecifierSelectorsArray[string]
BlendWeightingnumber
ApplyImprovementBeforeImpliedMFboolean
ActuarialTableActuarialTableDto
AgeBasisstringALB
ANB

InsuredUnderwriterWeightingDto

NameTypeRequiredPotential Values
Weightingnumber
MortalitySpecifierstringLE50ActuarialMean
Median
Mortality
FullCurve
ApplyImprovementBeforeImpliedMFboolean
ActuarialTableActuarialTableDto
AgeBasisstringALB
ANB

UnderwriterReportDto

NameTypeRequiredPotential Values
UnderwriterstringAUS
AVS
CONVERGENCE
ELEVATION
EMSI
FASANO
FOCUS
GLOBAL_LIFE
ISC
LAPETUS
LSI
PREDICTIVE_RESOURCES
POLARIS
TWENTY_FIRST
UserDefined
ReportDatestringYes
SmokingStatusstringNonSmoker
Smoke
Aggregate
Mortalitynumber
MeanLE50number
MedianLE50number
LE85number
AnnualDeathsArray[number]

PremiumProjectionRowDto

NameTypeRequired
DatestringYes
AmountnumberYes

NDBProjectionRowDto

NameTypeRequired
DatestringYes
AmountnumberYes

LoanPaymentProjectionRowDto

NameTypeRequired
DatestringYes
Principalnumber
Interestnumber

CashWithdrawalProjectionRowDto

NameTypeRequired
DatestringYes
GrossPaymentAmountnumber
SurrenderChargenumber
NetPaymentAmountnumber

RetainedDeathBenefitDto

NameTypeRequired
Amountnumber
Percentagenumber

Row

NameTypeRequired
DatestringYes
Amountnumber
Percentagenumber