*! version 1.0.1 25may2020

help markupest

Title

markupest - Markup Estimation

Syntax

MICRO

De Loecker and Warzynski (DLW, 2012)

markupest markupvar [if] [in]
, inputvar(varname) method(dlw) [verbose savebeta replace corrected id(varname) t(varname) output(varname) free(varlist) proxy(varlist) state(varname) prodestoptions(see prodest) estimates(estimates name)}]

MACRO

Hall (2018)

markupest markupvar [if] [in]
, method(hall) [verbose savebeta W(varname) replace id(varname) t(varname) GO(varname) deltago(varname) pgo(varname) DELTAvars(varlist) PRICEvars(varlist) INSTRuments(varlist) timevarying]

Roeger (1995)

markupest markupvar [if] [in]
, method(roeger) [verbose savebeta W(varname) replace id(varname) t(varname) GO(varname) INputs(varlist)]

method(name) accepts values dlw (De Loecker-Warzynski), roeger (Roeger), hall (Hall, 1988, 2018)

DLW_options

General
A panel and a time variable must be specified. Use xtset or the id(varname) and t(varname) options

* method(dlw) estimation method

* inputvar(varlist) variable input used for markup estimation

corrected correct markups with the first-stage resdiuals. Requires PF estimation with the prodest option fsreadisuals(newvar)

verbose print on-screen the estimates of beta

savebeta store the estimated beta in variables _b + varname

replace replace markupvar

PF estimation
+ output(varname) log() of output variable - e.g., value added - used for PF estimation

+ state(varname) log() of state variable - capital - used for PF estimation

+ free(varlist) log() of free variable(s) - e.g., labor - used for PF estimation

+ proxy(varlist) log() of proxy variable(s) - e.g. intermediate input - used for PF estimation

prodestoptions(string) all available options for PF estimation in prodest. see prodest

Saved results
° estimates(name) prodest saved results to be used for markup estimation (see estimates_store)

HALL_options

General
A panel and a time variable must be specified. Use xtset or the id(varname) and t(varname) options

* method(hall) estimation method

* GO(varname) gross output

* deltago(varname) change in gross output

* pgo(varname) change in gross output prices

* deltavars(varlist) changes in production inputs

* pricevars(varlist) changes in production input costs

* instruments(varlist) instrumental variable(s)

timevarying returns the time-varying version of Hall's estimator

W(varname) regression weights

verbose print on-screen the estimates of beta

savebeta store the estimated beta in variables _b + varname

ROEGER_options

General
A panel and a time variable must be specified. Use xtset or the id(varname) and t(varname) options

* method(roeger) estimation method

* go(varname) gross output

* inputs(varname) production inputs - capital must be listed last

W(varname) regression weights

verbose print on-screen the estimates of beta

savebeta store the estimated beta in variables _b + varname

Description

markupest implements the markup estimation micro-approach proposed by De Loecker and Warzynski (AER, 2012), and the macro estimation routines proposed by Hall (JPE, 1988), Roeger (JPE, 1995) and Hall (WP, 2018).

Micro.1) De Loecker and Warzynski (2012)

Consider N heterogeneous firms competing à la Cournot and producing output according to a multiple-input Production Function (PF) of the form

Y_it = F_it(I^1_it, ... , I^G_it, K_it, u_it) (1)

where I^1_it, ... , I^G_it are variable inputs - including labor, electricity, intermediate inputs, etc. - K_it is capital and u_it is the idiosyncratic, Hicks-neutral productivity parameter.

Without loss of generality, consider a single variable input production technology in labor L_it, with an associated wage of w_it. DLW consider the dual of the profit maximization problem of the firm (i.e., the cost minimization) and setup a Lagrangian whose FOC with respect to labor reads

dLagr^DLW / dL_it = w_it - lambda_it * dF(L_it, K_it, u_it)/dL_it (2)

note that dLagr^DLW / dY_it = lambda_it stands for the marginal cost of production at any level of output Y_it. Accordingly, the most straightforward definition of markup is the price-marginal cost ratio, i.e., mu_it = P_it / lambda_it.

Rearranging (2) and multiplying both sides by L_it / Y_it yields

dF(L_it, K_it, u_it)/dL_it * L_it/Y_it = 1/lambda_it * w_it L_it/Y_it (3)

which, in words, means that the optimal demand for labor is obtained by equalizing the output elasticity (theta^L_it = dF(L_it, K_it, u_it)/dL_it * L_it/Y_it) and an inverse function of marginal cost lambda_it and labor share (w_it L_it/Y_it).

Building on the above, the estimable formula for markup estimation reads mu_it = theta^L_it / alpha^L_it, where alpha^L_it is the labor share on total output (i.e., input share for multiple variable input PFs).

Macro.1) Hall (1986, 1988, 2018)

Under the assumption of Constant Returns to Scale (CSR), Hicks-neutral technology and perfect competition, the technological changes Delta log(Theta)_t = theta_t are captured by the so-called Solow residuals. Indeed, it is possible to restate output growth in terms of weighted changes in inputs (X_it) plus changes in technology:

Delta Y_t = \sum_i alpha_it Delta X_it + theta_t (4)

however, Hall (1988) showed that, when the assumption of prerfect competition does not hold, the Solow residuals do not nail down theta_t anymore, being instead a weighted sum of technological changes and growth rate of output-capital ratio (whose weights are a function of the markups. More specifically, the formula for the quantity-based Solow residual reads

SolowResQ_it = Delta Y_it - alpha^L_t Delta L_t - alpha^M_t Delta M_t - (1 - alpha^L_t - alpha^M_t) Delta K_t = (1 - 1/mu_t) (Delta Y_t - Delta K_t) + (1/mu_t) theta_t (5)

where (5) must be corrected for endogeneity in order to ensure a correct identificaiton. Hall (1988, 2018) proposes to use exogenous demand shifters like unexpected shocks in military spending, or changes in energy costs, as instruments.

Macro.2) Roeger (1995)

In order to overcome the main drawbacks of the Hall model - which are i) the validity of the instruments, for all sectors, countries, or periods of time, and ii) the availability of the data. In order to do that, Roeger proposes to exploit the dual problem of (4), that is, use the cost minimization of the firm, too, and obtain a price-based Solow residual to be constrasted with its quantity-based counterpart. The former is defined as

SolowResP_it = Delta p_t - alpha^L_t Delta w_t - alpha^M_t Delta m_t - (1 - alpha^L_t - alpha^M_t) Delta r_t = (1 - 1/mu_t) (Delta p_t - Delta r_t) - (1/mu_t) theta_t (6)

where p_t is gross output price, w_t stands for the wage level, whereas m_t and r_t capture input and capital prices, respectively. The main intuition behind the model is that, by summing up (5) and (6), the technological changes are net out of the equation, and all resulting variables are expressed in nominal, and observable, terms. More specifically, the resulting equation is

SolowResQ_t - SolowResP_t = (Delta p_t + Delta Y_t) - alpha^L_t(Delta w_t + Delta L_t) - alpha^M_t(Delta m_t + Delta M_t) - (1 - alpha^L_t - alpha^M_t)(Delta r_t + Delta K_t) =
= (1 - 1/mu_t)[(Delta p_t + Delta Q_t) - (Delta r_t + Delta K_t)]

which is estimable with an OLS model. More specifically, if we define Y_t = SolowResQ_t - SolowResP_it, X_t = [(Delta p_t + Delta Q_t) - (Delta r_t + Delta K_t)], then Y_t = beta X_t + epsilon_t is identified only if one assumes a constant markup (i.e., mu_t = mu) which can be retrieved by inverting the estimated beta - i.e., mu^R = 1 / (1 - beta^R).

Examples

Ex.1) DLW method: markup estimation on simulated data

. use "https://raw.githubusercontent.com/GabrieleRovigatti/prodest/master/markupest/data/f_DGP3_replica.dta", clear

(load data)

Markup estimation: Translog ACF, corrected for first stage

. markupest mkupD3_m1_t_corr, method(dlw) output(lny) inputvar(lnl) free(lnl) state(lnk) proxy(lnm1) prodestopt("poly(3) acf trans va") corrected verbose

(generate markups)

Markup estimation: Cobb-Douglas, not corrected

. markupest mkupD3_m1_t_corr, method(dlw) output(lny) inputvar(lnl) free(lnl) state(lnk) proxy(lnm1) prodestopt("poly(3) acf trans va") corrected verbose

(generate markups)

Ex.2) Hall and Roeger methods: markup estimation on BLS data

From "https://www.bls.gov/mfp/special_requests/klemscombinedbymeasure.xlsx"
. use "https://raw.githubusercontent.com/GabrieleRovigatti/prodest/master/markupest/data/bls_data.dta", clear

(load data)

Hall - time invariant

. bys naics_2d: markupest mkup_hall, inputs(K L M S E) deltavars( deltaK deltaL deltaM deltaS deltaE) method(hall) go(Y) deltago(deltaY) instruments(deltainstEq deltainstRD deltainstSh deltainstSo deltainstOP)

(click to run)

Roeger - time invariant

. bys naics_2d: markupest mkup_roeg, inputs(L M S E K) method(roeger) go(Y)

(click to run)

Collapse to compare

. collapse (mean) mkup_h mkup_roeg, by(naics_2d)

(click to run)

References

Rovigatti, G., 2020,
Markup estimation using Stata: the Micro and the Macro approaches with markupest.
Working Paper

Rovigatti, G. and Mollisi, V., 2018,
Theory and practice of total-factor productivity estimation: The control function approach using Stata.
The Stata Journal, 18, (3), pp.618-662

De Loecker, J., and Warzynski, F., 2012,
Markups and firm-level export status.
American economic review 102(6), pp.2437–71

Hall, R. E., 1988,
The relation between price and marginal cost in US industry.
Journal of political Economy 96(5), pp.921–947

Hall, R. E., 2018,
New evidence on the markup of prices over marginal costs and the role of mega-firms in the us economy.
NBER Working Paper

Roeger, W., 1995,
Can imperfect competition explain the difference between primal and dual productivity measures? Estimates for US manufacturing
Journal of political Economy 103(2), pp.316–330

Saved results

markupest saves the following in e():

General

e(cmd) markupest

e(markupvar) name of estimated markups variable

e(markuptype) type of estimated markups - micro or macro

e(method) estimation method: dlw, hall, or roeger

e(id) panel varname

e(t) time varname

e(w) regression weights

Micro

e(inputvar) varname of the variable input used for markup estimation(s)

e(output) varname of the output variable(s)

e(free) varname of the free variable(s)

e(state) varname of the state variable(s)

e(proxy) varname of the proxy variable(s)

e(PFest_method) PF estimation method (op, lp, wrdg, mr)

e(prodestOPTS) string with all prodest supplementary options

e(corrected) markups corrected for first-stage residuals

Macro

e(go) varname of the gross output variable

e(inputs) varnames of input variables

e(deltago) varname of gross output changes. Hall method only

e(deltavars) varnames of the changes in input variables. Hall method only

e(pgo) varname of changes in gross output price. Hall method only

e(pricevars) varnames of changes in input variable prices. Hall method only

e(instruments) varname of the instruments. Hall method only

e(timevarying) time-varying version of the Hall method

Authors

Gabriele Rovigatti

Bank of Italy

Rome, Italy

gabriele.rovigatti@gmail.com

Also see

Online: prodest, prodest_p

Rovigatti, G. and Mollisi, V., 2018,
Theory and practice of total-factor productivity estimation: The control function approach using Stata.
The Stata Journal, 18, (3), pp.618-662

Bug Reporting

markupest is part of an ongoing project. Please submit bugs, comments and suggestions via email to:

gabriele.rovigatti@gmail.com

Please try to include steps to reproduce issues and possibly the output of the Stata command -creturn list-.