Profitability Analysis for Apple Inc.

MSIN0094 Case Study

Author
Affiliation

Dr. Wei Miao

UCL School of Management

Published

October 1, 2025

Pre-class exercise from last week

Please complete the following exercises on your RStudio before class. The answer sheet is named _Case-BreakEvenAnalysis-stu.qmd, which can be found on Moodle.

Solutions can be found here. Please check your answers with the solutions before class.

Create a sequence of {1,1,2,2,3,3,3}.

In R, the c() function is used to combine values into a vector or list. For this exercise, we can either manually create the sequence by listing all the numbers, or we can use the rep() function, which replicates elements of a vector.

Code
# solution 1
c(1, 1, 2, 2, 3, 3, 3)
[1] 1 1 2 2 3 3 3
Code
# solution 2, use rep() to repeat the same value multiple times
c(rep(1, 2), rep(2, 2), rep(3, 3))
[1] 1 1 2 2 3 3 3

Create a geometric sequence {2,4,8,16,32} using seq().

hint: this is a geometric sequence. We have learned that with seq() we can generate an arithmetic sequence. Therefore, the key to solving the question is how you can link a geometric sequence with a arithmetic sequence.

A geometric sequence is a sequence of numbers where each term after the first is found by multiplying the previous one by a fixed, non-zero number called the common ratio. In this case, since we need to create a sequence of powers of 2, we can generate a simple arithmetic sequence from 1 to 5 and then use it as the exponent.

Code
# solution 1
2^c(1, 2, 3, 4, 5)
[1]  2  4  8 16 32
Code
# solution 2, use the formula for a geometric sequence
2^seq(1, 5, 1)
[1]  2  4  8 16 32

Create a vector of 10 numbers from 1 to 10, and extract the 2nd, 4th, and 6th elements.

There are several ways to create a vector of numbers from 1 to 10. The most straightforward is to use the : operator, but seq() and c() can also be used. To extract specific elements from the vector, we use square brackets [] with a vector of indices.

Code
# create a vector of 10 numbers from 1 to 10; 3 solutions
x <- 1:10
x <- seq(1, 10, 1)
x <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

# extract the 2nd, 4th, and 6th elements
# use [] to extract the 2nd, 4th, and 6th elements
x[c(2, 4, 6)]
[1] 2 4 6

Create a vector of 5 numbers from 1 to 5, and check if 3 is in the vector.

To check if a specific value exists in a vector, we can use the %in% operator. This operator returns a logical vector indicating if there is a match or not for its left operand.

Code
# create a vector of 5 numbers from 1 to 5
x <- 1:5
x <- seq(1, 5, 1)
x <- c(1, 2, 3, 4, 5)

# check if 3 is in the vector
3 %in% x
[1] TRUE

Now the interest rate is 0.1, and you have 1000 pounds in your bank account. Calculate the amount in your bank account after 1 year, 2 years, and 3 years, respectively.

To calculate the future value of an investment, we can use the formula FV = PV(1 + r)^n, where FV is the future value, PV is the present value, r is the interest rate, and n is the number of compounding periods. In this exercise, we can create a vector for the years from 1 to 3 to calculate the amount for each year.

Code
# solution
interest_rate <- 0.1
initial_amount <- 1000
N <- 3

# use the formula A = P(1 + r)^n
initial_amount * (1 + interest_rate)^(1:N)
[1] 1100 1210 1331

1 Situation Analysis

Tom, the newly promoted Senior Marketing Manager of Apple UK, felt a rush of nostalgia as he stepped into the lecture theatre on Level 38 of the UCL School of Management. Having graduated from UCL’s esteemed MSc Business Analytics programme, the world’s best BA programme, coming back felt like reuniting with an old friend. But the actual magnet pulling him back wasn’t just academic—it was the T4 Bubble Tea in Jubilee Place. After all, everyone has their little secrets, right?

Tom was looking to launch a series of marketing campaigns to further promote Apple’s new product, the iPhone 17 series, together with other new products launched earlier this month. As Tom remembered from Marketing Analytics’s Week 1 class, the first step of a marketing campaign is the 5C analysis—a framework that examines Company, Collaborators, Customers, Competitors, and Climate to understand the business environment. For Apple UK, this analysis is essential to identify market opportunities, assess competitive threats, and tailor marketing strategies to the UK’s unique regulatory and consumer landscape. So Tom would like to conduct a 5C situation analysis for Apple:

Conduct a 5C situation analysis for Apple Inc. Think about the difference when compared with Uber.

  • Company: Apple Inc. is a multinational technology company that designs, manufactures, and markets consumer electronics, computer software, and online services. Apple is one of the Big Tech companies, alongside Amazon, Google, Facebook, and Microsoft. Apple’s products include the iPhone, iPad, Mac, Apple Watch, and Apple TV. Apple’s services include Apple Music, Apple TV+, Apple Arcade, and Apple News+.

  • Collaborators: Apple collaborates with a wide range of partners, including suppliers, manufacturers, developers, and retailers. Apple’s suppliers include Foxconn, TSMC, and Samsung. Apple’s manufacturers include Foxconn, Pegatron, and Wistron. Apple’s developers include third-party app developers and content creators. Apple’s retailers include Apple Stores, Apple Authorized Resellers, and Apple Premium Resellers.

  • Customers: Apple’s customers are consumers, businesses, and educational institutions. Apple’s consumer customers are individuals who purchase Apple products for personal use. Apple’s business customers are organizations that purchase Apple products for professional use. Apple’s educational customers are schools and universities that purchase Apple products for educational use.

  • Competitors: Apple’s direct competitors are other technology companies that design, manufacture, and market consumer electronics, computer software, and online services. Apple’s competitors in terms of smart device making include Samsung, Huawei, Xiaomi, etc. Apple’s competitors in terms of software and services include Google, Microsoft, Amazon, etc.

  • Climate: Apple operates in a dynamic and competitive environment. Its industry is characterised by rapid technological change, changing consumer preferences, and evolving regulatory requirements. Apple’s industry is also characterised by intense competition, high barriers to entry, and significant economies of scale. A notable regulation change is the EU’s new regulation on app distribution platforms, which may impact Apple’s App Store revenue.

2 Break-Even Analysis

The marketing analytics team at Apple Inc had applied predictive analytics models on historical sales data for previous years and market survey this year and predicted that the sales this year will reach 10 million units at the retail price of £799, with the usual marketing activities. The team had also collected the information on the Cost of Goods Sold of iPhone 17, which is 47%.

The total Research and Development (R&D) costs for iPhone 17 is 100 million pounds. These substantial R&D investments encompass key innovations including the A19 Pro chip with enhanced Neural Engine capabilities, Apple Intelligence features with on-device AI and Live Translation, advanced camera system with three 48MP Fusion cameras and tetraprism telephoto design, thermal management with Apple-designed vapour chamber, and iOS 26 with Liquid Glass design elements.

We first assign the given values to variables in R based on the information provided.

Code
price <- 799 # retail price of iPhone 17 in £
quantity <- 10 # sales quantity in million units
endorsement_fee <- 100 # endorsement fee in million pounds
endorsement_sales_increase <- 0.025 # sales increase percentage due to endorsement
COGS <- 0.47 # cost of goods sold; 47% of retail price, i.e., 47% of £799
RD_costs <- 100 # R&D costs in million pounds
monthly_sales_increase_1stmonth <- 0.003 # sales increase percentage in the first month
monthly_sales_increase_after <- 0.002 # sales increase percentage in the following months
WACC <- 0.1 # weighted average cost of capital

Contribution Margin: In the world of business, the contribution margin is a “fancy” way of expressing how much profit each unit brings in after accounting for variable costs. Can you help Tom and his team at Apple to crunch these numbers for the iPhone 17?

  1. Based on the information at hand, in R, create 2 variables called price and COGS with the given values.

  2. Calculate the contribution margin per unit, contribution_margin, using the formula learned in class.

In this case study, the contribution margin per unit is calculated as follows:

\[ \text{Contribution Margin Per Unit} = \text{Price Per Unit} - \text{Variable Costs Per Unit} \]

where:

  • Price per unit: retail price customers pay

  • Variable costs per unit: Cost of Goods Sold (COGS) in our context

Given the information provided, the contribution margin per unit for the iPhone 17 is:

Code
# compute the contribution margin
contribution_margin <- price - price * COGS
contribution_margin
[1] 423.47

In the class Tom sat in, the module leader, Dr Meow, was introducing the concepts of break-even analysis and the methods to evaluate the feasibility of a marketing campaign, which was just handy for the task. Tom would like to use the concept of break-even analysis to help guide Apple Inc.’s marketing decisions.

Calculating the break-even quantity is one way to determine the feasibility of a marketing campaign. The break-even quantity determines how many incremental units the company must sell to cover the expense of the campaign. If the business sells fewer than the break-even quantity, it loses money since it does not sell enough to recover its investment. If the company sells more than the break-even quantity, the marketing campaign can be approved as it is profitable to the company.

After a few months of researching, the marketing analytics team under Tom’s lead has come up with several marketing campaign proposals for Tom to decide. Tom, taking another sip of the delicious QQ Style Milk Tea1, started to review the proposals.

2.1 Marketing Decision: A Static View

The marketing analytics team has proposed a plan of an influencer marketing campaign. Influencer marketing is a type of social media marketing that entails endorsements and product placement by influencers, individuals and organisations with a reputed expert degree of knowledge or social influence in their industry. Influencers are individuals who have the ability to influence others’ purchasing habits other quantifiable activities by uploading original—often sponsored—content to social media platforms such as TikTok, Instagram, YouTube, Snapchat, or other social media platforms.

The team proposes to collaborate with both celebrities and the top tech influencers on Tiktok, Instagram, and Youtube to promote the new iPhone 17. The total one-off budget for the endorsement fee is £100 million.

And from historical data, the team estimates that such an influencer campaign can boost the total sales within the next financial year by 2.5%.

Based on the information at hand, should Tom approve the influencer marketing plan?

To decide whether Tom should approve the marketing plan, we need to conduct break-even analyses.

The first step is to compute the break-even quantity, as shown in the following code.

Code
# numerator is the marketing expense
# denominator is the "extra profit", or the contribution margin, from selling one more unit
BEQ <- endorsement_fee / contribution_margin
BEQ
[1] 0.2361442

The next step is to compare BEQ with the estimated incremental sales from the campaign.

Code
# check if incremental sales is greater than BEQ
incremental_sales <- quantity * endorsement_sales_increase

print(paste("Incremental sales: ", incremental_sales, " million units"))
[1] "Incremental sales:  0.25  million units"
Code
if (incremental_sales > BEQ) {
    print("It is profitable to continue with the influencer marketing campaign.")
} else {
    print("It is not profitable to continue with the influencer marketing campaign.")
}
[1] "It is profitable to continue with the influencer marketing campaign."

BEQ is 0.2361442 million units, which means in order not to lose any money, the influencer marketing campaign needs to bring in additional 0.2361442 million units;

In reality, the company can actually sell 0.25 million units, so it’s profitable to continue with the influencer marketing campaign.

Therefore, based on the above reasoning, Tom should approve the influencer marketing campaign.

TipSales

In this module (and in practice), when we talk about sales, we mean the quantity sales, the number of units sold. For instance, in the case study, the original sales without influencer marketing is 10 million units.

The total money made is often called revenue or revenue sales. For instance, in the case study, the original revenue is 6000 million pounds.

2.2 Marketing Decision: A Dynamic View

In the afternoon, during a board meeting, the CFO reported that the company was facing increasing uncertainty regarding future cash flows due to more strict EU regulations on Apple. Specifically, since mid-September, alternative app distribution platforms have been allowed on Apple’s devices, which may lead to a significant decrease in Apple’s App Store revenue. Meanwhile, the good news is that the Bank of England has announced a 0.5% decrease in the base interest rate, which will reduce the cost of financing for Apple Inc.

The current cost of financing, weighted average cost of capital (WACC),2 is 10% annually. Therefore, any marketing event is recommended to take the time value of money into consideration.

Right after the meeting, Tom asked his team for a decomposition of the predicted annual incremental sales, 2.5%, into a more granular monthly level analysis. The annual figure of 2.5% represents the total cumulative effect over 12 months, but Tom needed to understand how this impact would be distributed month by month.

The team came back with the predicted monthly incremental sales breakdown: with influencer marketing, the first month’s sales will increase by 0.3% and 0.2% in each of the following 11 months. This means the monthly increases add up to the annual total: 0.3% + (0.2 × 11) = 2.5%.

Based on the information at hand, should Tom approve the influencer marketing plan based on Net Present Value method?

Step 1: Compute the sequence of monthly cash flows

  • First, we compute the incremental sales percentage for each month, relative to the 10 million. This is a 12-element vector, each element representing the incremental sales percentage.
Code
# incremental sales percentage for the first month 0.3%
incremental.sales.percentage_1stmonth <- 0.003

# incremental sales percentage for the next 11 months, which is 0.2% each month
# We use rep() to repeat the same value 11 times
incremental.sales.percentage_next11months <- rep(0.002, 11)

# incremental profit for the next 12 months
# combine the two vectors using c()
vector_incremental.sales.percentage_12months <- c(incremental.sales.percentage_1stmonth, incremental.sales.percentage_next11months)

# print the vector

print(paste("Incremental sales percentage for 12 months are "))
[1] "Incremental sales percentage for 12 months are "
Code
print(vector_incremental.sales.percentage_12months)
 [1] 0.003 0.002 0.002 0.002 0.002 0.002 0.002 0.002 0.002 0.002 0.002 0.002
  • Next, we multiply the incremental sales percentage with quantity, to get the incremental sales in terms of units each month.
Code
# multiply the incremental sales percentage with quantity to get the incremental sales in units (million)
vector_incremental.sales.units_12months <- vector_incremental.sales.percentage_12months * quantity

print(paste("Incremental sales in units for 12 months are "))
[1] "Incremental sales in units for 12 months are "
Code
print(vector_incremental.sales.units_12months)
 [1] 0.03 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02
  • Lastly, we multiply the incremental quantity sales with the contribution margin per unit, to get the total contribution margins (incremental profits) for each month, i.e., the CFs for each month.
    • For example, the first month’s incremental sales is 0.03 million units, and the contribution margin is 423.47 pounds per unit. Therefore, the incremental profit for the first month is 12.7041 million pounds.
Code
vector_CF <- vector_incremental.sales.units_12months * contribution_margin

vector_CF
 [1] 12.7041  8.4694  8.4694  8.4694  8.4694  8.4694  8.4694  8.4694  8.4694
[10]  8.4694  8.4694  8.4694

Step 2. Compute the sequence of discount factors

Code
# divide annual wacc to get monthly wacc
monthly_WACC <- 0.1 / 12

# discount factor for 1 month is 1/(1+k)
discount_factor <- 1 / (1 + monthly_WACC)

# Generate a geometric sequence vector of discounted CFs for 12 months

vector_discount_factor <- discount_factor^c(1:12)

print(paste("Discount factors for 12 months are "))
[1] "Discount factors for 12 months are "
Code
vector_discount_factor
 [1] 0.9917355 0.9835394 0.9754110 0.9673497 0.9593551 0.9514265 0.9435635
 [8] 0.9357654 0.9280319 0.9203622 0.9127559 0.9052124

Step 3. Compute the NPV

  • Multiply CF vector with discount factor vector, to get the discounted CF vector for 12 months.
Code
vector_discounted.CF <- vector_CF * vector_discount_factor

vector_discounted.CF
 [1] 12.599107  8.329988  8.261146  8.192872  8.125162  8.058012  7.991417
 [8]  7.925372  7.859873  7.794915  7.730495  7.666606
  • use function sum() to get the sum of all elements in a vector. That is, the sum of discounted cash flows in all 12 months.
Code
print(paste("The sum of discounted cash flows for 12 months is "))
[1] "The sum of discounted cash flows for 12 months is "
Code
sum(vector_discounted.CF)
[1] 100.535
  • We need to subtract the endorsement fee, which is the marketing expense, to get the net present value
Code
NPV <- sum(vector_discounted.CF) - endorsement_fee

print(paste("The Net Present Value is "))
[1] "The Net Present Value is "
Code
NPV
[1] 0.5349641
Code
if (NPV > 0) {
    print("It is profitable to continue with the influencer marketing campaign, because the NPV is positive.")
} else {
    print("It is not profitable to continue with the influencer marketing campaign, because the NPV is negative.")
}
[1] "It is profitable to continue with the influencer marketing campaign, because the NPV is positive."

3 After-Class Exercise

Code
ads_fee <- 125
endorsement_sales_increase <- 0.03
monthly_sales_increase_6month <- 0.003
monthly_sales_increase_after <- 0.002

Another marketing campaign proposal is to purchase a series of advertisements on the London Underground. The total one-off budget for the advertisement fee is £125 million. The team estimates that such an advertisement campaign can boost the total sales within the next financial year by 3%. If we decompose the predicted annual incremental sales, 3%, into a more granular monthly level analysis, the team estimates that the sales will increase by 0.3% in the first 6 months and 0.2% in the following 6 months.

Based on the information at hand, should Tom approve the advertisement marketing plan based on Net Present Value method?

Code
# incremental sales percentage for the first 6 months 0.3%

incremental.sales.percentage_6months <- rep(0.003, 6)

# incremental sales percentage for the next 6 months, which is 0.2% each month

incremental.sales.percentage_next6months <- rep(0.002, 6)

# incremental profit for the next 12 months

vector_incremental.sales.percentage_12months <- c(incremental.sales.percentage_6months, incremental.sales.percentage_next6months)

print(paste("Incremental sales percentage for 12 months are "))
[1] "Incremental sales percentage for 12 months are "
Code
print(vector_incremental.sales.percentage_12months)
 [1] 0.003 0.003 0.003 0.003 0.003 0.003 0.002 0.002 0.002 0.002 0.002 0.002
Code
# multiply the incremental sales percentage with quantity to get the incremental sales in units each month

vector_incremental.sales.units_12months <- vector_incremental.sales.percentage_12months * quantity

print(paste("Incremental sales in units for 12 months are "))
[1] "Incremental sales in units for 12 months are "
Code
print(vector_incremental.sales.units_12months)
 [1] 0.03 0.03 0.03 0.03 0.03 0.03 0.02 0.02 0.02 0.02 0.02 0.02
Code
# multiply the incremental quantity sales with the contribution margin per unit, to get the total contribution margins (incremental profits) for each month, i.e., the CFs for each month.

vector_CF <- vector_incremental.sales.units_12months * contribution_margin

vector_CF
 [1] 12.7041 12.7041 12.7041 12.7041 12.7041 12.7041  8.4694  8.4694  8.4694
[10]  8.4694  8.4694  8.4694
Code
# divide annual wacc to get monthly wacc

monthly_WACC <- 0.1 / 12

# discount factor for 1 month is 1/(1+k)

discount_factor <- 1 / (1 + monthly_WACC)

# Generate a geometric sequence vector of discounted CFs for 12 months

vector_discount_factor <- discount_factor^c(1:12)

print(paste("Discount factors for 12 months are "))
[1] "Discount factors for 12 months are "
Code
vector_discount_factor
 [1] 0.9917355 0.9835394 0.9754110 0.9673497 0.9593551 0.9514265 0.9435635
 [8] 0.9357654 0.9280319 0.9203622 0.9127559 0.9052124
Code
# Multiply CF vector with discount factor vector, to get the discounted CF vector for 12 months.

vector_discounted.CF <- vector_CF * vector_discount_factor

vector_discounted.CF
 [1] 12.599107 12.494983 12.391718 12.289307 12.187743 12.087018  7.991417
 [8]  7.925372  7.859873  7.794915  7.730495  7.666606
Code
# use function sum() to get the sum of all elements in a vector. That is, the sum of discounted cash flows in all 12 months.

print(paste("The sum of discounted cash flows for 12 months is "))
[1] "The sum of discounted cash flows for 12 months is "
Code
sum(vector_discounted.CF)
[1] 121.0186
Code
# We need to subtract the endorsement fee, which is the marketing expense, to get the net present value

NPV <- sum(vector_discounted.CF) - ads_fee

print(paste("The Net Present Value is "))
[1] "The Net Present Value is "
Code
NPV
[1] -3.981446
Code
if (NPV > 0) {
    print("It is profitable to continue with the advertisement marketing campaign.")
} else {
    print("It is not profitable to continue with the advertisement marketing campaign.")
}
[1] "It is not profitable to continue with the advertisement marketing campaign."

Footnotes

  1. Dr Meow’s personal favourite! Highly recommended after a long day of studies. Go for 30% sugar, less ice—trust me, it’s perfection! 🧋↩︎

  2. WACC is the average rate of return a company expects to compensate all its different investors. It reflects the cost of capital for the company, which is usually a blend of the cost of equity and the cost of debt.↩︎