cournot_tariff {trade} | R Documentation |
Tariff Simulation With A Cournot Quantity Setting Game
Description
Simulate the effect of tariffs when firms play a cournot quantity setting game and consumer demand is either linear or log-linear
Usage
cournot_tariff(
prices,
quantities,
margins = matrix(NA_real_, nrow(quantities), ncol(quantities)),
demand = rep("linear", length(prices)),
cost = rep("linear", nrow(quantities)),
tariffPre = matrix(0, nrow = nrow(quantities), ncol = ncol(quantities)),
tariffPost = tariffPre,
mcfunPre = list(),
mcfunPost = mcfunPre,
vcfunPre = list(),
vcfunPost = vcfunPre,
capacitiesPre = rep(Inf, nrow(quantities)),
capacitiesPost = capacitiesPre,
productsPre = !is.na(quantities),
productsPost = productsPre,
owner = NULL,
mktElast = rep(NA_real_, length(prices)),
quantityStart = as.vector(quantities),
control.slopes,
control.equ,
labels,
...
)
Arguments
prices |
A length k vector product prices. |
quantities |
An n x k matrix of product quantities. All quantities must either be positive, or if the product is not produced by a plant, NA |
margins |
An n x k matrix of product margins. All margins must be either be between 0 and 1, or NA. |
demand |
A length k character vector equal to "linear" if a product's demand curve is assumed to be linear or "log" if a product's demand curve is assumed to be log-linear. |
cost |
A length k character vector equal to "linear" if a plant's marginal cost curve is assumed to be linear or "constant" if a plant's marginal curve is assumed to be constant. Returns an error if a multi-plant firm with constant marginal costs does not have capacity constraints. |
tariffPre |
An n x k matrix where each element equals the current ad valorem tariff (expressed as a proportion of consumer price) imposed on each product. Default is 0, which assumes no tariff. |
tariffPost |
An n x k matrix where each element equals the new ad valorem tariff (expressed as a proportion of consumer price) imposed on each product. Default is 0, which assumes no tariff. |
mcfunPre |
a length n list of functions that calculate a plant's marginal cost under the current tariff structure. If empty (the default), assumes quadratic costs. |
mcfunPost |
a length n list of functions that calculate a plant's marginal cost under the new tariff structure. If empty (the default), assumes quadratic costs. |
vcfunPre |
a length n list of functions that calculate a plant's variable cost under the current tariff structure. If empty (the default), assumes quadratic costs. |
vcfunPost |
a length n list of functions that calculate a plant's variable cost under the new tariff structure. If empty (the default), assumes quadratic costs. |
capacitiesPre |
A length n numeric vector of plant capacities under the current tariff regime. Default is Inf. |
capacitiesPost |
A length n numeric vector of plant capacities under the new tariff regime. Default is Inf. |
productsPre |
An n x k matrix that equals TRUE if under the current tariff regime, a plant produces a product. Default is TRUE if 'quantities' is not NA. |
productsPost |
An n x k matrix that equals TRUE if under the new tariff regime, a plant produces a product. Default equals 'productsPre'. |
owner |
EITHER a vector of length n whose values indicate which plants are commonly owned OR an n x n matrix of ownership shares. |
mktElast |
A length k vector of product elasticities. Default is a length k vector of NAs |
quantityStart |
A length k vector of quantities used as the initial guess in the nonlinear equation solver. Default is 'quantities'. |
control.slopes |
A list of |
control.equ |
A list of |
labels |
A k-length vector of labels. |
... |
Additional options to feed to the |
Details
Let k denote the number of products and n denote the number of plants. Using price, and quantity, information for all products in each market, as well as
margin information for at least one products in each market, cournot_tariff
is able to recover the
slopes and intercepts of either a Linear or Log-linear demand system. These parameters are then used
to simulate the price effects of a tariff under the assumption that the firms are playing a
homogeneous products simultaneous quantity setting game.
Value
cournot_tariff
returns an instance of class Cournot
from package antitrust, depending upon the value of the “demand” argument.
References
Simon P. Anderson, Andre de Palma, Brent Kreider, The efficiency of indirect taxes under imperfect competition, Journal of Public Economics, Volume 81, Issue 2, 2001,Pages 231-251.
Examples
## Simulate the effect of a 75% ad valorem tariff in a
## 5-firm, single-product market with linear demand and quadratic costs
## Firm 1 is assumed to be foreign, and so subject to a tariff
n <- 5 #number of firms in market
cap <- rnorm(n,mean = .5, sd = .1)
int <- 10
slope <- -.25
tariffPre <- tariffPost <- rep(0, n)
tariffPost[1] <- .75
B.pre.c = matrix(slope,nrow=n,ncol=n)
diag(B.pre.c) = 2* diag(B.pre.c) - 1/cap
quantity.pre.c = rowSums(solve(B.pre.c) * -int)
price.pre.c = int + slope * sum(quantity.pre.c)
mc.pre.c = quantity.pre.c/cap
vc.pre.c = quantity.pre.c^2/(2*cap)
margin.pre.c = 1 - mc.pre.c/price.pre.c
#prep inputs for Cournot
owner.pre <- diag(n)
result.c <- cournot_tariff(prices = price.pre.c,quantities = as.matrix(quantity.pre.c),
margins=as.matrix(margin.pre.c),
owner=owner.pre,
tariffPre = as.matrix(tariffPre),
tariffPost = as.matrix(tariffPost))
summary(result.c, market = TRUE) # summarize tariff (high-level)
summary(result.c, market = FALSE) # summarize tariff (detailed)