Show the code
= {
phones 'investment': 1e6,
'rate_of_return': 0.25,
'target_units': 200e3,
'price': 20
}
Management have to make many decisions, one of the most important ones is setting prices. This chapter has 2 models for pricing; model for pricing goods sold or services provided to external parties, and other model is pricing for goods sold to internal company divisions. The pricing models include:
Factors that affect pricing:
pricing objectives
: gain market share, achieve a target rate of returndemand
: price sensitivity demographicsenvironment
: political reaction to prices, patent or copyright protectioncost considerations
: fixed and variable costs for short and long termThe laws of supply and demand affect the prices, in order to make profit the costs need to be controlled.
target cost
= market price - desired profitA phone manufacturer has done market research and learned that 200,000 units can be sold if the price is no more than $20. If new product of phone cases is to happen, an investment of 1 million dollars is required for equipment, with a minimum rate of return of 25% on all investments.
Store this information into a data dictionary
= {
phones 'investment': 1e6,
'rate_of_return': 0.25,
'target_units': 200e3,
'price': 20
}
Call the function
def target_costing( dict):
= dict['investment'] * dict['rate_of_return']
desired_profit = desired_profit / dict['target_units']
item_return = dict['price'] - item_return
target_cost
print("- Target Costing - ")
print("desired profit ................. ${:,}".format(desired_profit))
print("each item return of profit ..... ${:,}".format(item_return))
print("target cost per unit ........... ${:,}".format(target_cost))
target_costing( phones )
- Target Costing -
desired profit ................. $250,000.0
each item return of profit ..... $1.25
target cost per unit ........... $18.75
In the global competitive world of business, the price is often set by the market, and to obtain the desired profit the stronger emphasis is on target cost. Total cost plus pricing
is when companies that can set prices do so as a function of cost of the product or service.
markup (profit)
= selling price - costtarget selling price
= cost + (markup % * cost)A company that makes specialty pens, their data is in a dictionary. Specialty pen company incurs fixed manufacturing overhead of $280,000 and fixed selling & admin expenses of 240,000. The assumed units of production is 10,000. The company desires a return on investment of 20% and has invested 1 million dollars.
= {
pens 'direct_materials': 23,
'direct_labor': 17,
'var_manuf_overhead': 12, # manufacturing
'var_sell_admin': 8, # variable selling and admin expense
'var_cpu': 60, # variable cost per unit
'fixed_manuf_overhead': 280e3,
'fixed_sell_admin': 240e3,
'units_produced': 10e3,
'ROI': 0.20, # return on investment
'investment': 1e6 # $ invested
}
Call the function
def total_cost_pricing( dict ):
= dict['fixed_manuf_overhead'] / dict['units_produced']
fixed_manuf_cpu = dict['fixed_sell_admin'] / dict['units_produced']
fixed_sell_admin = round( fixed_manuf_cpu + fixed_sell_admin, 2)
fixed_cpu
= dict['ROI'] * dict['investment']
desired_roi = round( desired_roi / dict['units_produced'], 2)
markup_profit
= sum( list(dict.values())[:4])
var_cpu # print(var_cpu)
= var_cpu + fixed_cpu + markup_profit
total_cost = (var_cpu + fixed_cpu)
costs
= round(markup_profit / costs, 3)
markup_percent
= costs + (costs * markup_percent)
target_selling_price
print("- Total Cost plus Pricing - ")
print("fixed cost per unit ...................... ${:,}".format(fixed_cpu))
print("markup profit per unit ................... ${:,}".format(markup_profit ))
print("markup percentage ........................ {:,}%".format(markup_percent *100))
print("selling price per unit ................... ${:,}".format(total_cost))
print("target selling price per unit ............ ${:,}".format(total_cost))
print("expected income ROI ...................... ${:,}".format(desired_roi))
total_cost_pricing(pens)
- Total Cost plus Pricing -
fixed cost per unit ...................... $52.0
markup profit per unit ................... $20.0
markup percentage ........................ 17.9%
selling price per unit ................... $132.0
target selling price per unit ............ $132.0
expected income ROI ...................... $200,000.0
pens
dictionary for units produced then run the function.Absorption cost plus pricing
defines the cost base as the manufacturing cost, both variable and fixed selling & admin costs are excluded from the cost base. The markup profit is where companies earn their selling & admin costs along with target ROI.
Using the pens
data dictionary to calculate the manufacturing cost per unit
def absorption_cost_pricing( dict ):
= sum(list(dict.values())[:3])
costs = dict['fixed_manuf_overhead'] / dict['units_produced']
fixed_manuf_cpu = costs + fixed_manuf_cpu
total_manuf_cpu
= dict['var_sell_admin']
var_sell_admin = dict['fixed_sell_admin'] / dict['units_produced']
fixed_sell_admin # print(fixed_sell_admin)
= var_sell_admin + fixed_sell_admin
sell_admin_costs
= dict['ROI'] * dict['investment']
desired_roi = round( desired_roi / dict['units_produced'], 2)
markup_profit
= (markup_profit + sell_admin_costs) / total_manuf_cpu
markup_percent
= total_manuf_cpu + (markup_percent * total_manuf_cpu)
target_selling_price
# ----- income statement
= dict['units_produced'] * target_selling_price
revenue = dict['units_produced'] * total_manuf_cpu
cogs = revenue - cogs
gross_profit = dict['units_produced'] * (dict['var_sell_admin'] + fixed_sell_admin)
admin_expenses = revenue - cogs - admin_expenses
net_income
print("- Absorption Cost + Pricing -")
print("Total manufacturing cost per unit ..... ${:,}".format(total_manuf_cpu))
print("fixed selling & admin costs ........... ${:,}".format(sell_admin_costs))
print("desired ROI per unit .................. ${:,}".format(markup_profit))
print("markup profit percentage .............. {:.2f}%".format(markup_percent *100))
print("target selling price .................. ${:,}".format(target_selling_price))
print("\nAbsorption Cost Income Statement")
print(" Revenue ............................. ${:,}".format(revenue))
print(" Cost of goods sold .................. ${:,}".format(cogs))
print(" Gross profit ........................ ${:,}".format(gross_profit))
print(" selling & admin expenses ............ ${:,}".format(admin_expenses))
print(" net income .......................................... ${:,}".format(net_income))
absorption_cost_pricing( pens )
- Absorption Cost + Pricing -
Total manufacturing cost per unit ..... $80.0
fixed selling & admin costs ........... $32.0
desired ROI per unit .................. $20.0
markup profit percentage .............. 65.00%
target selling price .................. $132.0
Absorption Cost Income Statement
Revenue ............................. $1,320,000.0
Cost of goods sold .................. $800,000.0
Gross profit ........................ $520,000.0
selling & admin expenses ............ $320,000.0
net income .......................................... $200,000.0
Variable cost plus pricing
includes all variable costs involved with a product, even selling and admin costs. Fixed costs are excluded in the base, the markup needs to cover fixed costs and the ROI. This method is useful for short term decisions as fixed and variables costs are dealt with separately.
Using the same pens data dictionary
def variable_cost_pricing( dict ):
= sum(list(dict.values())[:4])
costs = dict['fixed_manuf_overhead'] / dict['units_produced']
fixed_manuf_cpu = dict['fixed_sell_admin'] / dict['units_produced']
fixed_sell_admin = dict['ROI'] * dict['investment']
desired_roi = desired_roi / dict['units_produced']
markup_profit
= ( markup_profit + (fixed_manuf_cpu + fixed_sell_admin)) / costs
markup_percent = costs + (markup_percent * costs)
target_selling_price
# ----- income statement
= dict['units_produced'] * target_selling_price
revenue = dict['units_produced'] * costs
var_costs = revenue - var_costs
contrib_margin = dict['units_produced'] * fixed_manuf_cpu
fixed_manuf_costs = dict['units_produced'] * fixed_sell_admin
sell_admin_costs = contrib_margin - fixed_manuf_costs - sell_admin_costs
net_income
print("- Variable Cost + Pricing -")
print("total variable costs per unit ............ ${:,}".format(costs))
print("fixed manufacturing cost per unit ........ ${:,}".format(fixed_manuf_cpu))
print("fixed selling & admin .................... ${:,}".format(fixed_sell_admin))
print("markup profit ............................ ${:,}".format(markup_profit))
print("markup percent ........................... {:.2f}%".format(markup_percent *100))
print("target selling price ..................... ${:,}".format(target_selling_price))
print("\nVariable Cost Income Statement")
print(" Revenue ............................. ${:,}".format(revenue))
print(" variable costs ...................... ${:,}".format(var_costs))
print(" contribution margin ................. ${:,}".format(contrib_margin))
print(" fixed costs manufacturing ........... ${:,}".format(fixed_manuf_costs))
print(" selling & admin costs ............... ${:,}".format(sell_admin_costs))
print(" net income .......................................... ${:,}".format(net_income))
variable_cost_pricing( pens )
- Variable Cost + Pricing -
total variable costs per unit ............ $60
fixed manufacturing cost per unit ........ $28.0
fixed selling & admin .................... $24.0
markup profit ............................ $20.0
markup percent ........................... 120.00%
target selling price ..................... $132.0
Variable Cost Income Statement
Revenue ............................. $1,320,000.0
variable costs ...................... $600,000.0
contribution margin ................. $720,000.0
fixed costs manufacturing ........... $280,000.0
selling & admin costs ............... $240,000.0
net income .......................................... $200,000.0
An air conditioning company has their data in a data dictionary, calculate the total cost per unit, determine the target selling price. Use 45% for markup profit on total cost per unit.
= {
air_condition 'direct_materials': 16,
'direct_labor': 18,
'var_manuf_overhead': 11,
'fixed_manuf_overhead': 10,
'var_sell_admin': 6,
'fixed_sell_admin': 10,
'markup_profit': 0.45
}
Simplified version of the variable cost function
def variable_cost_pricing2( dict ):
= sum(list(dict.values())[:-1] )
costs = dict['markup_profit'] * costs
cost_markup = costs + cost_markup
total_costs
print("- Variable Cost + Pricing -")
print("total cost per unit ............ ${:,}".format(costs))
print("target selling price ........... ${:,}".format(total_costs))
variable_cost_pricing2( air_condition )
- Variable Cost + Pricing -
total cost per unit ............ $71
target selling price ........... $102.95
Time and material pricing
method is when a company sets two pricing rates: 1) for labor (labor and employee costs) and 2) materials (direct parts & materials used, including loading charge for overhead costs). This method is often used in the service industry.
A Yacht repair shop is the company example, their data is in a dictionary.
= {
yacht 'time_charges': {
'mechanic_wages_benefits': 103500,
'manager_salary_benefits': 0,
'employee_salary_benefits': 20700,
'overhead': 26800
},'material_loading': {
'mechanic_wages_benefits': 0,
'manager_salary_benefits': 11500,
'employee_salary_benefits': 2300,
'overhead': 14400
},'work_hours': 5000,
'profit_margin': 8,
'profit_margin_percent': 0.2,
'invoice_cost': 120e3, # estimated cost parts & materials
'job': {'work_hours': 50, 'parts_materials': 3600}
}
A function to calculate labor charge, material loading charge and the charges for a particular job.
def pricing_services( dict ):
#------- 1 labor charge
= list(dict['time_charges'].values())
total_cost # print(total_cost)
= dict['work_hours']
total_hours = dict['profit_margin']
profit
= []
hourly for x in range( len(total_cost) ):
= total_cost[x] / total_hours
per_hr_charge
hourly.append(per_hr_charge)
= sum(total_cost) / total_hours
total_hourly_cost = profit + total_hourly_cost
labor_rate
# -- 2 material loading $
= list(dict['material_loading'].values())
material_load = dict['invoice_cost']
total_invoice
# print(material_load)
= material_load[1] + material_load[2]
staff_salary = staff_salary / total_invoice
staff_material_load = material_load[3] / total_invoice
overhead_material_load = (sum(material_load) / total_invoice)
total_material_load = dict['profit_margin_percent'] + total_material_load
total_load_percent
# -- 3 calculate $ for job
= round( dict['job']['work_hours'] * labor_rate, 2)
labor_charge = dict['job']['parts_materials']
cost_parts = (total_load_percent * cost_parts)
material_load_fee = cost_parts + material_load_fee
total_material_fee = labor_charge + total_material_fee
total_price
print(" - Pricing Services -")
print("total hourly cost ................. ${:,}".format( sum(total_cost) ))
print("mechanic wages & benefits (per hr) ........ ${:,}".format( hourly[0]))
print("employee wages & benefits (per hr) ........ ${:,}".format( hourly[2]))
print("other overhead (per hr) ................... ${:,}".format( hourly[3]))
print("total hourly cost (per hr) ................ ${:,}".format( total_hourly_cost ))
print("rate charged (per hr) for labor ........... ${:,}".format( labor_rate ))
print("\nMaterial loading charges ............ ${:,}".format( sum(material_load )))
print(" staff material load percent ................ {:.2f}%".format( staff_material_load *100))
print(" overhead material load percent ............. {:.2f}%".format( overhead_material_load *100))
print(" total overhead material load percent ....... {:.2f}%".format( total_material_load *100))
print(" total material load percent ........................ {:.2f}%".format( total_load_percent *100))
print("\nTime & Material Price Quotation ")
print("labor charge ......................... ${:,}".format(labor_charge))
print("material & parts, loading fee ........ ${:,}".format(total_material_fee))
print("total price of labor & material ......................... ${:,}".format(total_price))
# print(hourly)
Call the function
pricing_services( yacht )
- Pricing Services -
total hourly cost ................. $151,000
mechanic wages & benefits (per hr) ........ $20.7
employee wages & benefits (per hr) ........ $4.14
other overhead (per hr) ................... $5.36
total hourly cost (per hr) ................ $30.2
rate charged (per hr) for labor ........... $38.2
Material loading charges ............ $28,200
staff material load percent ................ 11.50%
overhead material load percent ............. 12.00%
total overhead material load percent ....... 23.50%
total material load percent ........................ 43.50%
Time & Material Price Quotation
labor charge ......................... $1,910.0
material & parts, loading fee ........ $5,166.0
total price of labor & material ......................... $7,076.0
When companies transfer goods internally the price they use to record the transfer between 2 divisions is the transfer price
. The price charged for intermediate goods is the cost of goods sold to the buying division and the revenue for the selling division.
There are some price transfer objectives:
General transfer pricing formula
transfer price
= variable cost per unit + opportunity costsA bike manufacturing company data, assembly division and manufacturing divisions.
= {
bike 'assembly_division': {
'selling_price': 290,
'var_cost_assembly': 200
},'manufacture_division': {
'selling_price': 130,
'var_cost_manuf': 95
} }
Call the function
def transfer_pricing( dict ):
# assembly
= list( dict['assembly_division'].values())
assembly = list( dict['manufacture_division'].values())
manufacture
= assembly[0] - assembly[1]
assembly_contrib_margin = manufacture[0] - manufacture[1]
manuf_contrib_margin = assembly_contrib_margin + manuf_contrib_margin
total_contrib_margin
# -- manuf div
= manuf_contrib_margin + manufacture[1]
manuf_min_price
# - Excess Capacity , no opportunity costs
= 0
opportunity_cost = manufacture[1] + opportunity_cost
capcity_min_price
print("- Transfer Pricing - ")
print("Assembly contribution margin ......... ${:,}".format(assembly_contrib_margin))
print("Manufacture contribution margin ...... ${:,}".format(manuf_contrib_margin))
print("Total contribution margin ............ ${:,}".format(total_contrib_margin))
print("min. transfer price to manufacturing ............ ${:,}".format(manuf_min_price))
if manuf_min_price >= total_contrib_margin:
print("\nGoal Congruence: (no excess capacity) ",'\u2705')
if capcity_min_price <= manuf_min_price:
print("Goal Congruence: (excess capacity) ",'\u2705')
transfer_pricing( bike )
- Transfer Pricing -
Assembly contribution margin ......... $90
Manufacture contribution margin ...... $35
Total contribution margin ............ $125
min. transfer price to manufacturing ............ $130
Goal Congruence: (no excess capacity) ✅
Goal Congruence: (excess capacity) ✅
A boot company data will be used for negotiated transfer price
between division managers.
= {
boots 'assembly_division': {
'selling_price': 90,
'var_cost_manuf': 35,
# cost of sole purchased from outside suppliers
'cost_outside_suppliers': 17
},'manufacture_division': {
'selling_price': 18,
'var_cost_per_sole': 11
} }
The function to calculate contribution margins
def transfer_pricing2( dict ):
# assembly (division 1)
= list( dict['assembly_division'].values())
assembly # manufacturing (division 2)
= list( dict['manufacture_division'].values())
manufacture
= assembly[0] - assembly[1] - assembly[2]
assembly_contrib_margin = manufacture[0] - manufacture[1]
manuf_contrib_margin = assembly_contrib_margin + manuf_contrib_margin
total_contrib_margin
# -- manuf div
= manuf_contrib_margin + manufacture[1]
manuf_min_price # print(manuf_min_price) # 18
# -- no excess capacity
# variable cost + opportunity cost = min transfer price
= assembly[2] # 17
opportunity_cost # print(opportunity_cost)
# - Excess Capacity , no opportunity costs
# variable cost + opportunity cost = min transfer price
= 0
opportunity_cost2 = manufacture[1] + opportunity_cost2
capacity_min_price
print("- Transfer Pricing Methods - ")
print("Assembly contribution margin ......... ${:,}".format(assembly_contrib_margin))
print("Manufacture contribution margin ...... ${:,}".format(manuf_contrib_margin))
print("Total contribution margin ............ ${:,}".format(total_contrib_margin))
if manuf_min_price >= total_contrib_margin:
print("\nGoal Congruence: (no excess capacity) ",'\u2705')
if opportunity_cost <= manuf_min_price:
print(f"\nno transfer deal (no excess capacity)\n :: Assembly (buyer) ${opportunity_cost} < Manufacturing (seller) ${manuf_min_price}")
if capacity_min_price <= opportunity_cost :
print("\nGoal Congruence: (excess capacity) ",'\u2705')
print(f"\ttransfer price range: ${capacity_min_price} to ${opportunity_cost}" )
transfer_pricing2(boots)
- Transfer Pricing Methods -
Assembly contribution margin ......... $38
Manufacture contribution margin ...... $7
Total contribution margin ............ $45
no transfer deal (no excess capacity)
:: Assembly (buyer) $17 < Manufacturing (seller) $18
Goal Congruence: (excess capacity) ✅
transfer price range: $11 to $17
Using a boot company example and comparing 2 transfer prices that include tax rates. The company data is in 2 data dictionaries.
= {
boot1 'division1': {
'selling_price': 90,
'var_cost_manuf': 35,
'cost_item_internally': 18, # cost of item purchased internally
'tax_rate': 0.10
},'division2': {
'selling_price': 18,
'var_cost_per_item': 11,
'tax_rate': 0.30
}
}
= {
boot2 'division1': {
'selling_price': 90,
'var_cost_manuf': 35,
'cost_item_internally': 11, # cost of item purchased internally
'tax_rate': 0.10
},'division2': {
'selling_price': 11,
'var_cost_per_item': 11,
'tax_rate': 0.30
} }
Function
def transfer_divisions( dict1: dict, dict2: dict):
# --- dict 1 -- div 1
= list(dict1['division1'].values())
div1_1 # print(div1)
= div1_1[0] - div1_1[1] - div1_1[2]
before_tax_contrib_margin11 = before_tax_contrib_margin11 * div1_1[-1]
tax_11 = before_tax_contrib_margin11 - tax_11
post_tax_contrib_margin1
# --- dict1 -- div 2
= list(dict1['division2'].values())
div1_2 # print(div1_2)
= div1_2[0] - div1_2[1]
before_tax_contrib_margin12 = before_tax_contrib_margin12 * div1_2[-1]
tax_12 = before_tax_contrib_margin12 - tax_12
post_tax_contrib_margin2 = before_tax_contrib_margin11 + before_tax_contrib_margin12
total_before_tax_1 = post_tax_contrib_margin1 + post_tax_contrib_margin2
total_post_tax_1
# -- dict 2 - 1
= list(dict2['division1'].values())
div2_1 # print(div2_1)
= div2_1[0] - div2_1[1] - div2_1[2] # 44
before_tax_contrib_margin21 = before_tax_contrib_margin21 * div2_1[-1] # 4.4
tax_21 = before_tax_contrib_margin21 - tax_21 # 39.6
post_tax_contrib_margin3
# # -- dict 2 - 2
= list(dict2['division2'].values())
div2_2 = div2_2[0] - div2_2[1] # 0
before_tax_contrib_margin22 = before_tax_contrib_margin22 * div2_2[-1] # 0
tax_22 = before_tax_contrib_margin22 - tax_22 # 0
post_tax_contrib_margin4 = before_tax_contrib_margin21 + before_tax_contrib_margin22
total_before_tax_2 = post_tax_contrib_margin3 + post_tax_contrib_margin4
total_post_tax_2
print("-- Transfers: Divisions & Countries --")
print("Transfer Price 1")
print("After tax contribution margin (div 1)....... ${:,}".format(post_tax_contrib_margin1))
print("After tax contribution margin (div 2)....... ${:,}".format(post_tax_contrib_margin2))
print("Before total tax contribution margin to company ...... ${:,}".format(total_before_tax_1))
print("After total tax contribution margin to company ...... ${:.2f}".format(total_post_tax_1))
print("\nTransfer Price 2")
print("After tax contribution margin (div 1)....... ${:,}".format(post_tax_contrib_margin3))
print("After tax contribution margin (div 2)....... ${:,}".format(post_tax_contrib_margin4))
print("Before total tax contribution margin to company ...... ${:,}".format(total_before_tax_2))
print("After total tax contribution margin to company ...... ${:.2f}".format(total_post_tax_2))
print("\n:: whichever transfer price is lower",'\u25C0')
transfer_divisions( boot1, boot2)
-- Transfers: Divisions & Countries --
Transfer Price 1
After tax contribution margin (div 1)....... $33.3
After tax contribution margin (div 2)....... $4.9
Before total tax contribution margin to company ...... $44
After total tax contribution margin to company ...... $38.20
Transfer Price 2
After tax contribution margin (div 1)....... $39.6
After tax contribution margin (div 2)....... $0.0
Before total tax contribution margin to company ...... $44
After total tax contribution margin to company ...... $39.60
:: whichever transfer price is lower ◀
Transfer pricing example, a clock manufacturer company. Packaging costs of 50 cents can be saved by having internal company sales, and 8,000 units are to be transferred from one division to another. If manufacturer is not operating at full capacity, then the opportunity cost is $0.
= {
clocks 'customer_price': 10,
'var_cost': 4,
'fixed_cost': 2.5,
'units_transfer': 8000,
'internal_price': 5,
'packaging_cost': 0.5
}
function
def transfer_pricing3( dict ):
= dict['var_cost'] - dict['packaging_cost']
variable_cost = 0
opportunity_cost_1 = variable_cost + opportunity_cost_1
min_transfer_price
= dict['customer_price'] - dict['var_cost']
opportunity_cost_2 = variable_cost + opportunity_cost_2
transfer_price2
print("internal sales variable cost = ${:,}".format(variable_cost))
print("minimum transfer price (no opportunity costs) = ${:,}".format(min_transfer_price))
print("minimum transfer price (full opportunity costs) = ${:,}".format(transfer_price2))
transfer_pricing3( clocks )
internal sales variable cost = $3.5
minimum transfer price (no opportunity costs) = $3.5
minimum transfer price (full opportunity costs) = $9.5