Views:

Related resources:

Explanation

Tutorials

How-to guides

By default, LUSID operates a ‘data load first’ policy, so transactions and other data items are upserted and failures mapped to the unknown instrument.

Note: You can increase the level of validation to reject transactions that do not resolve to instruments.

Discovering transactions mapped to the unknown instrument

When you upsert transactions into LUSID, you are notified of mapping failures in the response to your API request.

Alternatively, you can search LUSID after the event for transactions that have been mapped to the unknown instrument. For example, you could sign in to the LUSID web app and search a particular portfolio by entering LUID_ZZZZZZZZ in the LUSID Instrument ID column on the Transactions dashboard:

Alternatively, you could call the LUSID GetTransactions API for a portfolio with a filter of LUID_ZZZZZZZZ:

curl -X GET "https://<your-domain>.lusid.com/api/api/transactionportfolios/Finbourne-Examples/Global-Equity/transactions?filter=instrumentUid%20eq%20%27LUID_ZZZZZZZZ%27"
  -H "Authorization: Bearer <your-API-access-token>"

For example, the following response reveals that two transactions, upserted with FIGI instrument identifiers of BBG00ZGF7HS6 and BBG00ZGFH7D1 respectively, are mapped to the unknown instrument in this demonstration portfolio:

"values": [
    {
        "transactionId": "tx_00004",
        "type": "Buy",
        "instrumentIdentifiers": {
            "Instrument/default/Figi": "BBG00ZGF7HS6"
        },
        "instrumentUid": "LUID_ZZZZZZZZ",
        ...
    },
    {
        "transactionId": "fxfwd-eur-usd-6m-01",
        "type": "StockIn",
        "instrumentIdentifiers": {
            "Instrument/default/Figi": "BBG00ZGFH7D1"
        },
        "instrumentUid": "LUID_ZZZZZZZZ",
        ...
    }
]

Manually resolving transactions to known instruments

Consider the example above, of a transaction tx_00004 upserted into LUSID with a FIGI instrument identifier of BBG00ZGF7HS6. You could:

  • Create a new instrument to model this financial asset, giving it a FIGI unique identifier of BBG00ZGF7HS6. You should then call the LUSID ResolveInstrument API for the portfolio containing the transaction in order to resolve it to the new instrument, for example:
    curl -X POST https://<your-domain>.lusid.com/api/api/transactionportfolios/Finbourne-Examples/Global-Equity/$resolve?instrumentIdentifierType=Instrument%2Fdefault%2FFigi&instrumentIdentifierValue=BBG00ZGF7HS6
      -H "Authorization: Bearer <your-API-access-token>"
      -H "Content-Type: application/json-patch+json"
      -d '{}'
  • Add a FIGI unique identifier of BBG00ZGF7HS6 to an existing instrument (assuming one modelling an appropriate financial asset already exists). You should then call the LUSID ResolveInstrument API in the same way as above to resolve the transaction to the changed instrument.
  • Call the LUSID ResolveInstrument API, adding other instrument identifiers to the transaction so that it does resolve to a known instrument. For example, you could add a ClientInternal instrument identifier to the transaction (in the expectation that an instrument with this unique identifier already exists):
    curl -X POST https://<your-domain>.lusid.com/api/api/transactionportfolios/Finbourne-Examples/Global-Equity/$resolve?instrumentIdentifierType=Instrument%2Fdefault%2FFigi&instrumentIdentifierValue=BBG00ZGF7HS6
      -H "Authorization: Bearer <your-API-access-token>"
      -H "Content-Type: application/json-patch+json"
      -d '{
       "instrument/default/ClientInternal": "acme-inc-equity"
    }'