Skip to content

Features

What is a Feature

From the perspective of a developer, features are nothing but variables. The risk system is driven by these features and it's important to understand them.

At an abstract level, risk supports two types of features.
* Lifetime features - Variables which hold aggregated/running data from the time they were added into the system. They are helpful in telling the first/last/count of something happened over time. Like calculating age, or saving user info, or telling how many times some information is modified.
* Velocity features - Theses variables are more granular in nature and can tell information for a specific timeframe. Like sum transaction amount over last 1sec, 1min, 1hour, 1day etc.

Feature Structure

Features use a naming pattern like this:

<DocumentType>/<EventName>/<Duration>/<VariableName>/<Aggregation>/<Aggregation_SubType>/<Type>

Supported Features (Ref: Click here)

Type Stored Type Aggregations Remarks
Lifetime bool <DocumentType>/<EventName>/*/<VariableName>/first/bool
<DocumentType>/<EventName>/*/<VariableName>/last/bool
date <DocumentType>/<EventName>/*/<VariableName>/first/seconds_since/double
<DocumentType>/<EventName>/*/<VariableName>/first/minutes_since/double
<DocumentType>/<EventName>/*/<VariableName>/first/days_since/double
<DocumentType>/<EventName>/*/<VariableName>/last/seconds_since/double
<DocumentType>/<EventName>/*/<VariableName>/last/minutes_since/double
<DocumentType>/<EventName>/*/<VariableName>/last/days_since/double
double <DocumentType>/<EventName>/*/<VariableName>/sum/double
<DocumentType>/<EventName>/*/<VariableName>/count/int
f_int <DocumentType>/<EventName>/*/<VariableName>/int returns actual value
<DocumentType>/<EventName>/*/<VariableName>/count/int
string <DocumentType>/<EventName>/*/<VariableName>/first/string
<DocumentType>/<EventName>/*/<VariableName>/last/string
stats <DocumentType>/<EventName>/*/<VariableName>/sum/double
<DocumentType>/<EventName>/*/<VariableName>/avg/double
<DocumentType>/<EventName>/*/<VariableName>/stdev/double
<DocumentType>/<EventName>/*/<VariableName>/first/double
<DocumentType>/<EventName>/*/<VariableName>/last/double
<DocumentType>/<EventName>/*/<VariableName>/min/double
<DocumentType>/<EventName>/*/<VariableName>/max/double
<DocumentType>/<EventName>/*/<VariableName>/count/int
Velocity record <DocumentType>/<EventName>/<Duration>/<VariableName>/sum/double
<DocumentType>/<EventName>/<Duration>/<VariableName>/avg/double
<DocumentType>/<EventName>/<Duration>/<VariableName>/stdev/double
<DocumentType>/<EventName>/<Duration>/<VariableName>/min/double
<DocumentType>/<EventName>/<Duration>/<VariableName>/max/double
<DocumentType>/<EventName>/<Duration>/<VariableName>/first/double
<DocumentType>/<EventName>/<Duration>/<VariableName>/last/double
<DocumentType>/<EventName>/<Duration>/<VariableName>/count/int
<DocumentType>/<EventName>/<Duration>/<VariableName>/distinct/sum/double
<DocumentType>/<EventName>/<Duration>/<VariableName>/distinct/avg/double
<DocumentType>/<EventName>/<Duration>/<VariableName>/distinct/max/double
<DocumentType>/<EventName>/<Duration>/<VariableName>/distinct/min/double
<DocumentType>/<EventName>/<Duration>/<VariableName>/distinct/first/double
<DocumentType>/<EventName>/<Duration>/<VariableName>/distinct/last/double
<DocumentType>/<EventName>/<Duration>/<VariableName>/distinct/count/int
<DocumentType>/<EventName>/<Duration>/<VariableName>/tx/count/int Counts tx (+ - -)
<DocumentType>/<EventName>/<Duration>/<VariableName>/distinct_tx/count/int same with distinct

Supported durations for Velocity features

Minimum granularity supported by system is minutes and it can go up to year.

Supported Duration Duration
last<*>m Minutes
last<*>h Hours
last<*>d Days
last<*>y Year
*Any number