Documentation Index

Fetch the complete documentation index at: https://support.lusid.com/llms.txt

Use this file to discover all available pages before exploring further.

What are the supported tax lot accounting methods?

Prev Next

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

Note: Tax lot methods only apply to security holdings. Cash holdings are always depleted on an average cost basis.

By default, a security holding in a 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 gain/loss for transactions that contribute to a decrease in the holding.

The default tax lot 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.

Note the following:

  • A tax lot method set for a portfolio applies to all transactions loaded into that portfolio unless overridden at a more granular level for a transaction type, custodian account or individual transaction. More information.

  • You can replace (or partially replace) the depletion methodology of the incumbent tax lot method by adding the Transaction/default/PriorityTaxLots system property to a transaction in order to dispose of particular tax lots as a priority.

For a detailed exploration of tax lots, examine this Jupyter Notebook.

Comparing the AverageCost and FirstInFirstOut tax lot 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 tax lot method

FirstInFirstOut tax lot 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 providing 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 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 depleted first.

LastInFirstOut

The newest tax lots are depleted first.

HighestCostFirst

HighestCostFirstPortfolioCurrency

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

LowestCostFirst

LowestCostFirstPortfolioCurrency

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

IntraDayThenFirstInFirstOut

Tax lots purchased within 12 hours before the effective date are depleted first, then first in first out (that is, the oldest of the remaining tax lots are depleted first).

LongTermHighestCostFirst

LongTermHighestCostFirstPortfolioCurrency

Long term lots are those purchased one year or more before the effective date; short term lots are those purchased less than one year before the effective date.

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

MaximumLossMinimumGain

MaximumLossMinimumGainPortfolioCurrency

Tax lots are depleted in the following order:

  1. Short term loss

  2. Long term loss

  3. Short term break-even

  4. Long term break-even

  5. Long term gain

  6. 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).

How does LUSID resolve tax lot tie-breaks?

Most tax lot methods need a way to choose between two or more lots that are equally eligible for disposal, such as when two lots share the same purchase date, or the same unit cost. AverageCost, ProRateByUnits, ProRateByCost and ProRateByCostPortfolioCurrency never face this problem, since they don't select individual lots.

Where a method's own selection criteria don't resolve a tie, LUSID falls back to tax lot insertion order: the lot with the earliest effective date and time is depleted first, and if two lots share the same effective date and time, the lot booked earlier that day is depleted first. Note that “effective date” here always means a specific date and time, not just a calendar date.

The table below sets out, for each method, what causes a tie and how LUSID resolves it.

Method

Cause of a tie

How LUSID resolves it

AverageCost

N/A

All transactions are aggregated into a single average-cost lot, so there's never more than one lot to choose between.

FirstInFirstOut

Two or more lots share the same purchase date

LUSID depletes the earliest-dated lot first. If dates are equal, it falls back to insertion order.

LastInFirstOut

Two or more lots share the same purchase date

LUSID depletes the most recently-dated lot first. If dates are equal, it falls back to insertion order – this is not reversed, so the lot booked earlier that day is still depleted first.

HighestCostFirst

HighestCostFirstPortfolioCurrency

Two or more lots share the same signed unit cost

LUSID depletes the highest-cost lot first. If costs are equal, it falls back to insertion order.

LowestCostFirst

LowestCostFirstPortfolioCurrency

Two or more lots share the same signed unit cost

LUSID depletes the lowest-cost lot first. If costs are equal, it falls back to insertion order.

ProRateByUnits

N/A

The disposal is allocated proportionally across all open lots by units, so lot order is irrelevant.

ProRateByCost

ProRateByCostPortfolioCurrency

N/A

The disposal is allocated proportionally across all open lots by cost, so lot order is irrelevant.

LongTermHighestCostFirst

LongTermHighestCostFirstPortfolioCurrency

Two lots fall in the same term bucket and share the same signed unit cost

LUSID depletes long-term lots before short-term lots. Within a bucket, it depletes the highest-cost lot first. If costs are also equal, it falls back to insertion order.

IntraDayThenFirstInFirstOut

Two lots fall in the same intraday bucket and share the same purchase date

LUSID depletes intraday lots (those purchased within 12 hours before the effective date) before non-intraday lots. Within a bucket, it depletes the earliest-dated lot first. If dates are also equal, it falls back to insertion order.

MaximumLossMinimumGain

MaximumLossMinimumGainPortfolioCurrency

Two lots fall in the same gain/loss level

LUSID depletes lots in this order: short-term loss, long-term loss, short-term break-even, long-term break-even, long-term gain, short-term gain. Within a level, it depletes the highest-cost lot first, then the earliest-dated lot, then falls back to insertion order.