A 50 percent increase followed by a 50 percent decrease does not return to the original value. 100 becomes 150 becomes 75. This asymmetry is the source of more dashboard bugs and misleading charts than any other mathematical property.
The asymmetry problem
Start: 100
+50%: 150
-50%: 75
You do not return to 100. The reason is mathematical: a 50% increase multiplies by 1.5. A 50% decrease multiplies by 0.5. The product is 1.5 * 0.5 = 0.75, not 1.0.
To return from 150 to 100, you need a 33.3% decrease, not a 50% decrease. The inverse of a 50% increase is a 33.3% decrease. The inverse of an X% increase is X/(1+X/100) percent decrease.
function percentageChange(oldValue, newValue) {
return ((newValue - oldValue) / Math.abs(oldValue)) * 100;
}
function inverseChange(percentChange) {
const factor = 1 + percentChange / 100;
return ((1 / factor) - 1) * 100;
}
// 50% increase requires what decrease to return?
inverseChange(50); // -33.33%
// 33% decrease requires what increase to return?
inverseChange(-33); // 49.25%
Why this breaks dashboards
Dashboard designers display percentage changes assuming symmetry. A chart showing "+50%" in green and "-50%" in red implies equal magnitude in opposite directions. They are not equal. The negative change has a larger absolute impact.
This matters for:
- Stock returns (a 50% loss requires a 100% gain to break even)
- Revenue reporting (year-over-year changes are not symmetric)
- A/B test analysis (a 20% improvement from baseline is not undone by a 20% decrease)
Compound percentage changes
When chaining multiple percentage changes:
function compoundChange(...changes) {
const factor = changes.reduce((acc, change) => acc * (1 + change / 100), 1);
return (factor - 1) * 100;
}
compoundChange(10, -5, 15, -8); // Not 12%. Actually 11.09%
The individual changes do not add up because each subsequent change applies to the result of the previous one, not the original value.
For calculating percentage changes with proper handling of asymmetry and compounding, I built a calculator at zovo.one/free-tools/percentage-change-calculator. It shows both the change percentage and the inverse change needed to return to the original value.
I'm Michael Lip. I build free developer tools at zovo.one. 500+ tools, all private, all free.
Top comments (0)