Views:

Related resources:

Explanation

Tutorials

How-to guides

A system property is a built-in function belonging to a particular type of entity that can either be read-only or writable:

CategoryEnables you to...Example
Read-onlyRetrieve system information from LUSID that may not be available through other mechanisms.

Transaction/default/SourcePortfolioId

You can retrieve this system property for transactions in a derived portfolio and LUSID reveals the original portfolio in which each transaction is booked.

WritableRecord data that LUSID can then use in valuation and other business operations.

Transaction/default/TradeToPortfolioRate

You can attach this system property to transactions with values that record exchange rates for those traded in a different currency, enabling LUSID to maintain the cost basis of the portfolio in the base currency

You can interact with system properties in much the same way as the custom properties you create to extend the LUSID data model. System properties have a 3-stage key consisting of a domain, scope and code in exactly the same way, though note the underlying system property types are opaque.

The following types of entity have system properties:

Retrieving system properties for entities

To retrieve a system property, decorate it onto entities of the appropriate type when you retrieve the latter, in the same way as a custom property. For example, to decorate Transaction/default/SourcePortfolioId onto transactions retrieved from one of the LUSID demonstration portfolios:

curl -X GET "https://<your-domain>.lusid.com/api/api/transactionportfolios/Finbourne-Examples/UK-Equities/transactions?propertyKeys=Transaction%2Fdefault%2FSourcePortfolioId"
  -H "Authorization: Bearer <your-API-access-token>"

Note: FINBOURNE reserves the right to change the underlying format and data type of system properties, so retrievals at different times may yield different results.

Attaching writable system properties to entities

To attach a writable system property, enter the property key and a value when you upsert an entity of the appropriate type, in the same way as a custom property. For example, to use Transaction/default/TradeToPortfolioRate to record the USD/GBP rate for a USD transaction in one of the GBP-denominated demonstration portfolios:

curl -X POST "https://<your-domain>.lusid.com/api/api/transactionportfolios/Finbourne-Examples/Global-Equity/transactions"
  -H "Authorization: Bearer <your-API-access-token>"
  -H "Content-Type: application/json-patch+json"
  -d '[{
       "transactionId": "01",
       "type": "Buy",
       "instrumentIdentifiers": {
           "instrument/default/Figi": "BBG000C6K6G9"
         },
       "transactionCurrency": "USD",
       "properties": {
          "Transaction/default/TradeToPortfolioRate": {
            "key": "Transaction/default/TradeToPortfolioRate",
            "value": {
              "metricValue": {
                "value": 0.73,
                "unit": ""
              }
            }
          }
      },
      ...
     }
 ]'

Transaction system properties

Note you can only use transaction system properties with transactions (not other types of entity).

System property keyWritable?Data typeExplanation
Transaction/default/BondInterestYESNumberStore the bond interest bought or sold when buying or selling fixed income instruments.
Transaction/default/TradeToPortfolioRateYESNumberStore the exchange rate between the transaction currency and the portfolio base currency.
Transaction/default/OriginalTradeDateYESStringOverride the transaction date when creating a new tax lot. This is mainly used for 'transfer'-type transactions; that is, the transfer is recorded with a transaction date of ‘today’ but it's an investment you've held for ten years, and you want to preserve the 'days held'.
Transaction/default/OriginalSettlementDateYESStringAs above, but for the settlement date.
Transaction/default/TaxLotSelectionMethodYESStringOverride the default accounting method (set either on the portfolio, or the transaction type). Available values are FirstInFirstOut, LastInFirstOut, HighestCostFirst, LowestCostFirst.
Transaction/default/AllocationMethodYESStringSet the value to Prorated to override the default behavior (either built-in to LUSID or set on the transaction type) and prorate a transaction that itself has no sub-holding keys across all sub-holding keys defined for the portfolio. This is typically useful where a transaction represents a single coupon or dividend payment but the investment is held in multiple strategies.
Transaction/default/RequiresFundingLegHistoryYESStringSet the value to True to override the default behavior and indicate that the instrument being transacted is a funding leg.
Transaction/default/NotionalAmountYESNumberStore the notional amount of a buy or sell transaction in a future or CFD instrument.
Transaction/default/PortfolioIdNOStringFor a transaction in a portfolio group, retrieves the code of the portfolio in which it is booked.
Transaction/default/PortfolioScopeNOStringAs above, but retrieves the portfolio scope.
Transaction/default/SourcePortfolioIdNOStringFor a transaction in a derived transaction portfolio, retrieves the code of the original portfolio in which it is booked.
Transaction/default/SourcePortfolioScopeNOStringAs above, but retrieves the portfolio scope.
Transaction/default/TxnInputTypeNOStringFor a transaction booked with a transaction type that is aliased to a source, retrieves the original transaction type. For example, transactions from SourceA might have a BUY transaction type, those from SourceB have an ACHETER type, and both are aliased to a PURCHASE type that is set as the default source:
 
TypeUnitsSourceTransaction/default/TxnInputType
PURCHASE100SourceABUY
PURCHASE200default 
PURCHASE300SourceBACHETER
Transaction/default/ResultantHoldingNONumberFor a transaction booked with a transaction type that itself has a movement with a ‘security’ side (that is, concerned with instruments and units), retrieves the current holding. For example:
 
TypeUnitsTransaction/default/ResultantHolding
PURCHASE100100
PURCHASE200300
SELL25050
Transaction/default/InvestmentScalingMetadataNOString 
Transaction/default/CounterpartyAgreementIdNOString 
Transaction/system/SourceInstrumentIdNOString 
Transaction/system/SourceInstrumentIdNOString 
Transaction/system/AppliedTaxRuleNOStringRetrieves the tax rule in a tax rule set that LUSID applied to an activity such as a corporate action based on matching property values. More information.

Transaction type system properties

Note you can only use transaction type system properties with transaction types (not other types of entity).

System property keyWritable?Data typeExplanation
On the transaction type itself
TransactionConfiguration/default/CashFlowTypeYESString

Override the cash flow type associated with a particular transaction type.

 

By default, LUSID's cashflow generation tool (the GetUpsertablePortfolioCashFlows API) generates a set of upsertable transactions with the built-in CashFlow transaction type.

 

If you would prefer LUSID to assign a different transaction type to a particular upsertable transaction based on the cash flow type emitted by the underlying instrument, apply this property to that transaction type and give it one of the following cash flow type values:

Cash flow typeExplanation
PremiumA premium.
CouponA coupon payment. Distinct from a premium in that a coupon would be paid for a bond or rates leg whereas as a premium would be paid on an insurance-related product such as a credit default swap.
NotionalA notional-related flow, such as a notional exchange.
PrincipalA payment of principal, typically return of principal.
ProtectionA payment as a result of a default event on a credit protection leg.
CashA cash payment resulting from an option or settlement of an option.

For example, an interest rate swap transaction emits a cash flow type of Coupon. You could assign a property with this value to a transaction type that specifies a more sophisticated set of movements more appropriate to an IRS than CashFlow.

 

For an example, see the life cycle section of this Jupyter Notebook.

TransactionConfiguration/default/AllocationMethodYESString

Set the value to Prorated to override the default behavior and prorate all the transactions of this transaction type that have no sub-holding keys across all sub-holding keys defined for the portfolio.

 

This is typically useful where transactions represent a single coupon or dividend payment but investments are held in multiple strategies. Note you can override this for an individual transaction. For an example, see this Jupyter Notebook.

TransactionConfiguration/default/InstrumentEventTypeYESString

Set the value to transitionEvent/Dividend to use this transaction type for corporate actions automatically determined by LUSID to be cash dividends.
 

By default, LUSID applies the built-in Dividend transaction type to corporate actions representing cash dividends, which has the effect of increasing the main cash balance by the dividend amount, minus any tax due if a tax rule set applies.
 

For example, you may want to override Dividend and specify your own transaction type in order to process tax differently. See an example.

On a movement within the transaction type
TransactionConfiguration/default/TaxLotSelectionMethodYESStringOverride the default accounting method (set on the portfolio) for all transactions of a particular transaction type. Available values are FirstInFirstOut, LastInFirstOut, HighestCostFirst, LowestCostFirst. Note you can override this for an individual transaction.

Holding system properties

System property keyWritable?Data typeExplanation
Holding/default/TaxlotPurchaseDateNODateTimeRetrieves the date on which a set of assets was purchased.
Holding/default/TaxlotPurchasePriceNODecimalRetrieves the price paid in the portfolio currency for the set of assets purchased.
Holding/default/TaxlotIdNOStringRetrieves a unique identifier for the set of assets purchased.
Holding/default/SourcePortfolioIdNOStringFor a holding in a portfolio group, retrieves the code of the portfolio to which it belongs.
Holding/default/SourcePortfolioScopeNOStringAs above, but retrieves the portfolio scope.
    
Holding/default/Instrument  DEPRECATED
Holding/default/Units  DEPRECATED
Holding/default/Cost  DEPRECATED
Holding/default/PortfolioCost  DEPRECATED
Holding/default/Type  DEPRECATED
Holding/default/Currency  DEPRECATED
Holding/default/Weight  DEPRECATED
Holding/default/Date  DEPRECATED
Holding/default/SubHoldingKey  DEPRECATED
Holding/default/FundLineage  DEPRECATED
Holding/default/PV  DEPRECATED
Holding/default/PvCcy  DEPRECATED
Holding/default/Price  DEPRECATED
Holding/default/ExchangeRate  DEPRECATED
Holding/default/Accrual  DEPRECATED
Holding/default/Nominal  DEPRECATED
Holding/default/ForwardFx  DEPRECATED
Holding/default/DfDomCcy  DEPRECATED
Holding/default/DfFgnCcy  DEPRECATED
Holding/default/Delta  DEPRECATED
Holding/default/ParallelDelta  DEPRECATED
Holding/default/ForwardTransactionId  DEPRECATED

Portfolio system properties

Note you can only use portfolio system properties with portfolios (not other types of entity).

System property keyWritable?Data typeExplanation
Portfolio/default/ModelFeesYESNumberStore fees for LUSID to use when calculating aggregated returns.
Portfolio/default/AnnualReturnAdjustmentYESNumberStore adjustments for LUSID to use when calculating aggregated returns.
Portfolio/default/FundFamily   
Portfolio/default/ConstituentAnnualReturnAdjustmentYESNumberStore adjustments for constituents in a benchmark for LUSID to use when calculating aggregated returns.
    
Portfolio/default/Scope  DEPRECATED?
Portfolio/default/Name  DEPRECATED
Portfolio/default/Id  DEPRECATED

Instrument system properties

Note you can use instrument system properties with transactions and holdings as well as instruments.

System property keyWritable?Data typeExplanation
Instrument/default/NameNOStringRetrieves the display name of the instrument.
Instrument/default/ScopeNOStringRetrieves the scope in which the instrument is mastered.
Instrument/default/BloombergExchangeCodeNOStringRetrieves the Bloomberg exchange code.
Instrument/default/LusidInstrumentIdNOStringRetrieves the automatically-generated LUID identifier.
Instrument/default/ClientInternalNOStringRetrieves the ClientInternal market identifier.
Instrument/default/MicCodeNOStringRetrieves the market identifier code for the exchange.
Instrument/default/CurrencyNOStringRetrieves the ISO 4217 currency code.
Instrument/default/IsinNOStringRetrieves the Isin market identifier.
Instrument/default/CusipNOStringRetrieves the Cusip market identifier.
Instrument/default/SedolNOStringRetrieves the Sedol market identifier.
Instrument/default/RICNOStringRetrieves the RIC market identifier.
Instrument/default/TickerNOStringRetrieves the Ticker market identifier.
Instrument/default/CompositeFigiNOStringRetrieves the CompositeFigi market identifier.
Instrument/default/ShareClassFigiNOStringRetrieves the ShareClassFigi market identifier.
Instrument/default/FigiNOStringRetrieves the Figi market identifier.
Instrument/default/WertPapierNOStringRetrieves the Wertpapier market identifier.
Instrument/default/QuotePermIdNOStringRetrieves the QuotePermId market identifier.
Instrument/default/EdiKeyNOStringRetrieves the EdiKey market identifier.
Instrument/default/LookThroughPortfolioIdNOString 
Instrument/default/LookThroughPortfolioScopeNOString 

Legal entity system properties

Note you can only use legal entity system properties with legal entities (not other types of entity).

System property keyWritable?Data typeExplanation
LegalEntity/default/LEIYESStringStore the Legal Entity Identifier, a 20-character alpha-numeric code based on the ISO 17442 standard. See gleif.org for further information.