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 optim control parameters passed to the calibration routine optimizer (typically the calcSlopes method).

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 optim or constrOptim.

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@ftc.gov, 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")


[Package antitrust version 0.99.25 Index]