My goal here was roughly to minimize the amount of manual analysis. I used Python to graph the mean revenue by species and age, and also estimate the distribution along which other bidders bid.
Everything seems roughly linear, with perhaps some nonlinearity in winter wolf bids. Given that the sample mean revenue should be an unbiased estimator of revenue, and the probability of winning for a given bid should also be an unbiased estimator, we can use linear regression for each species to estimate revenue, and logistic regression on (age, bid) to estimate the probability of winning a given auction with a given bid.
Using logistic regression implicitly assumes the distribution is logistic, which might be problematic but seems okay. Since we want to maximize expected profit = p_win(bid) * (revenue—bid), we can throw this into the scipy black-box optimizer to find the bid price that maximizes profit. This gave us the following bids:
One could probably do better by actually looking at the distribution of non-carver winning bids, but I don’t know the best way to account for selection (using the distribution directly would create a biased distribution, since they’re always higher than the carver bid).
My fairly low-effort attempt:
My goal here was roughly to minimize the amount of manual analysis. I used Python to graph the mean revenue by species and age, and also estimate the distribution along which other bidders bid.
Everything seems roughly linear, with perhaps some nonlinearity in winter wolf bids. Given that the sample mean revenue should be an unbiased estimator of revenue, and the probability of winning for a given bid should also be an unbiased estimator, we can use linear regression for each species to estimate revenue, and logistic regression on (age, bid) to estimate the probability of winning a given auction with a given bid.
Using logistic regression implicitly assumes the distribution is logistic, which might be problematic but seems okay. Since we want to maximize expected profit = p_win(bid) * (revenue—bid), we can throw this into the scipy black-box optimizer to find the bid price that maximizes profit. This gave us the following bids:
One could probably do better by actually looking at the distribution of non-carver winning bids, but I don’t know the best way to account for selection (using the distribution directly would create a biased distribution, since they’re always higher than the carver bid).