Exec Endpoint
The web service will initially expose an endpoint for model invocation at a URL of the form:
- https://test.riseapi.net/frmws/ism/v1/exec (development)
- https://www.riseapi.net/frmws/ism/v1/exec (production)
Note that web service requests to the exec endpoint should use the POST HTTP/S method, with the data payload populated with a JSON expression of the inputs. The client request should assign a MIME content-type of application/json to the POST, and ensure the same MIME type is included in the Accept header. As an example, a simple post via ajax might look like:
$('#postResults').click(function () {
$.ajax({
type: "post",
headers: {
"Authorization": "bearer " + $("#token").val()
},
dataType: "json",
contentType: 'application/json',
url: "http://chicrise1.cloudapp.net/frmws/ism/v1/exec",
data: $("#postjson").val(), // Put your json document here
success: function (value) {
// Do Something with the json response (this just prints it to text box)
$('#resultsbox').val(JSON.stringify(value, null, '\t'));
}
});
});
Request
Inputs for the web service (and ultimately for the income security score model) are described in the table below. Note that the JSON example provided in the final section conveys the overall structure of the input payload – this table is meant to detail the individual data points, complete with data type, allowable values, defaults, etc. Note also that all parent objects other than data/id and data/type reside under the “attributes” parent. This was excluded for brevity.
Parent Object | Name | Description | Data Type | Required | Allowable Values | Default Value |
---|---|---|---|---|---|---|
data | id | Unique identifier for the entire request | String | Yes | N/A | N/A |
data | type | The type of request. | String | Yes | “profile” | N/A |
tag | Tag | Free–form field used only for demo web site referencing. | String | No | Any string | Name of Primary account holder |
strategy | socialsecurity | An override for the taxable amount for social security. If omitted, default tax rates apply. | Name, Attributes, Allocation | No | 0.85 | |
strategy | tax | An override for the tax rates applied. Can be a single value, or an array of annual rates. If omitted, default tax rates apply. | Decimal[] | No | 0 – 1.00 | Included in Model |
strategy | state | An override for the state in which taxes apply. If omitted, default tax rates apply. | String | No | Profile State | |
strategy / strategy1 [] | productId | Reference to deferred income product. | Integer | No | 1 = “VA”, 2 = “DIA”, | N/A |
strategy / strategy1 [] | allocation | Percentage to allocate to the given deferred income product. | Decimal | No | 0 – 1.00 | Strategy1 = No deferred income; Strategy 2 = 10% VA; Strategy 3 = 10% DIA |
strategy / strategy1 [] | issueAge | Age of issue. | Integer | No | 50 - 85 | 65 |
strategy / strategy1 [] | withdrawalAge | Age at which withdrawals start. | Integer | No | 65 – 85 | 65 |
strategy / strategy1 [] | equityAllocation | For VA’s only: Percentage of underyling funds invested in equities. | Decimal | No | 0 – 1.00 | 0.6 |
strategy / strategy1 [] | bondAllocation | For VA’s only: Percentage of underyling funds in bonds. | Decimal | No | 0 – 1.00 | 0.4 |
strategy / strategy1 [] | fundFees | For VA’s only: Management fees on underyling funds as a percentage. | Decimal | No | 0 – 1.00 | 0.01 |
strategy / strategy1 [] | meCharge | For VA’s only: Maintenance and expense charge as a percentage. | Decimal | No | 0 – 1.00 | 0.003 |
strategy / strategy1 [] | riderCharge | For VA’s only: Rider charges as a percentage. | Decimal | No | 0 – 1.00 | 0.0085 |
strategy / strategy1 [] | riderChargeBasis | For VA’s only: Rider charge basis – account value or bonus base. | Integer | No | 0 = Account Value; 1 = Bonus Base | 1 |
strategy / strategy1 [] | withdrawalRate | For VA’s only: Expected rate of withdrawal. | Decimal | No | 0 – 1.00 | 0.05 |
strategy / strategy1 [] | ratchet | For VA’s only: Flag for whether or not a ratchet is in place. | Boolean | No | True or False | TRUE |
strategy / strategy1 [] | bonusPeriod | For VA’s only: Years of bonus period. | Integer | No | 0 -120 | 0 |
strategy / strategy1 [] | bonusPercentage | For VA’s only: Bonus percentage. | Decimal | No | 0 – 1.00 | 0 |
strategy / strategy1 [] | bonusType | For VA’s only: Type of bonus (simple or compound). | Integer | No | 0 = Simple, 1 = Compounded | 1 |
strategy / strategy2 [] | Repeat properties listed under strategy 1 | |||||
strategy / strategy3 [] | Repeat properties listed under for strategy 1 | |||||
primary | age | The current age of the policy holder. | Integer | Yes | 0 – 120 | N/A |
primary | retirementage | The planned retirement age of the policy holder. | Integer | Yes | 0 – 120 | N/A |
primary | gender | Gender of the policy holder. | String | Yes | “male” or “female” | N/A |
secondary | age | The current age of the policy holder. | Integer | No | 0 – 120 | N/A |
secondary | retirementage | The planned retirement age of the policy holder. | Integer | No | 0 – 120 | N/A |
secondary | gender | Gender of the policy holder. | String | No | “male” or “female” | N/A |
portfolio*/ categorization | income | Income or expense indicator (true for income, false for expense) | Boolean | Yes | true or false | N/A |
portfolio*/ categorization | type | The type of income or expense “account”. | String | Yes | Goals, Social Security, Other Retirement Income, Investment Assets - Employer Retirement Plans, Investment Assets – Individual Retirement Accounts, Investment Assets – Annuities & Tax-Deferred Products, Investment Assets - Taxable and/or Tax-free Accounts, Other Assets - Pension and Deferred Compensation, Other Assets - Future Assets – Cash | N/A |
portfolio*/ categorization | subtype | A subtype of the income or expense type, as necessary. | String | No | 457, 401K, 403b, Account, Additional Savings Amount, Alimony, Annuity Income, Basic Needs, Death Benefit, Deferred Compensation (Future), Deferred Compensation (Receiving Now), Employee Contributions, Employer Contributions, Fixed Annuity , Gift, Health care, Indexed Annuity, Inheritance, Living Expenses, Lump Sum Distribution, Money Purchase, Other Employer, Other Future Assets, Other Income, Other Irrevocable Trust Income, Other Qualified, Other Tax-Deferred, Part-time Employment, Pension Income, Profit Sharing, Rental Property Income, Retirement - Basic Living Expense, Reverse Mortgage, Roth IRA - Account, Roth IRA - Fixed Annuity, Roth IRA - Inherited IRA, Roth IRA - Variable Annuity, Roth IRA - Variable Annuity with GMWB, Royalties, SARSEP-IRA, Settlement/Award, Simple-IRA, Social Security Benefit, Traditional IRA - Account, Traditional IRA - Fixed Annuity, Traditional IRA - Inherited IRA, Traditional IRA - SEPP IRA - 72t, Traditional IRA - Variable Annuity, Traditional IRA - Variable Annuity with GMWB, Variable Annuity, Variable Annuity with GMWB | |
portfolio*/ categorization | useForPurchase | Optional override to pro-rata allocation to specify how much of this particular account should be used to buy guaranteed income products. | Decimal | No | 0 – 1.0 | 0 |
portfolio/ cashflows ** | type | A text-based declaration of the explicit or parameterized (or specialized) cash flows to be used (see UML diagram below). This can be omitted and inferred from the categorization type and subtype. | String | No | Explicit, Parameterized, livingExpense, healthCare, additionalSavings, pension, royalties, annuity, retirementIncome, lumpSumDistribution, deferredCompensation, cash | N/A |
portfolio/ cashflows ** | timeStep | Frequency treatment for cash flow generation. EndOfPlan denotes a value payable only at death, which in turn requires “ownership” to be set. | String | No | Daily, Weekly, Monthly, Quarterly, Annual | Annual |
portfolio/ cashflows ** | startTime | The starting point, offset from time 0 (current age) for cash flow generation. | Integer | No | 0 - 1000 | |
portfolio/ cashflows ** | itemKey | An external identifier for the type of account, predominately used for tax treatment purposes. (The external identifier will be mapped internally.) | String | No | TBD. | N/A |
portfolio/ cashflows ** | ownership | Specifies who “owns” the cashflow. If omitted, assumed to be “joint”. | String | No | primary, secondary, joint | joint |
If cashflow type = explicit** | vector | An array of fully expressed cash flows assumed to begin at startTime and conform in interval to the frequency specifier. | Decimal[] | No | Negative (i.e. expenses, such as basic living expenses) or positive (i.e. income, such as social security). | N/A |
If cashflow type = “savings” | amount | The starting amount of the savings “account”. | Decimal | Yes | > 0 | N/A |
If cashflow type = “savings” | growthRate | The rate of income growth to apply at each time step. If this is populated, then scenario-based account value projection will not apply. | Decimal | No | 0 – 1.00 | 0 |
If cashflow type = “savings” | contributions | Additional contributions to the account over time. | cashflow | No | Nested cashflow object; all cashflow specifications apply, but an “explicit” or “parameterized” cash flow is expected. | N/A |
If cashflow type = “savings” | inclinationToSave | TBD. | Decimal | No | 0 – 1.00 | 0 |
If cashflow type = “savings” | portfolio*/ allocation**/ assetclass | Asset class associated with a particular account allocation. | String | No | Cash & Cash Alternatives, Short Term Bonds, Intermediate Term Bonds, Long Term Bonds, Large Cap Value Stocks, Large Cap Growth Stocks, Mid Cap Stocks, Small Cap Stocks, International Developed Stocks, International Emerging Stocks, Any other additional asset classes TBD with PIEtech and clients | N/A |
portfolio*/ allocation** | portfolio*/ allocation**/ Weight | The target allocation of the asset class, expressed visually as a percent, but within the web service as a decimal. | Decimal | no | 0.00 – 1.00 | N/A |
If cashflow type = “parameterized” | amount | The starting amount of the income or expense “account”. | Decimal | Yes | > 0 | N/A |
If cashflow type = “parameterized” | timeSteps | The time step horizon for cash flow generation. | Integer | Yes | 0 - 120 | N/A |
If cashflow type = “parameterized” | inflationRate | The rate of inflation to apply at each time step. “default” will apply a default fixed rate, “scenario” will apply scenario-based inflation rates. | Decimal or String | No | 0 – 1.00, “default”, or “scenario” | N/A |
If cashflow type = “parameterized” | inflationSpread | The rate of spread above ‘inflationRate’ to apply at each time step, often used in conjunction with default or scenario-based inflation. | Decimal | No | -1.00 to 1.00 | N/A |
If cashflow type = “parameterized” | growthRate | The rate of income growth to apply at each time step. If this is populated, then ‘inflationRate’ and ‘inflationSpread’ will not apply. | Decimal | No | 0 – 1.00 | 0 |
If cashflow type = “parameterized” | taxFree | Tax-free indicator. | Boolean | No | true or false | FALSE |
If cashflow type = “livingExpense” | residencyChangeAtRetirement | Indicator or whether or a residency change will occur at retirement. | Boolean | No | true or false | FALSE |
If cashflow type = “livingExpense” | survivalRatio | The ratio of expenses that continue after death. | Decimal | No | 0 – 1.00 | 1 |
If cashflow type = “healthCare” | increase | TBC | Decimal | No | ||
If cashflow type = deathBenefit | payEndOfPlan | DB indicator. (Pays only upon death.) | Boolean | No | true or false | N/A |
If cashflow type = pension, royalties, or annuity | jointLife | Joint-life cash flow indicator. | Boolean | No | true or false | N/A |
If cashflow type = pension or annuity | benefitAfterSpouseDies | Reduction to joint-life benefit after spouse dies. | Decimal | No | 0 – 1.00 | N/A |
If cashflow type = lumpSumDistribution, deferredCompensation, deathBenefit, or cash | payToSpouse | Primary client or spouse indicator. | Boolean | No | true or false | N/A |
If cashflow type = pension | socialsecurityReduction | Reduction to social security benefit indicator. | Boolean | No | true or false | N/A |
If cashflow type = annuity | exclusionRatio | Portion of annuity benefit that is tax-free. | Decimal | No | 0 – 1.00 | N/A |
If cashflow type = annuity | incomeGuarantee | Type of income guarantee. | String | No | Period Certain, Lifetime Only, Installment Refund, Cash Refund | N/A |
If cashflow type = lumpSumDistribution | pretax | Pre or post tax indicator | Boolean | No | true or false | N/A |
* The portfolio object is an array and can contain any number of income or expense accounts, where the individual categorization, allocation and cash flows for each income/expense account conform to the semantics described in the table above.
** The allocation object is a sub-array within the portfolio accounts and can contain any number of allocations, where the individual allocation and fees conform to the semantics described in the table above. Note that while the number of allocations is not prescribed, the sum of the weights, however, must equal unity (1.0). The allocation array is optional.
*** The cashflows object is designed to inform the RISE model with respect to cash flow generation. The cashflows object reflects the UML diagram listed below, and therefore contains many sub-types, each of which may require different elements to be present in the JSON document. The structure will be validated accordingly, but note that this document is a work-in-progress and some specialized cash flow items remain to be documented in the table above.
**** The majority of cash flows will be in objects other than ‘explicit’. Further, the majority of cash flows are expected to be basic ‘parameterized’ representations.
Response
Outputs for the web service (derived from the income security score model) are described in the table below. Note that the JSON example provided in the last section of this document conveys the overall structure of the output payload – this table is meant to detail the individual data points, complete with data type, allowable values, defaults, etc.
Parent Object | Name | Description | Data Type | Required | Allowable Values | Default Value |
---|---|---|---|---|---|---|
data | id | Pass-through of the ID assigned to the corresponding request, allowing for instance tracking (if desired). | String | Yes | N/A | N/A |
Data | Type | The type of response. | String | Yes | “rise result” | N/A |
data / attributes* | score | The RISE score for the product. | Decimal | Yes | 0 – 100.0 | N/A |
data / attributes* | summary | Text-based summary of the chosen strategy. | ||||
data / attributes* | description | Test-based detailed description of the chosen strategy. | ||||
data / attributes / products** | productId | The id of the product in question (references product list available from the below get methods). | Integer | Yes | N/A | N/A |
data / attributes / products** | allocation | The aggregate allocation of portfolio assigned to the product as part of the chosen strategy. | Decimal | Yes | 0 – 100.0 | N/A |
data / attributes / risk | inflationRisk | Percentage impact of inflation risk on the given profile and strategy. | Decimal | Yes | 0 – 100.0 | N/A |
data / attributes / risk | longevityRisk | Percentage impact of longevity risk on the given profile and strategy. | Decimal | Yes | 0 – 100.0 | N/A |
data / attributes / risk | marketRisk | Percentage impact of market risk on the given profile and strategy. | Decimal | Yes | 0 – 100.0 | N/A |
meta | copyright | Static copyright text. | String | Yes | N/A | N/A |
meta | version | The current version of the RISE web service. | String | Yes | [Major].[Minor].[Revision].[Build] | N/A |
* The attributes object is an array and may convey income security scores for any number of product/allocation combinations.
** The products object is an array under attributes – there can be multiple products and allocations associated with a single score.