Views:

A system property is a built-in function 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 specify this system property for transactions to record exchange rates for those traded in a different currency, enabling LUSID to maintain the cost basis of the portfolio in the base currency.

Reading and writing system properties

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>"

To specify a writable system property, enter the property key and an appropriate 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 LUSID 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 decorate transaction system properties onto transactions (not other types of entity).

System property keyWritable?Data typeExplanation
Transaction/default/PortfolioIdNOStringFor a transaction retrieved from a portfolio group, retrieves the code of the portfolio in which it is booked.
Transaction/default/PortfolioScopeNOStringAs above, but retrieves he 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/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/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/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/InvestmentFundLineageNOStringRetrieves the lineage relative to the root fund when using the LookThroughTransactions API.

Transaction type system properties

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

System property keyWritable?Data typeExplanation
TransactionConfiguration/default/CashFlowTypeYESString

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

 

By default, LUSID's cashflow generation tool (the GetUpsertableCashFlows API) generates a set of upsertable transactions with the built-in CashFlow transaction type, which has a single movement of type CashReceivable, a direction of 1, and uses the built-in cash Side2.

 

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/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.
TransactionConfiguration/default/AllocationMethodYESStringSet the value to Prorated to override the default behavior and prorate all the transactions of a particular 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.

Holding system properties

System property keyWritable?Data typeExplanation
Holding/default/InvestmentFundLineageNOStringRetrieves the lineage relative to the root fund when using the LookThroughHoldings API.
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/SourcePortfolioIdNOStringFor a holding in a derived transaction portfolio, retrieves the code of the original portfolio in which underlying transaction(s) are booked.
Holding/default/SourcePortfolioScopeNOStringAs above, but retrieves the original 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 decorate portfolio system properties onto 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 decorate instrument system properties onto 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