Auction2ndCap-Functions {antitrust} | R Documentation |
(Capacity Constrained) 2nd Price Auction Model
Description
Calibrates the parameters of bidder cost distributions and then simulates the price effect of a merger between two firms under the assumption that firms are competing in a (Capacity Constrained) 2nd price auction.
Let k denote the number of firms bidding in the auction below.
Usage
auction2nd.cap(
capacities,
margins,
prices,
reserve = NA,
shareInside = NA,
sellerCostCDF = c("punif", "pexp", "pweibull", "pgumbel", "pfrechet"),
ownerPre,
ownerPost,
mcDelta = rep(0, length(capacities)),
constrain.reserve = TRUE,
parmsStart,
control.slopes,
labels = as.character(ownerPre),
...
)
Arguments
capacities |
A length k vector of firm capacities OR capacity shares. |
margins |
A length k vector of product margins. All margins must be either be between 0 and 1, or NA. |
prices |
A length k vector product prices. Prices may be NA. |
reserve |
A length 1 vector equal to the buyer's reserve price. Default is NA. |
shareInside |
A length 1 vector equal to the probability that the buyer does not select the outside option. Default is NA. |
sellerCostCDF |
A length 1 character vector indicating which probability distribution will be used to model bidder cost draws. Possible options are "punif", "pexp", "pweibull", "pgumbel", "pfrechet". Default is "punif". |
ownerPre |
A length k factor whose values indicate which firms are present in the market pre-merger. |
ownerPost |
A length k factor whose values indicate which firms are present in the market post-merger. |
mcDelta |
A vector of length k where each element equals the proportional change in a firm's capacity due to the merger. Default is 0, which assumes that the merger does not affect any products' capacity. |
constrain.reserve |
If TRUE, the buyer's post-merger optimal reserve price is assumed to equal the buyer's pre-merger optimal reserve price. If FALSE, the buyer re-calculates her optimal reserve price post-merger. |
parmsStart |
A vector of starting values for calibrated parameters. See below for more details. |
control.slopes |
A list of |
labels |
A k-length vector of labels. Default is "Firm", where ‘#’ is a number between 1 and the length of ‘capacities’. |
... |
Additional options to feed to either |
Details
auction2nd.cap
examines how a merger affects equilbrium bidding
behavior when a single buyer is running a 2nd price procurement
auction with bidders whose marginal cost of supplying a homogenous product is
private information. This version of the model assumes that
bidders are differentiated by their capacities in the sense that firms
with greater capacity are more likely to have lower costs than firms
with smaller capacities.
Using firm prices, shares, and margins, as well as information
on the auction reserve price as well as the proportion of buyers who
choose not to purchase from any bidder, auction2nd.cap
calibrates the parameters of the common distribution from which
bidder's costs are drawn (and, if
not supplied, the implied reserve price) and then uses these calibrated
parameters to calibrate the value to the buyer of selecting the
outside option. Once these parameters have been calibrated,
auction2nd.cap
computes the buyer's optimal pre-merger reservation
price, and if ‘constrain.reserve’ is FALSE, computes the buyer's
optimal post-merger reservation price (setting ‘constrain.reserve’ to
TRUE sets the buyer's post-merger optimal reserve equal to the buyer's
pre-merger optimal reserve). The pre- and post-merger expected price, conditional on a particular bidder winning, are then calculated.
Currently, the common distribution from which costs may be drawn is
restricted to be either: Uniform ("punif"), Exponential ("pexp"), Weibull
("pweibull"), Gumbel ("pgumbel"), or Frechet ("pfrechet"). Note that
the Exponential is a single parameter distribution, the Uniform and
Weibull are two parameter distributions, and the Gumbel and Frechet
are 3 parameter distributions. Accordingly, sufficient price, margin,
reserve, and outside share information must be supplied in order to
calibrate the parameters of the specified
distribution. auction2nd.cap
returns an error if insufficient
information is supplied.
Value
auction2nd.cap
returns an instance of class
Auction2ndCap
.
Author(s)
Charles Taragin ctaragin+antitrustr@gmail.com, with code contributed by Michael Sandfort and Nathan Miller
References
Keith Waehrer and Perry, Martin (2003). “The Effects of Mergers in Open Auction Markets”, Rand Journal of Economics, 34(2), pp. 287-304.
Examples
##Suppose there are 3 firms (A,B,C) participating in a procurement auction with
## an unknown reservation price and that firm A acquires firm B.
caps <- c(0.65,0.30,0.05) # total capacity normalized to 1 in this example
inShare <- .67 # probability that buyer does not select
# any bidder
prices <- c(3.89, 3.79, 3.74) # average price charged by each firm
margins <- c(.228, .209, 0.197) # average margin earned by each firm
ownerPre <- ownerPost <-c("A","B","C")
ownerPost[ownerPost=="B"] <- "A"
##assume costs are uniformly distributed with unknown bounds
result.unif = auction2nd.cap(
capacities=caps,
margins=margins,prices=prices,reserve=NA,
shareInside=inShare,
sellerCostCDF="punif",
ownerPre=ownerPre,ownerPost=ownerPost,
labels=ownerPre
)
print(result.unif)
summary(result.unif)
## Get a detailed description of the 'Auction2ndCap' class slots
showClass("Auction2ndCap")
## Show all methods attached to the 'Auction2ndCap' Class
showMethods(classes="Auction2ndCap")