Star Wars – The Finances Update

A comment by John in response to our Star Wars Finances reads:

Would you be able to estimate about how much more revenue Disney expected to make by this time since their purchase of Star Wars?

Well, we can, but we need to move from guesswork to complete wild speculation. Why not we say? We’ve not yet established any reputation to lose at this point.

Before we do, in our original post we claimed that Rouge One’s profits were US$419, but Deadline Hollywood estimated them at US$319. This changes Disney’s net loss (before TROS) to about US$2.3 billion. Our post has been edited to reflect this.

We want to be clear that we can’t read Disney employees’ minds and can’t know what they were expecting/projecting. We can however construct a plausible scenario in which Disney recovers its money.

As with our previous post, please treat it as a bit of fun, read our disclaimer and under no circumstances make any financial decisions on the basis of this post.

We’ll start the wild speculation and guess that Disney projected US$100 million (2012/13 prices, from this point every financial year is referred to by the last calendar year it covers) in every year that it doesn’t make a film – through theme park royalty savings *, toys etc.  We’ll assume
US$1 billion (2013 prices) in profits (all sources) for each of the main three trilogy films years (2016, 2018 and 2020) and three US$500 million (2013 prices) profits in the years after the trilogy films, including successful second-tier films (e.g. Rogue One, in 2017, 2019 and 2021).  Then we assume a US$500 million (2013 prices) profits every second year from 2023 to 2028.

If we do this, allow for annual inflation of 2.5% and then discount by Disney’s nominal WACC of 9.63%**, we get a net profit (over and above Disney’s required rate of return) of about
$150 million (2013 dollars).  This is shown below.

Disney Star Wars Forecast Profit Guess (2012 $US billion)

In terms of John’s specific question, revenue, you’re looking at three US$2 billion dollar world-wide box office films, or three in the top 14 earners of all time, plus six US$1 billion box office films. The US$2 billion films needed to occur in the first seven years after the purchase.

Yes it’s wild speculation, but it’s wild speculation that adds up.

By way of comparison, see how the nominal annual profits fared, with future years set as zero profit.

Disney Star Wars Forecast Profit Guess v Actual (pre-TROS, nominal $US billion)

To cut a long story short, The Force Awakens and Rogue One did what they needed to do (financially). It has been all downhill from there.

Solo was a financial disaster, that’s well known. What is less well known is just how financially badly The Last Jedi performed.

Early indications are that The Rise of Skywalker might not even reach The Last Jedi’s box office.

Disney clearly had big profits planned from its intellectual property purchase. There could be some (lots?) we’re missing, but likely outcome is that profits haven’t been as high as Disney expected.

Maybe George Lucas is one tough negotiator?

Have we missed anything?

*Note: we assume US$100 million (2013 dollars) in licencing savings for its theme parks per year. Calculating profits for Galaxy’s Edge is beyond the information we have, so we assume Galaxy’s Edge’s finances stand on their own (revenues against the construction and running costs), but Disney saves money by not having to pay to use the intellectual property. Yes it’s rough, but this whole post is rough.

** Disney’s income tax is likely included in the rate of return it requires (on a
pre-tax nominal Weighted Average Cost of Capital or WACC of 9.63%).

Python code is below. It also calculates an annuity, or constant nominal dollar amount received in every year in order to make the present value of Disney’s profits equal to its purchase price(annualPayback). This comes to US$670 million nominal per year.

We will clean this up and re-post at a later date as it isn’t written cleanly. It uses a DataFrame from the code in the previous Star Wars post (df_finance), so the previous code must be run first.

Let us know if you find any errors.

import pandas as pd

purchasePrice=4.05

WACC=0.0963
inflation=.025

inflatedPurchasePrice=purchasePrice*(1+WACC)**(2016
                                    -2013)

print(inflatedPurchasePrice)

star_Wars_Finance_years_RR = {

    'fin_year' : [2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,\
                  2026,2027,2028]}
    
    
df_finance_RR=pd.DataFrame(star_Wars_Finance_years_RR)

df_finance_RR['discountFactor']=1/(1+WACC)**(df_finance_RR.fin_year-2016)


annualPayback=inflatedPurchasePrice/df_finance_RR['discountFactor'].sum()

print(annualPayback)

#Check Annual Payback

df_finance_RR['annualPayback']=annualPayback
df_finance_RR['NDP']=df_finance_RR['annualPayback']*df_finance_RR['discountFactor']

CHECK=df_finance_RR['NDP'].sum()-inflatedPurchasePrice

if round(CHECK,10)==0:
    print ('all is good')
else:
    print('something is wrong')    

TLJProfitMargin=(.78/2.06)

requiredGross=annualPayback/TLJProfitMargin

print(requiredGross)

star_Wars_Finance_years_Guess = {

    'fin_year' : [2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,\
                  2026,2027,2028],
    'profit':[-4.05,0.1,0.1,1.0,0.5,1.0,0.5,1.0,0.5,0.1,0.5,0.1,0.50,0.1,0.5,0.1]
    }

df_finance_Guess=pd.DataFrame(star_Wars_Finance_years_Guess)

df_finance_Guess['discountFactor']=1/(1+WACC)**(df_finance_Guess.fin_year-2013)
df_finance_Guess['inflationFactor']=1/(1+inflation)**(df_finance_Guess.fin_year-2013)

df_finance_Guess['discountedProfit']=df_finance_Guess['profit']*\
    df_finance_Guess['discountFactor']/df_finance_Guess['inflationFactor']

totalProfit=df_finance_Guess['discountedProfit'].sum()

print(totalProfit)

print(df_finance_Guess)

#Comparison Table
Star_Wars_Finance_years_Gues_Comps_dfa=pd.DataFrame()
Star_Wars_Finance_years_Gues_Comps_dfa['required_nominal_profit']=df_finance_Guess['profit']/df_finance_Guess['inflationFactor']


LIST=Star_Wars_Finance_years_Gues_Comps_dfa['required_nominal_profit'][0:3].tolist()\
+df_finance['profit'][1:].tolist()+[0.0,0.0,0.0,0.0,0.0,0.00,0.0,0.0,0.0]

Star_Wars_Finance_years_Gues_Comps = {

    'fin_year' : [2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,\
                  2026,2027,2028],
    
    'actual_nominal_profit' : LIST
    }

Star_Wars_Finance_years_Gues_Comps_df=pd.DataFrame(Star_Wars_Finance_years_Gues_Comps)

Star_Wars_Finance_years_Gues_Comps_df=\
pd.concat([Star_Wars_Finance_years_Gues_Comps_df,\
           Star_Wars_Finance_years_Gues_Comps_dfa],axis=1)

Star_Wars_Finance_years_Gues_Comps_df=Star_Wars_Finance_years_Gues_Comps_df[['fin_year','required_nominal_profit','actual_nominal_profit']]

print(Star_Wars_Finance_years_Gues_Comps_df)