Stamping a late transaction to apply after a set or adjust

Prev Next

When you set or adjust holdings, LUSID treats your figures as the truth for that date. If you later load a transaction dated before that date, LUSID absorbs it into the true-up, and the position doesn't move.

That's correct when your figures already included the transaction. But sometimes a late transaction should change the position, such as a trade your old system missed, or a trade you cancel after migration. To make it count, you can stamp the transaction with the date of the set or adjust it should follow. LUSID then applies it straight after that set or adjust, so you don't have to book an offsetting adjustment by hand.

Consider the example of a portfolio migrated to LUSID by setting holdings on 31 December 2023: 200 shares at a cost of USD 2,000, and USD 5,000 of cash. After the migration, you discover a buy of 20 shares on 1 October 2023 that the old system missed, and you load it:

Holdings on 31 December 2023

After setting holdings

200 shares (cost 2,000), USD 5,000

After loading the late buy

200 shares (cost 2,000), USD 5,000. The true-up absorbs the buy.

After stamping the buy with 31 December 2023

220 shares (cost 2,200), USD 4,800. The buy applies after the set.

Choosing a stamp

There are two stamps for transactions. Each is a built-in Transaction system property that is ready to use:

You want to...

Stamp

System property

Apply a late transaction on top of the set or adjust

Transaction stamp

Transaction/default/AppliesAfterSetHoldingsDate

Reverse a transaction you cancel late, after the set or adjust

Cancellation stamp

Transaction/default/CancelAppliesAfterSetHoldingsDate

The value of either stamp is the effective date of the set or adjust, for example 2023-12-31T00:00:00Z. Note the following:

  • The date must match a set or adjust that exists for the portfolio. Otherwise LUSID rejects the stamp.

  • If the date is an adjust, the stamp only has an effect if that adjust included the transaction's instrument, or the currency it settles in. An adjust leaves other instruments alone, so there's nothing to apply after.

  • For a cancellation stamp, stamp the transaction you're cancelling. You can stamp it before or after you cancel it.

Methods

  1. Navigate to the portfolio's output transactions and view the late transaction. Alternatively, open its ⋮ menu and select SetHoldings stamps.

  2. In the SetHoldings stamps section, select Apply SetHoldings stamp.

  3. Choose the stamp type, and the set or adjust the transaction should follow. The dialog explains what will happen.

The SetHoldings stamp column shows what each stamp did, for example Held to 31/12/2023, Reversed after 31/12/2023 or Stamp voided.

Add the stamp property to the transaction. You can include it when you upsert the transaction, or add it later using the UpsertTransactionProperties API.

{
  "Transaction/default/AppliesAfterSetHoldingsDate": {
    "key": "Transaction/default/AppliesAfterSetHoldingsDate",
    "value": { "labelValueSet": { "values": [ "2023-12-31T00:00:00Z" ] } }
  }
}

To remove a stamp, call the DeletePropertiesFromTransaction API.

Checking the result

  • Holdings and output transactions show the result directly. In output transactions, a stamped transaction appears after the true-up for that date, and the true-up no longer absorbs it.

  • A cancelled transaction gets a reversal with the ID <original ID>:cancel. Before the set or adjust date the original shows as PendingReversal; from that date it shows as Reversed.

  • To see why a stamp did or didn't take effect, ask the BuildTransactions API for the Transaction/system/AppliesAfterSetHoldingsDateVerdict property, or Transaction/system/CancelAppliesAfterSetHoldingsDateVerdict for a cancellation stamp:

Verdict

Meaning

Released

Applied straight after this set or adjust

Pending

A cancellation whose reversal falls after the period you asked for

Honoured

Valid, but a later stamped set or adjust releases the transaction

Voided

The set or adjust was redone or cancelled after you stamped, so the transaction is absorbed again (see below)

Ignored

The stamp is dated before the transaction, so it has no effect

NotInForce

The stamp belongs to another portfolio, such as a different NAV type

If you redo the set or adjust

If you set holdings again at the same date, or cancel the set, LUSID voids the stamps that point at it, and the late transactions are absorbed again. The response includes a SetHoldingsStampsVoided warning that lists them. Adjusting holdings again at that date voids stamps only for the instruments the adjust includes.

To restore a stamp, apply it again (in the web app, select Re-apply). LUSID checks it against the set or adjust as it is now.

Stamping settlement instructions

If the portfolio settles by instruction, a settlement can be late or wrong even when the transaction itself is right. For example, a payment was made before the migration, but the old system still showed it as pending. Settlement instructions have two equivalent stamps:

You want to...

Property

Set it...

Apply a settlement that the set or adjust treated as still pending

SettlementInstruction/default/AppliesAfterSetHoldingsDate

On the instruction, when you load it with BatchUpsertSettlementInstructions

Reverse a settled instruction you deactivate late

SettlementInstruction/default/CancelAppliesAfterSetHoldingsDate

In the same BatchAmendSettlementInstructions call that deactivates the instruction

You don't need to stamp the instructions of a stamped transaction; they follow the transaction automatically.

Letting LUSID stamp for you

You can set the Transaction/default/InclusionDate system property on a transaction, in which case LUSID stamps for you.

If the transaction’s trade date is before a set or adjust holdings but its inclusion date is after it, LUSID stamps it with the latest set or adjust in between, so it applies on top of that position rather than being absorbed by it.

Transaction/default/CancelInclusionDate does the same for cancellations, & settlement instructions have equivalent properties.