What are the supported tax lot accounting methods in LUSID?

LUSID supports numerous tax lot accounting methods. See a full list.

By default, a holding in a transaction portfolio is not divided into tax lots. Instead, LUSID calculates an average cost from all transactions that contribute to an increase in that holding (that is, buys and short sells). This average cost is then used as a basis to calculate realised gains/losses for transactions that contribute to a decrease in the holding.

The default accounting method for a portfolio is therefore AverageCost. You have the option to set this explicitly when you create a portfolio. If you do not set the portfolio’s accountingMethod field explicitly, then LUSID sets it to Default automatically, which has the same effect as AverageCost.

For a detailed example, examine this Jupyter Notebook.

Comparing the AverageCost and FirstInFirstOut accounting methods

Imagine we have a portfolio containing a single holding in an Equity instrument generated from the following four transactions:

Date

Transaction type

Units

Price

Cost/proceeds

Mon 2 Dec 2024

Buy

10

10

100

Tues 3 Dec 2024

Buy

10

11

110

Wed 4 Dec 2024

Buy

10

12

120

Thur 5 Dec 2024

Sell

15

13

195

AverageCost accounting method

FirstInFirstOut accounting method

Holdings on Wed 4 Dec 2024 (before the Sell transaction)

A single holding with 30 units is generated. The average cost is £330 / 30 = £11 per unit:

The holding is divided into three tax lots when By tax lots is enabled, reflecting the different purchase dates and prices:

Holdings on Thur 4 Dec 2024 (after the Sell transaction)

15 units are liquidated at £11 per unit:

The first tax lot of 10 units (the oldest) is liquidated at £10 per unit, and 5 units of the second tax lot at £11 per unit:

Realised gain/loss on the Sell transaction

The realised gain is £195 (proceeds) - £165 (cost) = £30:

The realised gain is £40:

  • From the first tax lot: £130 (proceeds) - £100 (cost) = £30

  • From the second tax lot: £65 (proceeds) - £55 (cost) = £10

Supported tax lot accounting methods

Method

Explanation

AverageCost

This is the default. A holding is not divided into tax lots. Instead, LUSID calculates an average cost from all transactions that contribute to an increase in that holding.

FirstInFirstOut

The oldest tax lots are liquidated first.

LastInFirstOut

The newest tax lots are liquidated first.

HighestCostFirst

HighestCostFirstPortfolioCurrency

Tax lots with the highest cost (in either local or portfolio currency) are liquidated first.

LowestCostFirst

LowestCostFirstPortfolioCurrency

Tax lots with the lowest cost (in either local or portfolio currency) are liquidated first.

IntraDayThenFirstInFirstOut

Tax lots opened on the same day are liquidated first (oldest within the day first), then first in first out (that is, the oldest tax lots are liquidated first).

LongTermHighestCostFirst

LongTermHighestCostFirstPortfolioCurrency

Long term lots are those held for 365 days or more; short term lots are those held for less than 365 days.

Long term tax lots with the highest cost (in either local or portfolio currency) are liquidated first. Once exhausted, short term lots with the highest cost (in either local or portfolio currency) are liquidated first.

MaximumLossMinimumGain

MaximumLossMinimumGainPortfolioCurrency

Tax lots are liquidated in the following hierarchy:

• Short term loss

• Long term loss

• Short term no gain/loss

• Long term no gain/loss

• Long term gain

• Short term gain

Within these groups, highest cost first applies, and then first in first out. Assessed using either local or portfolio currency.

ProRateByUnits

Units are removed from tax lots on a proportional basis, assessed on the tax lot units portion of total units.

ProRateByCost

ProRateByCostPortfolioCurrency

Units are removed from tax lots on a proportional basis, assessed on the tax lot cost portion of total cost (in either local or portfolio currency).