Skip to main content

Pricing Interpolation

When searching for a loan, a client can use either target rates or target pricing. The default approach in a multisearch or single search call uses a fixed rate, which is set as described in the Rates documentation.

However, using pricing interpolation, a client can perform the reverse and set a fixed price to find the rate that applies to them based on the fixed price, known as the target interpolated pricing.

Request

Pricing interpolation uses the pricing call at the {{protocol}}{{domain}}/rest/pricing/multisearch/{{userId}} endpoint. The request parameters to use the pricing interpolation feature are found in the MultiCriteriaSearchModel object at the top level of the request data and are listed below.

Show Interpolated Pricing

Set MultiCriteriaSearchModel.showInterpolatedPricing to True to toggle the interpolation on and treat the pricing call as an interpolated pricing request. The results will then include rates for interpolated pricing along with normal rates.

The default value is False. If this field is false, values set in MultiCriteriaSearchModel.targetInterpolatedPrice and MultiCriteriaSearchModel.onlyShowTargetPrice will have no effect.

"showInterpolatedPricing": true,

Target Interpolated Price

targetInterpolatedPrice is a numeric field used to specify the target price that the pricing search will attempt to interpolate rates for. The price value should be given in 0-base format.

Note: Set to 0 to search for the lowest possible rates. Set to null or do not populate if interpolating for a target rate instead.

"targetInterpolatedPrice": 5,

Only Show Target Price

Set onlyShowTargetPrice to True to only include results whose adjustedPoints match the targetInterpolatedPrice. Any results that do not match that price will be omitted. Rates that do not contain any matching results will also be omitted.

Setting this field to True uses the target price, while setting to False gets the closest to par pricing.

Note: If showInterpolatedPricing is False or targetInterpolatedPrice is null, setting this field will have no effect.

Par Pricing

Par pricing is another term for when the target interpolated price is 0.

targetInterpolatedPrice: 0

Adjusted Points

The adjustedPoints field represents the final pricing points, with adjustments included. The target interpolated price set in the request references the pricing value in adjustedPoints within the response.

Rate and Rates with Interpolated Pricing

rate and rates allow the user to specify which rates to include in the pricing results. If showInterpolatedPricing is set to True, this will override the rate grid, meaning that any rates that do not exist in the rate grid will still be interpolated and included in the results. Otherwise, the non-existent rates will not be included.

The rate field takes in a single numerical value, while the rates field takes in an array of numerical values. If provided, the value from the rate field will be appended to the rates array internally during pricing. Thus, the user can use either or both fields to specify rates.

Note: the pricer can only interpolate for either a target price or a target rate(s) in one search. If both the targetInterpolatedPrice and either rate, rates, or both are provided, then the targetInterpolatedPrice will take precedence and the rate and rates fields will only act as a filter. That is, no new rates will be generated during pricing interpolation based on the given rates values.

See Working with Rates for more information on setting rates.

Show All Day Locks for Interpolated Rates

To show all day locks for interpolated rates, set MultiCriteriaSearchModel.showAllDayLocksForInterpolatedRates to True.

Response

The data response returns the interpolated rates in the interpolatedRates field. Individual data results beneath each rate will indicate whether this rate result is interpolated in the interpolated field.

"resultMap": [
{
"resultRates": {
"allowModifiedDate": true,
"dayLock": 30,
"dayLocksList": [],
"interpolatedRates": [
2.557,
2.561,
2.691,
2.697,
2.543,
2.548
],
"brokerPaidDetails": [],
"otherPaidDetails": [],
"hideDisqualified": false,
"disqualified": false,
"interpolated": true,
"interpolationTarget": false,
"groupAdjustmentProperties": [
{

Examples

Interpolating for a target price

To interpolate rates for a target price, set showInterpolatedPricing to True and targetInterpolatedPrice to the desired pricing points, as shown. Note that the target pricing set here corresponds to the adjusted points value.

The result will return data for the interpolated rates along with the normal rates. Interpolated rates are listed in the interpolatedRates field, while rateSet lists all rates in the results. In the data container, individual line results are listed under each rate. Each line result indicates whether the rate is interpolated in the interpolated field.

Request:

curl --location -g --request POST '{{protocol}}{{domain}}/rest/pricing/multisearch/{{userId}}' \
--header 'secret: {{token}}' \
--header 'companyid: {{companyId}}' \
--data-raw '{
"showInterpolatedPricing": true,
"targetInterpolatedPrice": 3,
}'

Response:

{
"dataEventId": "60774ad02209c4000191d6da-6863",
"baseSearch": {
"id": "60774ad02209c4000191d6d0",
},
"resultMap": [
{
"resultRates": {
"interpolatedRates": [
2.557,
2.561
],
"rateSet": [
2.25,
2.375,
2.557,
2.561
],
"monthlyPaymentMapByRate": {
"2.25": 1528.98,
"2.375": 1554.61,
"2.557": 1592.36,
"2.561": 1593.2
},
"data": {
"2.25": [
{
"dti": 0.735796,
"hti": 0.305796,
"mortgageType": "Conventional",
"loanPurpose": "Purchase",
"loanAmount": 400000,
"term": 30,
"dayLock": 30,
"baseRates": 2.25,
"adjustedRates": 2.25,
"adjustmentRates": 0,
"loanLimitLite": {},
"basePoints": 1.97,
"adjustedPoints": 1.972,
"adjustedPointsBorrowerPaid": 1.972,
"adjustmentPoints": 0.0020000000000000018,
"adjustmentPointsBorrowerPaid": 0.0020000000000000018,
"rawAdjustmentPoints": 0.0020000000000000018,
"rawAdjustmentPointsBorrowerPaid": 0.0020000000000000018,
"armIndexRate": 0,
"notRoundedAPR": 2.4,
"borrowerPaid": 7888,
"borrowerPaidDetails": [
{
"line": "",
"points": 1.972,
"amount": 7888.000000000001,
}
],
"interpolated": false,
"interpolationTarget": false,
},
"apr": 2.3999,
],
"2.375": [
{
"dti": 0.740922,
"hti": 0.310922,
"mortgageType": "Conventional",
"loanPurpose": "Purchase",
"loanAmount": 400000,
"term": 30,
"dayLock": 30,
"baseRates": 2.375,
"adjustedRates": 2.375,
"adjustmentRates": 0,
"basePoints": 1.165,
"adjustedPoints": 1.167,
"adjustedPointsBorrowerPaid": 1.167,
"adjustmentPoints": 0.0020000000000000018,
"adjustmentPointsBorrowerPaid": 0.0020000000000000018,
"rawAdjustmentPoints": 0.0020000000000000018,
"rawAdjustmentPointsBorrowerPaid": 0.0020000000000000018,
"armIndexRate": 0,
"notRoundedAPR": 2.464,
"borrowerPaid": 4668,
"lenderPaid": 4668,
"interpolated": false,
"interpolationTarget": false
],
"2.557": [
{
"dti": 0.7484719999999999,
"hti": 0.318472,
"mortgageType": "Conventional",
"loanPurpose": "Purchase",
"loanAmount": 400000,
"term": 30,
"dayLock": 30,
"baseRates": 2.557,
"adjustedRates": 2.557,
"adjustmentRates": 0,
"adjustedPoints": 0,
"adjustedPointsBorrowerPaid": 0,
"adjustmentPoints": 0,
"adjustmentPointsBorrowerPaid": 0,
"rawAdjustmentPoints": 0,
"rawAdjustmentPointsBorrowerPaid": 0,
"armIndexRate": 0,
"notRoundedAPR": 2.557,
"brokerPaidDetails": [],
"otherPaidDetails": [],
"hideDisqualified": false,
"disqualified": false,
"interpolated": true,
"interpolationTarget": true
],
"2.561": [
{
"dti": 0.74864,
"hti": 0.31864000000000003,
"mortgageType": "Conventional",
"loanPurpose": "Purchase",
"loanAmount": 400000,
"term": 30,
"dayLock": 30,
"baseRates": 2.561,
"adjustedRates": 2.561,
"adjustmentRates": 0,

"basePoints": 0,
"adjustedPoints": 0.012,
"adjustedPointsBorrowerPaid": 0.04200000000000001,
"adjustmentPoints": 0.0020000000000000018,
"adjustmentPointsBorrowerPaid": 0.01200000000000001,
"rawAdjustmentPoints": 0.0020000000000000018,
"rawAdjustmentPointsBorrowerPaid": 0.01200000000000001,
"armIndexRate": 0,
"notRoundedAPR": 2.562,
"borrowerPaid": 168,
"interpolated": true,
"interpolationTarget": true,
}
]
}
}
]

Interpolating for a Target Rate

To interpolate for a target rate, do not set a value for targetInterpolatedPrice and instead set a value in the rate field.

Request:

curl --location -g --request POST '{{protocol}}{{domain}}/rest/pricing/multisearch/{{userId}}' \
--header 'secret: {{token}}' \
--header 'companyid: {{companyId}}' \
--data-raw '{
"showInterpolatedPricing": true,
"targetInterpolatedPrice": null,
"rate": 2.5

}'

Response:

{
"resultMap": [
{
"resultRates": {
"allowModifiedDate": true,
"dayLock": 30,
"dayLocksList": [],
"interpolatedRates": [
2.557
],
"rateSet": [
2.557
],
"monthlyPaymentMapByRate": {},
"data": {
"2.557": [
{
"dti": 0.7484719999999999,
"hti": 0.318472,
"mortgageType": "Conventional",
"loanPurpose": "Purchase",
"loanAmount": 400000,
"term": 30,
"dayLock": 30,
"baseRates": 2.557,
"adjustedRates": 2.557,
"adjustmentRates": 0,
"basePoints": 0,
"adjustedPoints": 0,
"adjustedPointsBorrowerPaid": 0,
"adjustmentPoints": 0,
"adjustmentPointsBorrowerPaid": 0,
"rawAdjustmentPoints": 0,
"rawAdjustmentPointsBorrowerPaid": 0,
"armIndexRate": 0,
"notRoundedAPR": 2.557,
"interpolated": true,
"interpolationTarget": true
}
]
}
}

Only show Interpolated Rates

Request:

curl --location -g --request POST '{{protocol}}{{domain}}/rest/pricing/multisearch/{{userId}}' \
--header 'secret: {{token}}' \
--header 'companyid: {{companyId}}' \
--data-raw '{
"showInterpolatedPricing": true,
"targetInterpolatedPrice": 3,
"onlyShowTargetPrice": true
}'

Response:

{
"resultMap": [
{
"resultRates": {
"interpolatedRates": [
2.557,
2.561
],
"rateSet": [
2.557,
2.561
],
"monthlyPaymentMapByRate": {},
"data": {
"2.557": [
{
"dti": 0.7484719999999999,
"hti": 0.318472,
"mortgageType": "Conventional",
"loanPurpose": "Purchase",
"loanAmount": 400000,
"term": 30,
"dayLock": 30,
"baseRates": 2.557,
"adjustedRates": 2.557,
"adjustmentRates": 0,
"basePoints": 0,
"adjustedPoints": 0,
"adjustedPointsBorrowerPaid": 0,
"adjustmentPoints": 0,
"adjustmentPointsBorrowerPaid": 0,
"rawAdjustmentPoints": 0,
"rawAdjustmentPointsBorrowerPaid": 0,
"armIndexRate": 0,
"notRoundedAPR": 2.557,
"interpolated": true,
"interpolationTarget": true
}
],
"2.561": [
{
"dti": 0.74864,
"hti": 0.31864000000000003,
"mortgageType": "Conventional",
"loanPurpose": "Purchase",
"loanAmount": 400000,
"term": 30,
"dayLock": 30,
"baseRates": 2.561,
"adjustedRates": 2.561,
"adjustmentRates": 0,

"basePoints": 0,
"adjustedPoints": 0.012,
"adjustedPointsBorrowerPaid": 0.04200000000000001,
"adjustmentPoints": 0.0020000000000000018,
"adjustmentPointsBorrowerPaid": 0.01200000000000001,
"rawAdjustmentPoints": 0.0020000000000000018,
"rawAdjustmentPointsBorrowerPaid": 0.01200000000000001,
"armIndexRate": 0,
"notRoundedAPR": 2.562,
"borrowerPaid": 168,
"interpolated": true,
"interpolationTarget": true,
}
]
}
}
]