Metric Operations
In some scenarios results from supported data sources require further operations to obtain the tracked KPI options metric. Simple arithmetic operations allow to combine together multiple data sources or transform them to desired denomination currency. Full specification of metric operations is available in its implementation document to be referenced by verifiers.
In order to use metric operations Operation
parameter should be set to string choice from the supported operations. OperationParameters
should be set to JSON object with parameter key-value pairs to be used with the chosen Operation
.
Configuring Operand Data Sources
Depending on the chosen Operation
one of OperationParameters
keys should be set either to metricParameters
or metricParametersArray
. Value of metricParameters
should be set to nested JSON object with key-value pairs configuring ancillary data parameters required for the operand data source. Similarly, metricParametersArray
should be set to an array of JSON objects configuring multiple operand data sources. All of supported data sources can be used as operands, including nested operations allowing to chain together multiple operations on metric data sources.
Alternatively, deployers of KPI options can opt to store operand data source configuration off-chain by using metricParametersURL
instead of metricParameters
or metricParametersArrayURL
instead of metricParametersArray
that would reference the URL where the required JSON object / array is stored. This would allow reducing on-chain storage size in ancillary data and reduce gas costs on contract deployment and KPI option expiration. Though this introduces certain level of centralization risk that can be mitigated by storing operand configuration on decentralized storage platforms (e.g. IPFS). Alternatively, there might be a use case to append additional configuration when part of contracts contributing to the tracked metric are deployed after the launch of KPI options, though this should be done by storing operand configuration on a hosting platform with full version control visibility so that verifiers could check that the referenced configuration is consistent with the measured Metric
parameter.
Supported Operations
Summation
Setting Operation
string to SUM
allows summation of metric data sources configured in metricParametersArray
(or referenced in metricParametersArrayURL
).
Averaging
Setting Operation
string to AVG
allows tracking average value of metric data sources configured in metricParametersArray
(or referenced in metricParametersArrayURL
).
Maximum
Setting Operation
string to MAX
allows picking the highest value among value of metric data sources configured in metricParametersArray
(or referenced in metricParametersArrayURL
).
Minimum
Setting Operation
string to MIN
allows picking the lowest value among value of metric data sources configured in metricParametersArray
(or referenced in metricParametersArrayURL
).
Difference
Setting Operation
string to DIFF
allows calculating the difference between the value of two metric data sources configured in metricParametersArray
(or referenced in metricParametersArrayURL
). This requires that exactly two data sources are provided where the value of the second metric would be subtracted from the value of the first metric.
Conversion
Setting Operation
string to CONV
allows converting the value of metric data source configured in metricParameters
(or referenced in metricParametersURL
) to other denomination currency set in priceIdentifier
parameter. priceIdentifier
parameter should be set to string choice among price identifiers approved by UMA governance though only price identifiers with available base and quote currencies are supported.
By default value of metric data source would be multiplied with the value of resolved price identifier. If optional inverse
parameter is set to true
the value of metric data source would be divided by the value of resolved price identifier.
Mode of operation
Single Timestamp Operation
If AggregationMethod
and AggregationPeriod
parameters were not provided in the ancillary data the operation on the operand metrics would be performed at single daily timestamp, though the operand metrics themselves still can be calculated as aggregated over required time period if provided in operand configuration.
Operation Over Time Series
If AggregationMethod
and AggregationPeriod
parameters were provided in the ancillary data at the operation level the operation on the operand metrics would be performed at every daily timestamp (24:00 UTC) over the configured time period before processing results with the chosen aggregation method. Note that MAX
, MIN
and DIFF
methods do not support operation over time series aggregation.
In case of multiple operands they should be configured to target the same time period for each operand. If any operand data starts at a later timestamp the values of all other operands before that would be discarded. Though, if any of operand data ends at a later timestamp than others the values of all other operands before that would be filled up with their last available values.
Last updated