A metric in LUSID is a discrete piece of business information you can retrieve when creating a valuation report and, potentially, perform operations on to add value and gain insight.
LUSID can report many hundreds of metrics about almost any aspect of the valuation process, from information about underlying instruments and transactions, portfolios and the holdings they contain, market data used, and headline statistics such as PV and PnL.
Note: You can include properties in valuation reports too, and create custom metrics using a special kind of derived property. More information.
Listing available metrics
To list every metric, call the GetQueryableKeys API, or query the Lusid.Portfolio.Valuation.Measure provider if you have a Luminesce license. Note the following:
- Not every metric is useful or valid for the types of instruments you wish to value. You can call APIs in advance to understand which metrics might be relevant to your use case.
- There are hundreds of metrics, so it is often useful to apply a filter when retrieving them; see the table below for examples.
- Some metrics are deprecated. You can ignore these by adding the following expression to a filter:
and lifeCycleStatus neq 'Deprecated'
.
Domain | Sub-category (where relevant) | Filter to apply | Example metrics | Notes |
Aggregation | domain eq 'Aggregation' | Aggregation/GrossExposureFraction Aggregation/NetExposureFraction | ||
Analytic | domain eq 'Analytic' | Analytic/YieldToMaturity Analytic/MacaulayDuration | ||
Counterparty | domain eq 'Counterparty' | Counterparty/Signatory/Name Counterparty/CSA/MarginCallFrequency | ||
Holding | domain eq 'Holding' | Holding/Cost/Dom | ||
Instrument | OTC | domain eq 'Instrument' and addressKey ct 'OTC' | Instrument/OTC/Bond/StartDate Instrument/OTC/CdsIndex/FgnCcys Instrument/OTC/EquityOption/Strike | Information specific to instrument types. |
Other | domain eq 'Instrument' and addressKey not ct 'OTC' | Instrument/InstrumentType Instrument/AssetClass Instrument/Features | Generic information about instruments. | |
LegalEntity | domain eq 'LegalEntity' | LegalEntity/DisplayName LegalEntity/RiskInformation/CountryOfRisk | ||
Lookthrough | domain eq 'Lookthrough' | Lookthrough/LookthroughWeight Lookthrough/Root/Valuation/PV | 'Lookthrough' refers to securitised portfolios. | |
Portfolio | domain eq 'Portfolio' | Portfolio/Name Portfolio/AmortisationMethod | ||
ProfitAndLoss | domain eq 'ProfitAndLoss' | ProfitAndLoss/Total/Market ProfitAndLoss/Realised/Fx/PortfolioCcy | Replacement for Valuation/PnL* metrics. More information. | |
Quotes | domain eq 'Quotes' | Quotes/Price Quotes/Price/EffectiveAt | ||
Transaction | domain eq 'Transaction' | Transaction/TotalConsideration Transaction/SettlementDate | ||
Valuation | PV | domain eq 'Valuation' and addressKey ctsw 'PV' | Valuation/PV Valuation/Leg1/PV Valuation/PvInPortfolioCcy | |
Risk | domain eq 'Valuation' and addressKey ct 'Risk' | Valuation/Risk/Gamma | ||
Accrual | domain eq 'Valuation' and addressKey ctsw 'Accr' | Valuation/Accrued | More information. | |
Exposure | domain eq 'Valuation' and addressKey ctsw 'Exposure' | Valuation/Exposure Valuation/ExposureInPortfolioCcy | More information. | |
Diagnostics | domain eq 'Valuation' and addressKey ct 'Diagnostics' | Valuation/Diagnostics/FxForwardRate | ||
Instrument legs | domain eq 'Valuation' and addressKey ctsw 'Leg' | Valuation/Leg1/PV Valuation/LegIdentifier | LUSID considers certain instruments to have legs. | |
PnL | domain eq 'Valuation' and addressKey ct 'PnL' | Valuation/PnL/YearToDate Valuation/PnL/Tm1 | Being replaced by dedicated ProfitAndLost metrics. | |
UnitResult | All metrics | domain eq 'UnitResult' | UnitResult/Valuation/InstrumentAccrued | User-defined metrics for external result data in the SRS. |
Metrics in a particular data map | domain eq 'UnitResult' and scope eq '<my-data-map-scope>' |
Performing operations on metrics
The Valuation/PV
metric is defined as follows:
{ "addressKey": "Valuation/PV", "description": "The present value of a holding of an instrument, at a point in time, in the settlement currency if applicable, otherwise domestic currency. Includes accrued interest", "displayName": "PV", "type": "Result0D", "flattenedType": "Decimal", "scalesWithHoldingQuantity": true, "supportedOperations": "Sum,Proportion,Average,Count,Min,Max,Value,SumOfPositiveValues,SumOfNegativeValues,SumOfAbsoluteValues,ProportionOfAbsoluteValues", "lifeCycleStatus": "Experimental" }
Every metric:
- Has a multi-stage
addressKey
you can use to report the metric. - Has a set of
supportedOperations
. You can always report a metric'sValue
; in addition, you can typically perform operations such asSum
,Proportion
andAverage
on numeric values. See a demonstration.
Specifying metrics in valuation reports
When you create a valuation report you must specify at least one metric. Note it's often useful to specify the Instrument/default/Name
metric to report the friendly names of underlying instruments.
Consider the following example, of a call to value this GBP-denominated portfolio containing a mix of US and UK equities and bonds on a single day, 7 March 2022:
- The metrics chosen to create a meaningful valuation report are highlighted (with summary explanations) in red.
- Results are grouped by the
Instrument/default/LusidInstrumentId
metric (highlighted in yellow) to report one result per underlying instrument held. If the portfolio contains multiple holdings in the same underlying instrument (perhaps divided into tax lots or strategies), they are automatically aggregated. - Non-numeric metrics report their
Value
. - Numeric metrics use the
Sum
operation to total any holdings in the same underlying instrument divided into tax lots or strategies. Note this has no effect if holdings have not been so divided:
curl -X POST "https://<your-domain>.lusid.com/api/api/aggregation/$valuation" -H "Authorization: Bearer <your-API-access-token>" -H "Content-Type: application/json-patch+json" -d '{ "portfolioEntityIds": [ {"scope": "FBNUniversity", "code": "Module-4-1", "portfolioEntityType": "SinglePortfolio"} ], "valuationSchedule": {"effectiveAt": "2022-03-07T00:00:00.0000000+00:00"}, "recipeId": {"scope": "FBNUniversity", "code": "Module-4-1Recipe"}, "groupBy": ["Instrument/default/LusidInstrumentId"], "metrics": [ {"key": "Instrument/default/Name", "op": "Value"}, # Reports the friendly name of the underlying instrument {"key": "Valuation/EffectiveAt", "op": "Value"}, # Confirms the valuation date {"key": "Holding/default/Cost", "op": "Sum"}, # Calculates cost in the transaction currency {"key": "Valuation/PV", "op": "Sum"}, # Calculates PV in the transaction currency {"key": "Valuation/PnL/Unrealised", "op": "Sum"}, # Calculates PnL in the transaction currency (PV minus cost) {"key": "Holding/Cost/Pfolio", "op": "Sum"}, # Calculates cost in GBP (the portfolio currency) {"key": "Valuation/PvInPortfolioCcy", "op": "Sum"}, # Calculates PV in GBP {"key": "Valuation/PnL/Unrealised/PfolioCcy", "op": "Sum"} # Calculates PnL in GBP ] }'
The response might look like this (transformed to a Pandas dataframe and with columns renamed for simplicity):
For more on grouping results in a valuation report, and aggregating numeric values using mathematical operations, see this article.