| fpa_corner_test | R Documentation |
Decides whether any binding reserve price is optimal. The point rule classifies the sample as a corner (no binding reserve optimal) when
T = \min_{u \in [p_{lo},\, p_{hi}]} \hat\omega(u) - v_s \ge 0,
with \hat\omega the estimated affiliated virtual value of
[fpa_virtual_value()]. The window starts at 'p_lo = 0.10' rather than at
the boundary: with v_s equal to the lower end of the support,
\omega(u) \to v_s as u \to 0 for every copula, so the region
near zero carries no information about the corner, while the quantile
density of the pseudo-values is least accurately estimated there.
The decision is the point rule on the full sample ('decision = "point"',
the default and the rule used in Doosti 2026c): a corner is reported when
T \ge 0. The null tested is "no reserve above the 'p_lo' quantile
beats no reserve". In applications the copula family should be chosen with
[copula_spec_test()].
With 'B > 0', auctions are resampled with replacement, with the bandwidths
of both stages selected once on the full sample and held fixed in every
replication, and the frequency with which the point rule reports a corner is
returned. Two alternative uses of the bootstrap are available but are not
the default: 'decision = "bootstrap"' reports a corner when that frequency
is at least 'level'; and 'corner_not_rejected' records whether the upper
1 - \alpha bootstrap percentile of T is non-negative (a
conservative rule, since T, a minimum of a noisy curve, is biased
downward).
fpa_corner_test(
bids,
v_s = 0,
family,
method = "poisson",
bandwidth = "rlcv",
qdf_method = "poisson",
p_lo = 0.1,
p_hi = 0.98,
B = 0,
decision = c("point", "bootstrap"),
level = 0.5,
alpha = 0.1,
...
)
## S3 method for class 'fpa_corner_test'
print(x, ...)
bids |
an 'L' by 'n' matrix of bids, one row per auction. |
v_s |
seller's valuation. |
family |
copula family used to recover the values (see [fpa_values()]); required, because the corner result depends on it. |
method, bandwidth |
first-stage quantile density estimator and bandwidth rule for [fpa_values()]; 'bandwidth' is also used for the quantile density of the pseudo-values. |
qdf_method |
quantile density estimator for the pseudo-values. |
p_lo, p_hi |
window of quantiles over which the minimum is taken. |
B |
number of bootstrap replications (0: point rule only). |
decision |
'"point"' (default): the point rule on the full sample; '"bootstrap"': a corner when the bootstrap frequency is at least 'level' (requires 'B > 0'). |
level |
bootstrap corner frequency above which a corner is reported when 'decision = "bootstrap"'. |
alpha |
level for the upper bootstrap percentile of the statistic. |
... |
further arguments to [fpa_values()]. |
x |
an '"fpa_corner_test"' object. |
An object of class '"fpa_corner_test"': a list with the
'statistic' T, the decision 'corner', the estimated virtual value
'omega' on the grid 'U', 'v_s', 'p_range', the 'bandwidth's used in
the two stages and the 'decision' rule; with 'B > 0' also
'boot_stat', 'boot_corner_freq', 'boot_upper' and 'corner_not_rejected'.
The 'print()' method is called for its side effect of printing the
decision and returns 'x' invisibly.
Call 'set.seed()' beforehand to make the bootstrap reproducible.
Doosti, H. (2026c). Optimal reserve prices in affiliated private value auctions: a copula–quantile density approach. SSRN preprint. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.2139/ssrn.7273869")}
set.seed(1)
Q <- function(u) (1 - 8 * u / 9)^(-1/2)
sim <- fpa_simulate(60, 3, Q, family = "clayton",
theta = copula_tau_to_theta(0.5, "clayton"))
fpa_corner_test(sim$bids, v_s = 1, family = "clayton")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.