
Percentage Change Is Not Symmetric and That Breaks Dashboards
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 incr
Continue reading on Dev.to Beginners
Opens in a new tab




