Many businesses need to manage the changes in sales volume which affect costs, specifically how costs and revenues affect profits. This chapter is about the cost volume profit (CVP) analysis and contribution margin analysis. The CVP analysis involves:
CVP income statement & contribution margin
CVP contribution margin per unit
CVP margin ratio
Break even analysis
contribution margin technique
Target operating income & margin of safety
Target operating income before/ after tax
Sales mix: Break even sales in units & dollars
Cost structure & operating leverage
Effect on: contribution margin ratio, break even point, margin of safety ratio and operating leverage
6.1 The CVP
Cost volume profit (CVP) is the study of effects that change in costs and volume have on a company’s profits. Knowing CVP analysis informs decisions of selling prices, determining product mix and maximizing the use of production facilities.
The CVP analysis has some assumptions, such as:
both costs and revenues are linear throughout the activity
all costs can be classified with reasonable accuracy as either variable or fixed
changes in activity are the only factors that affect costs
inventory levels stay constant (all units made are sold)
If products sold are > 1, Then the sales mix stays constant. (percentage of total sales for each product will stay the same)
These assumptions need to all be true in order to get an accurate CVP analysis
6.2 CVP: Income Statement
Cost volume profit income statement classifies costs as variable or fixed and calculates a contribution margin. A contribution margin (CM) is the amount of revenue that remains after variable costs have been deducted (stated as total amount and per-unit basis). This chapter example business is a video production company, the cost data is in a data dictionary.
6.2.1 CVP Break Even
The break even point is when the volume of sales matches the quantity of total costs, both variable and fixed, resulting in no income and no loss. Before deciding on introducing a new product or modifying the sales price, it is wise to know the break even analysis. Contribution margin per unit (cmpu).
operating income after tax = target income before tax x (1 - tax rate)
6.2.4 Contribution margin
required sales in units = (fixed costs + target income before tax) / contribution margin per unit
required sales in dollars = (fixed costs + target income before tax) / contribution margin ratio
6.2.5 Margin of Safety
The margin of safety is the difference between actual or expected sales and sales at the break even point, expressed as dollars, units or a ratio. The safety being that even if expected sales fail to be met, the break even range allows for management to have some neutral news. Sales are either actual or expected/
margin of safety in dollars = sales - break even sales
margin of safety ratio = (margin of safety in dollars) / sales
6.2.6 Sales Mix
The sales mix is the relative proportion in which each product is sold when a company sells more than 1 product. For example a company sells printers 80% of the time and 20% is for computers, making the sales mix 80 : 20. To find out the break even sales for a sales mix, the weighted average unit contribution margin of all products needs to be calculated.
a company sells 2 items: item 1 sales = 1500, item 2 sales = 500
Any level of units sold, operating income will be greater if higher contribution margin units are sold, rather than lower contribution margin units.
6.2.7 Break even sales
For large companies it is best to calculate the break even point in terms of sales dollars and not the number of units sold, using data from the product lines (not individual products).
Company has 2 divisions: division 1 and division 2, each division has hundreds of different products items.
division 1 = (contribution margin ratio x sales mix percentage)
division 2 = (contribution margin ratio x sales mix percentage)
`waucm ratio = division 1 + division 2
break even ($) = fixed costs / waucm
based on the break even point
sales mix: division 1 % : division 2 %
total break even sales k
division 1 total break even = (division 1 % x sales k)
division 2 total break even = (division 2 % x sales k)
If higher percentage were to occur in one division opposed to another, this would result in higher weighted average contribution margin ratio and a lower break even point.
6.3 CVP Function
This section will have the cost volume profit analysis in one function, and the function will take a cost data dictionary as an argument.
This function is so far is the biggest one, but all of the CVP analysis calculations are under one function. The company cost structure comparison is included, even though this operation could be done separately, it is included just for demonstration.
Show the code
def cvp_income_statement( cost_data: dict, target_income: int, tax_rate_percent: float): sales = cost_data['sales_Q1'] units = cost_data['units_sold'] price = sales / units total_var_exp =sum( cost_data['variable_costs'].values() ) total_fixed_exp =sum( cost_data['fixed_costs'].values() ) operating_income =0# contribution margin per unit = selling price - unit var costs cmpu = (cost_data['sales_Q1'] / cost_data['units_sold'] ) - (total_var_exp / units)# contribution margin contrib_margin = sales - total_var_exp# operating income op_income = contrib_margin - total_fixed_exp# contribution margin ratio cmr = (cmpu / (sales/units) )print("\n --- CVP Income Statement ---")print("Sales ....................................... {:,} units".format(units) )print("Sales total ................................ ${:,}".format(sales) )print("............. ${:,} per unit".format(price))print("Total variable expenses .................... ${:,}".format(total_var_exp))print("Contribution margin per unit ............... ${:,}".format(cmpu))print("Contribution margin ........................ ${:,}".format(contrib_margin))print("Contribution margin ratio .................. {:,}%".format(cmr *100))print(" (${:.2f} of every $1 can go to fixed costs & operating income)".format(cmr))print("Total fixed expenses ....................... ${:,}".format(total_fixed_exp))print("Operating income ........................... ${:,}".format(op_income))# ------ BREAK EVEN POINT break_even_units = total_fixed_exp / cmpu break_even_dollars = total_fixed_exp / cmrprint("\nBreak even point = {:,} units or ${:,}".format(break_even_units, break_even_dollars))#------- target operating income (before tax) (toi) toi = target_income required_sales_units = (total_fixed_exp + toi) / cmpu required_sales_dollars = (total_fixed_exp + toi) / cmrprint("\n--- Target Operating Income ----")print("Required sales (units) ..................... {:,}".format(required_sales_units))print("Required sales ............................. ${:,}".format(required_sales_dollars)) tax_rate = tax_rate_percent/100 op_income_post_tax = total_fixed_exp + toi / (1- tax_rate) req_sales_post_tax_units = op_income_post_tax / cmpu req_sales_post_tax_dollars = op_income_post_tax / tax_rateprint("Target operating income after taxes ................. ${:,}".format(op_income_post_tax ))print("Required sales after taxes .......................... {:,} units".format(req_sales_post_tax_units))print("Required sales after taxes .......................... ${:,} ".format(req_sales_post_tax_dollars))# --- margin of safety (mos) mos_dollars = sales - break_even_dollars mos_ratio = (mos_dollars) / salesprint("\n--- Margin of Safety ---")print("Margin of safety ..................... ${:,}".format(mos_dollars))print("Margin of safety ratio ............... {:,}%".format(mos_ratio *100))print("\n ====== Company Cost Structure - Comparison ======") contrib_margin_1 = cost_data['company_1']['sales'] - cost_data['company_1']['variable_costs'] contrib_margin_2 = cost_data['company_2']['sales'] - cost_data['company_2']['variable_costs']print("contribution margin (company 1) ................. ${:,}".format( contrib_margin_1))print("contribution margin (company 2) ................. ${:,}".format( contrib_margin_2)) contrib_margin_ratio_1 = contrib_margin_1 / cost_data['company_1']['sales'] contrib_margin_ratio_2 = contrib_margin_2 / cost_data['company_2']['sales']print("\ncontribution margin ratio (company 1) ............ {:,}".format( contrib_margin_ratio_1))print("contribution margin ratio (company 2) ............ {:,}".format( contrib_margin_ratio_2)) be_company1 = cost_data['company_1']['fixed_costs'] / contrib_margin_ratio_1 be_company2 = cost_data['company_2']['fixed_costs'] / contrib_margin_ratio_2print("\nBreak even point (company 1) .................. ${:,}".format( be_company1))print("Break even point (company 2) .................... ${:,}".format( be_company2))# margin of safety (mos) mos_ratio_1 = (cost_data['company_1']['sales'] - be_company1) / cost_data['company_1']['sales'] mos_ratio_2 = (cost_data['company_2']['sales'] - be_company2) / cost_data['company_2']['sales']print("\nMargin of safety ratio (company 1) ................. {:,}".format( mos_ratio_1))print("Margin of safety ratio (company 2) ................... {:,}".format( mos_ratio_2)) op_income_1 = contrib_margin_1 - cost_data['company_1']['fixed_costs'] op_income_2 = contrib_margin_2 - cost_data['company_2']['fixed_costs'] operating_leverage_1 = contrib_margin_1 / op_income_1 operating_leverage_2 = contrib_margin_2 / op_income_2print("\nDegree of operating leverage (company 1) .............. {:.2f}".format( operating_leverage_1))print("Degree of operating leverage (company 2) ................ {:.2f}".format( operating_leverage_2))# ---------------
Now call the CVP income statement function. The function’s arguments are the data dictionary, the target operation income and the tax rate as a percentage.
--- CVP Income Statement ---
Sales ....................................... 1,600 units
Sales total ................................ $800,000.0
............. $500.0 per unit
Total variable expenses .................... $480,000.0
Contribution margin per unit ............... $200.0
Contribution margin ........................ $320,000.0
Contribution margin ratio .................. 40.0%
($0.40 of every $1 can go to fixed costs & operating income)
Total fixed expenses ....................... $200,000.0
Operating income ........................... $120,000.0
Break even point = 1,000.0 units or $500,000.0
--- Target Operating Income ----
Required sales (units) ..................... 1,600.0
Required sales ............................. $800,000.0
Target operating income after taxes ................. $400,000.0
Required sales after taxes .......................... 2,000.0 units
Required sales after taxes .......................... $1,000,000.0
--- Margin of Safety ---
Margin of safety ..................... $300,000.0
Margin of safety ratio ............... 37.5%
====== Company Cost Structure - Comparison ======
contribution margin (company 1) ................. $320,000.0
contribution margin (company 2) ................. $640,000.0
contribution margin ratio (company 1) ............ 0.4
contribution margin ratio (company 2) ............ 0.8
Break even point (company 1) .................. $500,000.0
Break even point (company 2) .................... $650,000.0
Margin of safety ratio (company 1) ................. 0.375
Margin of safety ratio (company 2) ................... 0.1875
Degree of operating leverage (company 1) .............. 2.67
Degree of operating leverage (company 2) ................ 5.33
6.4 Cost Structure
Cost structure is the relative proportion of fixed verses variable costs that a company incurs, which has an impact on profits.
operating leverage is the level a company’s operating income reacts to a given change in sales.
Show the code
def cmr( dict ): company1 =list(dict['company1'].values()) company2 =list(dict['company2'].values())# contribution_margin / sales cmr_company1 = company1[2] / company1[0] cmr_company2 = company2[2] / company2[0]print("Contribution margin ratio (company 1) ......... {:,} ".format(cmr_company1))print("Contribution margin ratio (company 2) ......... {:,} ".format(cmr_company2))# break even point: 'fixed_costs' be_company1 = company1[3] / cmr_company1 be_company2 = company2[3] / cmr_company2print("\nBreak even point (company 1) ............ ${:,}".format(be_company1))print("Break even point (company 2) ............ ${:,}".format(be_company2))# margin of safety magin_safe_1 = (company1[0] - be_company1) / company1[0] magin_safe_2 = (company2[0] - be_company2) / company2[0]print("\nMargin of safety ratio (company 1) ............ {:,} ".format( magin_safe_1))print("Margin of safety ratio (company 2) ............ {:,} ".format( magin_safe_2))# operating leverage op_lev_1 = company1[2] / company1[-1] op_lev_2 = company2[2] / company2[-1]print("\nDegree of operating leverage (company 1) ........... {:.2f}".format(op_lev_1))print("Degree of operating leverage (company 2) ........... {:.2f}".format(op_lev_2))cmr( companies )
Contribution margin ratio (company 1) ......... 0.4
Contribution margin ratio (company 2) ......... 0.8
Break even point (company 1) ............ $500,000.0
Break even point (company 2) ............ $650,000.0
Margin of safety ratio (company 1) ............ 0.375
Margin of safety ratio (company 2) ............ 0.1875
Degree of operating leverage (company 1) ........... 2.67
Degree of operating leverage (company 2) ........... 5.33
For every 1 dollar of sales, company 2 makes 80 cents to contribution margin (added to operating income)
company 2 makes more in sales than company 1 (650,000 - 500,000 = 150,000)
the difference in margin of safety is that company 1 could manage a sales decline of 38% before seeing a operating loss, while the company 2 could only manage a 19% decline in sales before operating at a loss.
company 2 can lose or gain twice the sales than company 1 (5.33 / 2.67 = 2)
If both companies see a decrease, say 10% drop in sales, then company 1 would see 26.7% (2.67 x 10) and company 2 would see 53.3% (5.33 x 10).