Back to blog
TaxCost basisInvesting in FrancePFU

Weighted average cost: why you do not choose which shares you sell in France

French capital gains on a partial sale are computed on the weighted average purchase price, not on the shares bought first. What that changes on your tax bill, with a worked example.

·6 min read
⚠ Disclaimer : Articles published on IgniFI are provided for informational and educational purposes only. They do not constitute investment advice, a financial recommendation, or an incentive to buy or sell financial assets or instruments. All investments carry risk, including partial or total loss of invested capital. Past performance does not predict future results. Consult a qualified financial advisor before making any investment decision. When an article names a financial instrument, it is to illustrate verifiable characteristics (index tracked, replication method, ongoing charges), never as a selection or an invitation to buy it. IgniFI holds no position in the instruments mentioned, receives no payment from any issuer, broker or distributor, and has no partner paid to be featured. None of these articles is tailored to an individual situation: they are published identically for every reader.

You bought the same share at three different moments, at three different prices. You now sell part of the position. Simple question: which shares did you just sell?

Many investors answer "the oldest ones", by analogy with clearing stock. Others assume they can designate the most expensive ones to shrink the taxable gain. In France, neither. You do not choose, and neither does the tax office: it applies an average.

The rule, in one sentence

For securities, article 150-0 D, 3 of the French tax code imposes the weighted average purchase price. Every acquisition of the same security is melted into a single average unit price, and that price is the basis for every sale, whatever the original lot.

Put differently: there is no first-in-first-out in French securities taxation, and no picking a lot either. The question "which shares did I sell" has no meaning here. There is one holding, at one average price.

How the weighted average is computed
  1. 1Add the amounts

    Everything actually paid out across all your acquisitions of the security, purchase fees included.

  2. 2Add the quantities

    The total number of units held, all acquisitions combined.

  3. 3Divide

    Total amount over total quantity: that is the weighted average unit price.

  4. Apply it to the sale

    Gain = proceeds minus (weighted average price × quantity sold).

Acquisition costs (brokerage, FX) belong in the cost basis. Selling costs are deducted from the sale proceeds instead. Leaving either out inflates the gain you declare.

The example that makes the difference visible

Take a position built in two steps:

  • 10 units bought at €50, so €500
  • 10 units bought at €150, so €1,500

You hold 20 units for €2,000 paid out. The weighted average price is therefore €100 per unit.

You sell 10 of them at €200, so €2,000 received. Here is the taxable gain under the methods one might have imagined, and under the one that actually applies.

Taxable gain on the same sale, by method

Selling 10 units at €200 after two purchases of 10 units at €50 then €150. Only the middle column exists in French law for securities. The other two are shown to size the gap, not as an option. Tax computed at the 30% flat rate, before allowances and special cases.

The gap between the two extremes is €300 of tax on a single €2,000 transaction. On a portfolio fed monthly for ten years, getting the method wrong stops being a matter of hundreds of euros.

Three practical consequences

Buying at a high does not penalise you in isolation. It lifts the average price of the whole position, so it reduces the gain on every future sale of that security. The red line you glare at in your app is quietly working for you at declaration time.

Selling "the losing part" does not exist. It is a common manoeuvre elsewhere; here it is moot. On a given security, every sale carries the same average cost, to the cent.

The average recomputes on every purchase, never on a sale. A sale reduces the quantity and leaves the average untouched. That is counter-intuitive, and it is the most common mistake when the tracking is done by hand in a spreadsheet.

Crypto, which follows an entirely different logic

For digital assets the rule is not a per-line average but a whole-portfolio formula, in article 150 VH bis of the same code. The gain on a disposal is the proceeds minus the share of your total acquisition cost proportional to what the sale represents in the global portfolio value at the time of the transaction.

In practice that means selling bitcoin pulls the value of your ethereum on the same day into the calculation. It is a completely different mechanism from securities, and it is why crypto tracking cannot live in the same table as equity tracking.

Where IgniFI fits in

IgniFI keeps the weighted average price of every position current as you enter your transactions, acquisition fees included, and recomputes it on each purchase without you having to think about it. That same average price is what feeds the unrealised gain shown on each holding.

None of this replaces your tax return or your adviser: special cases exist, and there are many. But on the day a form has to be filled in, having the right cost basis in front of you rather than reconstructing it from memory changes the nature of the exercise.

Take action

Track your net worth, calculate your FIRE date, and run simulations. For free.

Create my free account →