Description

Target Firm: DocuSign, Inc.

Week 1 – Task 1 Time Series Quant Model Analysis

A quantitative analyst uses quantitative methods to help us make business and financial decisions. As a broker dealer firm, we provide advanced suggestions to our investors in the capital market. For “quants,” the goal is to help them identify profitable investment opportunities. The Goal for your work is to improve our model for historical quantitative analysis for certain stocks so we can apply this model to every stock and industry. Please follow the model of the example report and the MATLAB, or R/Python code. BUT these files are only references. For your strong academic background, we wish you can make this model more useful. The purpose for this model and your work is to improve our model for historical quantitative stock analysis and we can analyze more stocks and industry in a faster pace and help our analyst for technical analysis. We have provided you code examples for three different software, R Python and Matlab.

Week 1 – Task 1 Detailed Instruction

Submission List:

Matlab, R, Python code and Quantitative Data Analysis (PPT)

Analysis Areas:

Test of Weak Form Efficiency

In this part of the project, you will need to perform few tests for the weak form efficiency on the stocks and/or the market indices and discuss the empirical findings.

Step 1: Obtain the Data

You need to obtain daily data for 2 – 3 stocks or market indices that is related to THE COMPANY over a span of at least 10 to 20 years.

So you need to find at least one or two competitor of Twilio. (You may obtain the data from Datastream, EIA, or Yahoo Finance. )

You can compute the simple return as:

Rt = [(Yt -Yt-1 ) / Yt-1 ]*100

where is return at time t, Yt is the Adjusted close price at time t and Yt-1 is the Adjusted close price at time t-1

Step 2: Tests of Weak Form Efficiency

You should read about EMH to get guidance about how to interpret and comment on the results of the weak-form efficiency tests as applied to your data.

1) Descriptive Statistics and return distributions

Begin by analyzing the data using the summary statistics (e.g., mean, median, max, min, skewness, kurtosis etc.) in a Table. Provide a few (may be 1 or 2) plots of time series of returns of the data and a histogram of the return distribution for your stocks and indices. Using appropriate wording you should comment on the statistical and economic (if any) interpretation of your data.

2) Autoregressive (AR) Model

You can test to see if the return data in your sample follow a random walk using the AR (1) model:

Rt= σ+ β1 Rt-1 + ℇt

where the dependent variable Rt is the return for the time t, and the independent variable Rt-1 is the return lagged one period for time t-1 .

You can create a one-period lag of return either manually in excel or you simply do that in SPSS, for instance, by using the LAG function under the Transform>Compute variables menu.

You should report and discuss your results.

3) Day of the Week Effect

In this part, you will test and see if the data show any seasonal effects over days of the week.

RT=β1 D1,t + β2 D2,t + β3 D3,t + β4 D4,t + β5 D5,t + ℇt

Note that there is no constant in the above regression; if you want to include a constant you can have only 4 dummy variables. Again, you should report and comment on your findings.

Task 1: Test of Weak Form EMH/Random Walk Model { Use BP(example firm: British Petroleum) Monthly Return Data }

(1) Create BP_1 Variable for t-1 {Hints: Transform….create time series…}

(2) Compute stock return of BP (BP_Ret) {Transform….Compute Variable ….((BP-BP_1)/BP_1)*100

(3) Create a Lag Variable for BP_Ret_1 for t-1 {Hints: Transform…Create time series…}

(4) Compute Logarithmic stock return of BP (BP_LogRet) {Transform…Compute Variable…(Ln(BP)-LN(BP_1)*100

(5) Do a formal test of independence to test H0 : No Autocorrelation { Hints: Analyse…Forecasting …Autocorrelation…Variables (BP_Return), Display (Autocorrelation and Partial Autocorrelation). Can you reject H0 : No Autocorrelation (e.g Reject H0 if p-value is statistically significant)? How do you interpret the results?

(6) Repeat question 5 with BP share prices (instead of BP_Return).Do you observe any difference ?

(7) Estimate Autoregressive 1 (AR1) Model with and without constant term). Do the results tell you anything about the random walk model?

(8) In order to test Weak Form EMH , estimate the following AR(1) Model with the BP_Return (with constant term). Can you reject H0 : β=0 (e.g. Reject H0 if p-value is statistically significant)?

Do the result tell you anything about the EMH/ random walk model?

Ri= σ+ β1 Rt-1 + ℇt…….(1)

(9) Draw scatter plot and line charts to find evidence of Weak Form EMH/Random Walk Model.

Detecting Seasonality in Financial Markets (Day-of-the-Week Effect) {use BP daily price}

(1) Convert DATES into DAYS: Transform….Date & Time Wizard….Extract a part of a date or time variable…Date or time (DATE) and unit to extract (DAY OF WEEK)…Finish.

(2) Convert DAYS into NUMBERS (e.g., Mon=1, Fri=5): Transform…Automatic Recode…..choose New Variable name (DAYS2)….Recode starting from lowest to highest ….Use the same recoding scheme for all variables…}

(3) Create DUMMY Variables from DAYS2 (D1 FOR Monday,D2 for Tuesday,D3 for Wednesday,D4 for Thursday and D5 for Friday): Transform….Recode into different variable…Use Old & New Value option…….

(4) In order to investigate the seasonal effect on financial markets (calendar anomalies),estimate the following OLS regression (or Dummy Variable regression) model to test `Day-of-the-Week-Effect` (WITHOUT CONSTANT):

RT=β1 D1,t + β2 D2,t + β3 D3,t + β4 D4,t + β5 D5,t + ℇt

Where,

D1 = 1 if the return is on a Monday and 0 otherwise

D2 = 1 if the return is on a Tuesday and 0 otherwise

D3 = 1 if the return is on a Wednesday and 0 otherwise

D4 = 1 if the return is on a Thursday and 0 otherwise

D5 = 1 if the return is on a Friday and 0 otherwise

(5) Estimate the Following OLS regression (or Dummy Variable regression) model to test if `Monday return` is statistically significant than other days of the week. State Null and alternative hypotheses.

RT=β1 D1,t + β2 D2,t + β3 D3,t + β4 D4,t + β5 D5,t + ℇt

For the following questions, you need to create a WORD document that lists your finds for all of them. So what you have to submit is based on the following questions.

Interpret your response to the follow questions:

(i) Goodness of fit: how well does the model describe the relationship between the variables?{ Look at the adjusted R2 value}.

(ii) Overall model significance: is there a linear relationship between all X variables taken together with Y ? is the ration of explained and unexplained variances greater than 1?{ look at the F-statistic, together with the level of significance from the ANOVA table.

Note that the larger the R2 value, the greater the F value.}

(iii) Do the assumptions underlying the model (e.g., OLS regression) hold?

(a) SAVE predicted and residual values

(b) E(u)=0: the errors have zero mean {Look at the `residual statistics` table)

(c) Cov(ui,uj)=0 : The errors are linearly independent of one another e.g., no autocorrelation {Look at the Durbin-Watson/DW value from `Model Summary` table. If the DW statistic is close to 2, we CAN`T reject ` H0 : No serial correlation`. This means the errors are independent }

(d) Var(u)=σ2 : The Variance of the errors is constant/Homoskedastic/ equal e.g, No Heteroskedastity { Draw scatter plot: Y= Standardized residuals and X= Dependent Variable. IF you see that the errors increase or decrease with an increase of the dependent variable, you`ve got heteroskedascity problem}.

(e) Cov(u,x) =0; There is no relationship between the error and corresponding X variable {Run correlation and covariance between X and residual values. Tips: Analyse…..Correlation…Bivariate…Option…}

(f) U~N(0,σ2): The errors are normally distributed {Draw Histogram for the Unstandardized residuals. Do tests of Normality (Descriptive statistics…explore…dependent list: unstandardized residuals….Plots…normality plots with tests…).if p-values are high/insignificant, we CAN`T reject H0 : Normality. This means the errors are normally distributed}

(g) Is there any multicollinearity problem:? {(i) Look at the correlation matrix to confirm that there is no linear relationship between independent variables (ii) Check tolerance and VIF: Analyse ….Regression…linear….Statistics (check collinearity diagnostics). The tolerance should be above 0.10 and VIF should be below 10}

(h) Model specification: (a) correct functional form (b) no omission of important variables (c) no inclusion of irrelevant variables.

Step 2.

Quantitative Analysis PowerPoint Slides Requirement (Use the PPT example as a reference. It is an example that we did for Twilio.)

Part 1 – Executive Summary (1-2 Slides)

Summarize your major findings based on your target companies.

What is the industry?

What are the company historical highlights?

History (Create a timeline)
Strategy (Overall and recent)
Objectives (Operational and Strategical)
Historical Finance Transactions (M&A and Long-term Investment)

What does the historical data of the company tells you?

Summarize each category into 2-3 sentences.

Part 2 – Major Competitors (1-2 Slides)

Notes: List the name of the competitors and their major businesses.

What are their characteristics?

How are they doing financially and operationally?

Part 3 – Financial Highlights (1-2 Slides)

Search for average ratios in the industry on Marketwatch:

PE Multiple, EV/EBITDA, PBV, ROA, ROE

Compare your company to the industrial average.

Please draw your conclusions based on the formula and principles.

Part 4 – Quantitative Analysis (5-8 Slides)

List your model and explain the following questions. (Transform your report to slides)

Do not show the Screen shots of your graphs, please show more about your findings and conclusions.

(i) Goodness of fit: how well does the model describe the relationship between the variables?{ Look at the adjusted R2 value}.

(ii) Overall model significance: is there a linear relationship between all X variables taken together with Y ? is the ration of explained and unexplained variances greater than 1?{ look at the F-statistic, together with the level of significance from the ANOVA table.

Note that the larger the R2 value, the greater the F value.}

(iii) Do the assumptions underlying the model (e.g., OLS regression) hold?

(a) SAVE predicted and residual values

(b) E(u)=0: the errors have zero mean {Look at the `residual statistics` table)

(c) Cov(ui,uj)=0 : The errors are linearly independent of one another e.g., no autocorrelation {Look at the Durbin-Watson/DW value from `Model Summary` table. If the DW statistic is close to 2, we CAN`T reject ` H0 : No serial correlation`. This means the errors are independent }

(d) Var(u)=σ2 : The Variance of the errors is constant/Homoskedastic/ equal e.g, No Heteroskedastity { Draw scatter plot: Y= Standardized residuals and X= Dependent Variable. IF you see that the errors increase or decrease with an increase of the dependent variable, you`ve got heteroskedascity problem}.

(e) Cov(u,x) =0; There is no relationship between the error and corresponding X variable {Run correlation and covariance between X and residual values. Tips: Analyse…..Correlation…Bivariate…Option…}

(f) U~N(0,σ2): The errors are normally distributed {Draw Histogram for the Unstandardized residuals. Do tests of Normality (Descriptive statistics…explore…dependent list: unstandardized residuals….Plots…normality plots with tests…).if p-values are high/insignificant, we CAN`T reject H0 : Normality. This means the errors are normally distributed}

(g) Is there any multicollinearity problem:? {(i) Look at the correlation matrix to confirm that there is no linear relationship between independent variables (ii) Check tolerance and VIF: Analyse ….Regression…linear….Statistics (check collinearity diagnostics). The tolerance should be above 0.10 and VIF should be below 10}

(h) Model specification: (a) correct functional form (b) no omission of important variables (c) no inclusion of irrelevant variables.

EXAMPLE PYTHON CODES

Here are example PYTHON codes for the two steps, please find this attachment and work on it.

This is on AVTI.

#step one

import pandas as pd

import numpy as np

from matplotlib import pyplot

ATVI = pd.read_csv(“C:/Users/Administrator/Downloads/ATVI.csv”,parse_dates=[‘Date’])

ATVI[‘Return’] = (ATVI[‘Adj Close’].pct_change())

ATVI[‘Logrt’] =np.log(ATVI[‘Adj Close’]/ATVI[‘Adj Close’].shift(1))

ATVI=ATVI.drop(ATVI.index[0])

ATVI.plot(x = ‘Date’,y = ‘Return’)

ATVI.plot(x = ‘Date’, y = ‘Adj Close’)

pyplot.show()

#step two

from scipy.stats import kurtosis

from scipy.stats import skew

ATVImean = np.mean(ATVI[‘Return’])

ATVIvar = np.var(ATVI[‘Return’])

ATVImax = np.max(ATVI[‘Return’])

ATVImin = np.min(ATVI[‘Return’])

ATVIstd = np.std(ATVI[‘Return’])

ATVIkur = kurtosis(ATVI[‘Return’])

ATVIskew = skew(ATVI[‘Return’])

ATVInew = ATVI[[‘Date’,’Return’]].copy()

print(‘mean’,ATVImean)

print(‘var’,ATVIvar)

print(‘max’,ATVImax)

print(‘min’,ATVImin)

print(‘std’,ATVIstd)

print(‘kur’,ATVIkur)

print(‘skew’,ATVIskew)

#from matplotlib import pyplot

#from pandas.plotting import lag_plot

#lag_plot(ATVInew)

#pyplot.show()

from pandas import DataFrame

from pandas import concat

from matplotlib import pyplot

values = DataFrame(ATVInew.values)

dataframe = concat([values.shift(1), values], axis=1)

dataframe.columns = [‘t1′,’t-1′,’t2’, ‘t+1’]

dataframe = dataframe.drop(‘t1’,axis = 1)

dataframe = dataframe.drop(‘t2’,axis = 1)

dataframe=dataframe.drop(dataframe.index[0])

dataframe = dataframe.astype(float)

rst = dataframe.corr()

print(rst)

ATVInew = ATVInew[‘Return’].astype(float)

from pandas.plotting import autocorrelation_plot

autocorrelation_plot(ATVInew)

pyplot.show()

from pandas.plotting import lag_plot

lag_plot(ATVInew)

pyplot.show()

“””

Autoregressive (AR) Model

“””

from statsmodels.graphics.tsaplots import plot_acf, plot_pacf

#from statsmodels.tsa.arima_model import ARMA

# Detect ACF&PACF

values.columns = [‘Date’, ‘Value’]

fig, axes = pyplot.subplots(1,2,figsize=(16,3), dpi= 100)

plot_acf(values[“Value”].tolist(), lags=50, ax=axes[0])

plot_pacf(values[“Value”].tolist(), lags=50, ax=axes[1])

#Data processing – take out the first value of NaN

import statsmodels.api as sm

y = values[‘Value’].values

y=np.array(y, dtype=float)

X = values[[‘Value’]].shift(1).values

X = sm.add_constant(X)

X=np.array(X, dtype=float)

X=np.delete(X,0,0)

y=np.delete(y,0,0)

# train autoregression AR(1)

model = sm.OLS(y,X)

#mod= ARMA()

results = model.fit()

print(‘AR’)

print(results.summary())

“””

Regression:Day of the Week Effect

“””

#Create day dummy

names = [‘D1’, ‘D2’, ‘D3’, ‘D4’, ‘D5’]

for i, x in enumerate(names):

values[x] = (values[‘Date’].dt.dayofweek == i).astype(int)

print (values.head(n=5))

# Regression – Seasonality

X2=values[[‘D1′,’D2′,’D3′,’D4′,’D5’]].values

X2=np.delete(X2,0,0)

model = sm.OLS(y,X2)

results = model.fit()

print(results.summary())

“””

Regression:OLS Assumption Tests

“””

#get residuals

def calculate_residuals(model, features, label):

“””

Creates predictions on the features with the model and calculates residuals

“””

predictions = results.predict(features)

df_results = pd.DataFrame({‘Actual’: label, ‘Predicted’: predictions})

df_results[‘Residuals’] = abs(df_results[‘Actual’]) – abs(df_results[‘Predicted’])

return df_results

calculate_residuals(model, X2, y)

“””

Assumption 2: Normality of the Error Terms

except the way below, Regression output showed Prob(JB) <0.05, reject the null hypothesis that it is normally distributed """ import seaborn as sns def normal_errors_assumption(model, features, label, p_value_thresh=0.05): from statsmodels.stats.diagnostic import normal_ad print('Assumption 2: The error terms are normally distributed', 'n') # Calculating residuals for the Anderson-Darling test df_results = calculate_residuals(model, features, label) print('Using the Anderson-Darling test for normal distribution') # Performing the test on the residuals p_value = normal_ad(df_results['Residuals'])[1] print('p-value from the test - below 0.05 generally means non-normal:', p_value) # Reporting the normality of the residuals if p_value < p_value_thresh: print('Residuals are not normally distributed') else: print('Residuals are normally distributed') # Plotting the residuals distribution pyplot.subplots(figsize=(12, 6)) pyplot.title('Distribution of Residuals') sns.distplot(df_results['Residuals']) pyplot.show() print() if p_value > p_value_thresh:

print(‘Assumption satisfied’)

else:

print(‘Assumption not satisfied’)

print()

print(‘Confidence intervals will likely be affected’)

print(‘Try performing nonlinear transformations on variables’)

normal_errors_assumption(model, X2, y)

“””

Assumption 3: No Autocorrelation

Performing Durbin-Watson Test:

Values of 1.5 < d < 2.5 generally show that there is no autocorrelation in the data 0 to 2< is positive autocorrelation >2 to 4 is negative autocorrelation

Durbin-Watson: 2.115

Conclusion: Little to no autocorrelation

Assumption satisfied

“””

“””

Assumption 4:Homoscedasticity

“””

def homoscedasticity_assumption(model, features, label):

“””

Homoscedasticity: Assumes that the errors exhibit constant variance

“””

print(‘Assumption 5: Homoscedasticity of Error Terms’, ‘n’)

print(‘Residuals should have relative constant variance’)

# Calculating residuals for the plot

df_results = calculate_residuals(model, features, label)

# Plotting the residuals

pyplot.subplots(figsize=(12, 6))

ax = pyplot.subplot(111) # To remove spines

pyplot.scatter(x=df_results.index, y=df_results.Residuals, alpha=0.5)

pyplot.plot(np.repeat(0, df_results.index.max()), color=’darkorange’, linestyle=’–‘)

ax.spines[‘right’].set_visible(False) # Removing the right spine

ax.spines[‘top’].set_visible(False) # Removing the top spine

pyplot.title(‘Residuals’)

pyplot.show()

homoscedasticity_assumption(model, X2, y)

Unformatted Attachment Preview

Company Overview (Twilio)
Company Highlights
Valuation & Share Performance
§ Background: Founded in in 2008 by Jeff Lawson, Evan Cooke, and John Wolthuis, a cloud
Key Valuation Statistics 2020 Feb
communication platform as a service (CPaaS) company based on San Francisco, California. The
company had an initial public offering, at the New York Stock Exchange, June 23, 2016.
Shares
Market Cap
deploy communication applications, with Flex, a cloud-based platform for routing calls and engaging
P/E
with customers.
Price/Book
§ Ownership: 1.25 billion total shares outstanding, 89.66% held by institutional investors, the Top
Price/Sales
3 are Vanguard Group Inc(8.52%), Morgan Stanley(6.71%) and Blackrock Inc.(6.16%).
$124.6M Revenue
$15.59B Enterprise Value
240.55 EBITDA
3.78 EV/Revenue
13.56 EV/EBITDA
§ Business Strategy: Twilio provides an environment for software developers to create, host and
Share Price
§ Valuation: Strong operation performance with stable cash liquidity. High value and growth
expectation in the coming 3-5 years.
High/Low: $151.00 / $89.81
Analyst Recommendation : Buy
Key Metrics and Recent Business Highlights
Twilio Share Price Changes
§ Business Partners: Entered into new or expanded relationships with organizations including PayPal,
Southwest, Blablacar and Rappi.
160
350
140
300
120
§ Customer Base: More than 179,000 Active Customer Accounts as of December 31, 2019,
compared to 64,286 Active Customer Accounts as of December 31, 2018.
250
100
200
80
§ Net Expansion: Dollar-Based Net Expansion Rate was 124% for the fourth quarter of 2019,
150
60
100
40
compared to 147% for the fourth quarter of 2018.
§ Awards and Influence: Named one of America’s Most JUST Companies of 2020 by Forbes and
50
20
0
JUST Capital, ranking 77 out of 1,000 of the largest publicly traded companies
Operation Forecast
Current: $117.87
$1.13B
$16.3B
-259.36M
14.37
-62.85
0
2016Sep.
2017Jan.
2017Sep.
2018Jan. 2018Sep.
2019Jan.
TWLO
SPY
Non-GAAP Basic Shares Outstanding($M)
2019Sep.
Total Revenue($M)
Y/Y Growth
FY 2019 Q4
$331.2
62%
$137.7
25%
FY2020 Full Year
$1,132
75%
$140.3
25%
FY 2020 Q1 Expected
$335 – $338
44% – 45%
$148
25%
FY 2020 Full Year Expected
$1,475 – $1,490
30% – 31%
$152
25%
2017 Copyright © NIBCLive.com – Not for Redistribution
Allied
Millennial Partners, LLC | Twilio Quantitative Research Report
2020 Jan
Non-GAAP Income Tax Rate
Ownership Summary (Twilio)
Ownership Highlights
Equity Holdings Summary
§ Summary:
Key Ownership Statistics as of Feb. 6th 2020
§ As of 2020 Twilio shares are mainly held by institutional investors, including Vanguard Group
Inc., Morgan Stanley, Blackrock Inc and others.
Total Shares Outstanding
124.60M
# of Inst. Owners
746
# of Buyers/Sellers
311/266
§ Top Individual Shareholders
% Held by Insiders
0.40%
§ Byron Deeter led Bessemer Venture Partners into the seed stage of Twilio and had invested in
each Twilio’s private funding rounds, amassing a 28.5% stake of the company with $70 million.
Net Change last 6M
0.14%
§ The significant level of institutional ownership may cause long bull and bear trends if the
perceived value of the stock changes for these big-ticket investors. This will allow an
investor to reduce the impact of non-fundamental factors.
§ Jeff Lawson, the co-founder and CEO of Twilio owns 11.9% stake of the company.
Ownership Distribution Summary
Top Institutional Holders
Top Mutual Fund Holders
Top Ownership Types
9.56%
3.33%
46.76%
40.35%
Tra nsamerica Capital…
0.54%
Allianz Asset…
2.09%
Vanguard Mid-Cap…
0.57%
Foxhaven Asset…
2.14%
Vanguard Growth…
0.64%
Dra goneer Investment…
2.25%
Mu tual Fund Ser Tr-…
0.66%
Tybourne Capital…
2.39%
JP Morgan Chase &…
2.47%
Harbor Capital…
1.26%
Vanguard Extended…
1.29%
Jennison Associates LLC
Mo rg an Stanley Inst…
2.10%
Price (T.Rowe)…
6.02%
Vanguard Mid-Cap…
2.18%
Blackrock Inc.
6.16%
Vanguard Total Stock…
Top ownerdship Types
Mutual fund holders
Other institutional
Individuak stakeholders
Others
3.89%
2.46%
Price (T.Rowe) New…
0.00%
2017 Copyright © NIBCLive.com – Not for Redistribution
Allied
Millennial Partners, LLC | Twilio Quantitative Research Report
Mo rg an Stanley
6.71%
2.86% The Vanguard Group, Inc.
2.00%
0.00%
8.52%
5.00%
10.00%
Operation Analysis (Twilio)
Revenue Drivers
Breakdown of Growth in FY19 Revenues
§ FY 2019 Highlights
Revenue
$331,224
§ In 2019, 84% of Twilio’s revenue was from usage fees, tied to call minutes and text
messages. The rest of revenue came from monthly fees, for “renting” a phone number or
Cost of Revenue
($156,534)
Cost ofProfit
Revenue
Gross
($6,029,901)
$608.917
Operation Income
($319.973)
Net Income
($263.974)
“leasing” a short code.
§ FY 2020 Forecast
§ In 2020, Twilio intends to pass Verizon’s new A2P (application-to-person) fees to customers, a
Dollar-Based Net Expansion
move likely to add to revenue but to hurt gross margins.
Industry Revenue Comparable FY2019
Company
FY 2019 Revenue
YoY Revenue Growth
NETFLIX INC
1.13B
74.7%
MITEL NETWORKS COPS
1.30B
40.65%
LIVEPERSON INC.
2.92B
17.07%
SHORETEL INC
0.96B
13.2%
BROADCOM INC
22.50B
6.1%
CLEARONE INC.
0.32B
-10.34%
AVAYA INC
5.78B
-10.51%
Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
16 16 16 17 17 17 17 18 18 18 18 19 19 19 19
Geographic Revenue Mix
Operation Revenue and Growth Estimate
Metric
160%
140%
120%
100%
80%
60%
40%
20%
0%
100%
23%
25%
29%
77%
75%
71%
FY2017
FY2018
FY2019
80%
60%
Mar. 2020
Jun. 2020
2020
2021
Earnings Estimate
(0.1)
(0.11)
(0.13)
0.18
Revenue Estimate
336.85M
357.24M
1.49B
1.88B
EPS Estimate
0.04
0.06
0.25
0.50
Growth Estimate
-300%
-400.7%
-181.30%
238.5%
2017 Copyright © NIBCLive.com – Not for Redistribution
Allied
Millennial Partners, LLC | Twilio Quantitative Research Report
40%
20%
0%
US
International
Valuation Summary (Twilio)
Valuation football field
Stock Price Performance
§ Stock price has high growth rate due to strong operation
cash flow support and revenue growth
Current Price $117.87
§ Further upside could be possible if another hit is produced
but downside risk is more significant
Share Price
$50.0
Analyst Estimates
§ Twilio shares are estimated to undervalued and have
further growth potentials
Comparables
$151.07
$89.81
52 Week Price Range
§ Current multiples are high compared with competitors
$210.0
$68.3
$23.9
$162.1
Precedents
Analyst Price Target: $144.64
Current: $117.87 High/Low: $151.00 / $89.81
$0.0 $20.0 $40.0 $60.0
Twilio Share Price Changes
160
350
140
300
120
$100.0 $120.0 $130.0 $150.0
Recommendation Rating
250
100
1.8
200
80
150
60
1
2
3
4
5
Strong
Buy
Buy
Hold
Underperform
Buy
100
40
50
20
0
$80.0
TWLO
SPY
0
Analyst Estimates (02/06/2020)
Valuation Item
Estimate
Average Recommendation
Buy to Buy
Average Target Price
$144.64
Median PE on FY2020
$87.28
Median EPS Estimate on FY2020
$2.27
Low EPS Estimates on FY2020
$1.64
High EPS estimate on FY2020
$3.15
2017 Copyright © NIBCLive.com – Not for Redistribution
Allied
Millennial Partners, LLC | Twilio Quantitative Research Report
15
Analyst Recommendations
10
5
0
Strong Buy
Buy
Nov-19
Hold
Underperform
Dec-19
Jan-20 20-Feb
Sell
Industry Competitors Overview
Major Competitors Company
■ Bandwidth is a CPssA company founded in 1999. It sells software application programming interfaces for
voice and messaging, using their own IP voice network.

In November 2017, Bandwidth had an IPO on NASDAQ.
■ Ring Central, founded in 1999, is a comprehensive CPaaS solution and supports, voice video, messaging,
SMS as well as Fax.
■ After Twilio, it is the most feature-rich CPaaS platform available. It completed its IPO in 2013.
■ Infobip is an international IT and telecommunications company. It operates a full-stack CPaaS with private
cloud infrastructure and zero-hop connectivity to telecoms globally.
■ Based on the Bloomberg news, Infobip is considering going public thus now accelerating its expansion on
the U.S. market.
■ Plivo supports SMS and Voice APIs.
■ Plivo also provides virtual phone numbers of various types and offers SIP trunking solution for deploying
call center infrastructure.
■ Nexmo offers voice, video, SMS and messaging API for a unified communication experience.
■ Nexmo also provides virtual phone numbers.
2017 Copyright © NIBCLive.com – Not for Redistribution
Allied
Millennial Partners, LLC | Twilio Quantitative Research Report
Competitive Environment
Twilio SWOT Analysis
Industry Trends
•Strengths: Twilio is a scalable, reliable, and high-quality platform
with a strong ecosystem of over two million developers on the
platform as well as a thriving network of channel partners.

•Weaknesses: Twilio has built up a great reputation in the
developer community, while it has put fewer resources into sales
and marketing that targets other enterprise teams.
•Opportunities: Twilio has a disruptive business model that
continues to innovate by adding new platform capabilities and
services.
•Threats: While Twilio does have strong competition, it remains the
leader in CPaaS globally.
Twilio Profitability Analysis
EPS
Net Income
Net Margin
Return on Equity
Return on Assets
$($0.80)
$-121,950,000
-26.2%
-6.02%
-4.84%
Sales & Book Value
Annual Sales
Price / Sales
Book Value
Price / Book
$650.07M
24.87
$4.38 Per Share
26.91
2017 Copyright © NIBCLive.com – Not for Redistribution
Allied
Millennial Partners, LLC | Twilio Quantitative Research Report
Improving customer experience via CPaaS
– – Improving the customer experience is a top priority for enterprises
thinking about digital business outcomes.
– The experience a customer has with an enterprise organization
can be dramatically improved by adding voice, SMS, chat, video,
authentication and proactive notifications into apps, services, and
business processes.
– Using APIs, developers can now add these real-time
communications features into their own applications without
needing to build backend infrastructure and interfaces.
• The Communications Platform as a Service (CPaaS) Shift
– Communications Platform as a Service adoption is shifting the
ways in which enterprises develop products and services.
– A recent Gartner Market Trends report projected that by 2020, 30%
of enterprises will embed communications into digital processes
using APIs from CPaaS vendors, up from less than 5% in 2017.
– Gartner predicts end-user spending on CPaaS will grow at a
compound annual growth rate (CAGR) of 49.6% to reach $4.63
billion by 2021.
Historical Share Price Performance (Twilio)
Key Events & Share Price Drivers
TWLO
160
SPY
350
140
300
120
250
Sep 2016
100
200
80
Feb 2017
June
2016
Nov 2019
60
100
Oct 2018
40
20
150
Jan 2020
50
Sep 2018
0
0
June 2016
Dec 2016
June 2017
Dec 2017
June 2018
Dec 2018
June 2019
Dec 2019

June 2016 – Twilio initiated an IPO at the New York Stock Exchange, June 23, 2016, at $15 per share, above the range of $12 – $14 that software
developer proposed in an updated IPO prospectus a week before, closed up nearly 92% in the first day of trading.


September 2016 – Twilio acquired Tikal Technologies, the development team behind the Kurento WebRTC open source project, for $8.5 million.
February 2017 – Twilio acquired Beepsend, a Swedish-based SMS messaging provider, for an undisclosed amount.


September 2018 – Twilio announced they were acquiring Ytica, a Prague, Czech Republic-based speech analytics firm, for an undisclosed amount.
October 2018 – Twilio announced they were acquiring SendGrid, a Denver, Colorado-based customer communication platform for transactional and

marketing email, for $2 billion.
November 2019 – TWLO stock was rocked by a report that Facebook’s WhatsApp, a big customer, is pulling back.

January 2020 – Twilio intends to pass Verizon’s new A2P (application-to-person) fees to customers, a move likely to add to revenue.
2017 Copyright © NIBCLive.com – Not for Redistribution
Allied
Millennial Partners, LLC | Twilio Quantitative Research Report
Exploratory Net Return Analysis (Twilio)
TWLO vs its two main Competitors
Net Returns with Heavy Tails
§ Net Return Trend
§ Under N = 896 observations, the range of TWLO net returns lies in (-26.31%, 35.44%)
with average return at 0.23%.
§ High volatility in specific periods
§ The net returns showed high volatility with positive values mainly during the period when
it firstly came to the market and 2018 till earlier 2019. In the second half of 2019, there is
a decreasing trend but bounded up in the end. And the net returns distribution does not
show normality, according to heavy tails in the qq-plot, especially more right-skewed.
Statistics of Net Return Historical Performance
Metric
TWLO
BAND
RNG
Return Average
0.23%
0.27%
0.25%
Return Maximum
35.44%
12.33%
28.04%
Return Minimum
-26.31%
-14.21%
-11.56%
Return Volatility
0.141%
0.084%
0.070%
Return Skewness
1.144
0.309
0.987
Return Kurtosis
14.549
3.475
13.687
Comparative Analysis
§ BAND showed high volatility with more drawdowns. And the net returns distribution
does not show normality, according to heavy tails in the qq-plot, even more rightskewed than TWLO.
§ RNG shows stable performance with small volatility. Though its distribution does not
show normality with heavy tails in the qq-plot, it is less skewed than the other two.
2017 Copyright © NIBCLive.com – Not for Redistribution
Allied
Millennial Partners, LLC | Twilio Quantitative Research Report
Regressive Modeling (Twilio)
ACF of net returns
Net Returns with Heavy Tails
§ Autocorrelation Test and AR Model Selection
§ TWLO net returns show weak autocorrelation. Only the net return of 8 days
ago provides a statistically significant explanation of today’s net returns.
§ As the autocorrelation test suggests lag 8 net return provides a statistically
significant explanation of today’s net returns. Now we construct the AR(8)
model and test the goodness of fit.
§ AR (8) Model Fitness Analysis
§ Rt= 0.002159 – 0.098641Rt-8 + ℇt
§ AIC = -3369.789
BIC = -3355.422,
§ t-value for lag8 coefficient: -3.06.
§ Standard Error for lag8 coefficient: 0.0322357
§ The blue dotted line is the 95% confidence interval. There is the
8th significant, suggesting that the 8-lag net return provides a
statistically significant explanation of today’s net returns.
OLS Assumption Test
§ Residual statistics: mean =0, variance=0.0013
§ Test Normality of residuals: The distribution of residuals has heavy tails than normal distribution.
§ Test autocorrelation of residuals: the ACF graph indicates no autocorrelation among residuals.
§ Test the correlation relationship between the error and corresponding X variable: Since the p-value > 0.05, we fail to
reject the Null hypothesis and claim that there are correlations between the errors and corresponding X variable.
§ Test Heteroskedastity of residuals: the residuals seem not increase as the fitted Y values increase. So, heteroscedasticity
does not exist.
2017 Copyright © NIBCLive.com – Not for Redistribution
Allied
Millennial Partners, LLC | Twilio Quantitative Research Report

Purchase answer to see full
attachment