Skip to content
All library documents

Calculating the Combined Effect of Sequential Discounts

Article Quant Q&A · Author: chif-ii

Summary

The document explains how to combine multiple percentage discounts applied one after another. Each discount reduces the price remaining after the previous discount, so the rates are not added directly. The example uses discounts of 50%, 20%, and 20%; the resulting price is 32% of the original, equivalent to a total discount of 68%.

The response calls this process compounding and sketches a recursive calculation that applies each rate to the remaining amount. It also notes that the same pattern appears in forward rates. The example conveys the arithmetic, but the document is about a furniture company’s pricing rather than a trading strategy or market analysis; it offers no broader financial modeling, empirical evidence, or discussion of rate conventions.

Key ideas

  • Sequential discounts apply to the remaining price rather than the original price.
  • The combined discount is found by multiplying the retained fractions and subtracting the result from one.
  • A recursive calculation can apply an arbitrary sequence of discounts.
  • The response describes this repeated multiplicative process as compounding.

Tags

Full text
# Compound Discounting(?)


# Compound Discounting(?)












I am a programmer interning at a small contract furniture company. This company receives multiple discounts from the manufacturers, and I am trying to calculate the end discount. For example, the first discount is 50%, the second discount is 20% off that price, and the third is 20% of that, then the total discount is 68%. They already have an Excel worksheet that calculates this, but I want to write a recursive function that can perform this calculation as many times as is necessary. My question is; what is this type of discounting called?

## Answer by user25064 (score 0, accepted)

https://quant.stackexchange.com/a/19064

This is in general simply referred to as compounding. In functional terms, consider the inefficient python code below

```
def total_discount(rates):
    return (1.0 - discount(1.0, rates))*100.0

def discount(original, rates):
    if len(rates) == 1:
        return (1.0-rates[0]/100.0)*original
    else:
        return (1.0-rates[0]/100.0)*discount(original, rates[1:])
```

This type of thing is often seen in forward rates.

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.