30.12.2013 Views

Towards an Intelligent Bidding Agent in QuiBids ... - Brown University

Towards an Intelligent Bidding Agent in QuiBids ... - Brown University

Towards an Intelligent Bidding Agent in QuiBids ... - Brown University

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Towards</strong> <strong>an</strong> <strong>Intelligent</strong> <strong>Bidd<strong>in</strong>g</strong> <strong>Agent</strong> <strong>in</strong> <strong>QuiBids</strong> Penny Auctions<br />

David Storch ∗<br />

dstorch@cs.brown.edu<br />

<strong>Brown</strong> <strong>University</strong> Department of Computer Science<br />

May 2, 2013<br />

Abstract<br />

Empirical data shows that penny auctions on <strong>QuiBids</strong><br />

are profitable for the auctioneer at the expense of the<br />

bidders. We seek to determ<strong>in</strong>e whether it is possible<br />

to design a bidd<strong>in</strong>g algorithm which outperforms actual<br />

<strong>QuiBids</strong> users, capable of consistently mak<strong>in</strong>g a<br />

profit <strong>in</strong> <strong>QuiBids</strong> auctions over time. The ideal bidd<strong>in</strong>g<br />

strategy would w<strong>in</strong> the item while m<strong>in</strong>imiz<strong>in</strong>g<br />

the total number of bids placed over the course of the<br />

auction—that is, it should only bid when the auction<br />

is on the verge of end<strong>in</strong>g. We use data scraped from<br />

<strong>QuiBids</strong> <strong>in</strong> order to tra<strong>in</strong> a hierarchical supervised<br />

learn<strong>in</strong>g algorithm capable of predict<strong>in</strong>g the end of<br />

novel <strong>QuiBids</strong> auctions. The results show that we c<strong>an</strong><br />

predict the end of the auction <strong>in</strong> most cases with<strong>in</strong> a<br />

resolution of a few hundred bids.<br />

1 Introduction<br />

A penny auction is a form of ascend<strong>in</strong>g auction <strong>in</strong><br />

which each bidder must pay a fixed fee for each bid it<br />

places. The w<strong>in</strong>ner must also pay its bid <strong>in</strong> order to<br />

acquire the good up for auction, although the bid fees<br />

are often orders of magnitude larger th<strong>an</strong> the good<br />

price. Furthermore, each bid causes the good price<br />

to <strong>in</strong>crease by a small, fixed <strong>in</strong>crement, usually one<br />

cent. Penny auctions are all-pay auctions—the bid<br />

fees must be paid by both w<strong>in</strong>ners <strong>an</strong>d losers—<strong>an</strong>d<br />

hence c<strong>an</strong> be immensely profitable for the auctioneer<br />

(Krishna <strong>an</strong>d Morg<strong>an</strong>, 1997 [6]). Profitability for the<br />

auctioneer is the consequence of penny auction bid-<br />

∗ I would like to th<strong>an</strong>k my advisor, Amy Greenwald, <strong>an</strong>d<br />

my collaborator, Eric Sodomka, for m<strong>an</strong>y hours of helpful discussion.<br />

I also credit Eric Sodomka for his contributions to<br />

the section def<strong>in</strong><strong>in</strong>g penny auctions. Th<strong>an</strong>ks also to Jeff <strong>an</strong>d<br />

Eric Stix for their help with the <strong>in</strong>itial stages of this project.<br />

F<strong>in</strong>ally, I would like to th<strong>an</strong>k my parents for their support <strong>in</strong><br />

all corners of life.<br />

ders dramatically overbidd<strong>in</strong>g <strong>in</strong> aggregate (Augenblick,<br />

2012 [1], W<strong>an</strong>g <strong>an</strong>d Xu, 2012 [10], H<strong>in</strong>nosaar,<br />

2010 [5]).<br />

The penny auction website <strong>QuiBids</strong> 1 advertises the<br />

possibility for outrageous sav<strong>in</strong>gs on retail items. It is<br />

certa<strong>in</strong>ly the case that some auctions result <strong>in</strong> items<br />

be<strong>in</strong>g sold to <strong>QuiBids</strong> users far below their actual<br />

retail value. But is it really possible to consistently<br />

make a profit by participat<strong>in</strong>g <strong>in</strong> onl<strong>in</strong>e penny auctions?<br />

Or is it more accurate to categorize penny<br />

auctions as a form of gambl<strong>in</strong>g, <strong>in</strong> which the auction<br />

house will <strong>in</strong>evitably come out ahead over time?<br />

Our past work uses empirical data scraped from<br />

<strong>QuiBids</strong> to demonstrate that the auctioneer achieves<br />

profit marg<strong>in</strong>s on the order of 30%, at the expense of<br />

most bidders (Stix et al., 2013 [8]). The vast majority<br />

of bidders take at least a small loss, <strong>an</strong>d very few end<br />

up profit<strong>in</strong>g. The implication is that it is difficult<br />

to make a profit <strong>in</strong> <strong>QuiBids</strong> auctions with a naive<br />

strategy.<br />

We <strong>in</strong>vestigate whether a mach<strong>in</strong>e learn<strong>in</strong>g-based<br />

bidd<strong>in</strong>g agent is capable of reliably turn<strong>in</strong>g a profit <strong>in</strong><br />

<strong>QuiBids</strong> auctions. At the very least, <strong>QuiBids</strong>’ advertis<strong>in</strong>g<br />

campaign is mislead<strong>in</strong>g <strong>in</strong> the sense that naive<br />

bidd<strong>in</strong>g behavior is unlikely to lead to large sav<strong>in</strong>gs<br />

on retail items. We wish to prove, however, that a<br />

more sophisticated agent is <strong>in</strong> theory capable of atta<strong>in</strong><strong>in</strong>g<br />

the advertised sav<strong>in</strong>gs.<br />

2 Def<strong>in</strong><strong>in</strong>g Penny Auctions<br />

2.1 Auction Model<br />

At <strong>an</strong>y po<strong>in</strong>t <strong>in</strong> time, a penny auction is characterized<br />

by three state variables: the current highest bid p,<br />

the current highest bidder w, <strong>an</strong>d the time rema<strong>in</strong><strong>in</strong>g<br />

on the auction clock t. The auction beg<strong>in</strong>s with some<br />

1 www.quibids.com<br />

1


<strong>in</strong>itial bid price p := p <strong>an</strong>d <strong>an</strong> <strong>in</strong>itial clock time of t :=<br />

t. The high bidder is <strong>in</strong>itially null (w := ∅). The clock<br />

time t beg<strong>in</strong>s decreas<strong>in</strong>g, <strong>an</strong>d while t > 0, <strong>an</strong>y bidder<br />

b may place a bid at some fixed <strong>in</strong>cremental amount<br />

δ above the current highest bid. In order to place<br />

its bid, however, bidder b must pay the auctioneer <strong>an</strong><br />

immediate bid fee φ. The highest bidder is then set<br />

to w := b, <strong>an</strong>d the new bid price becomes p := p + δ.<br />

If the time rema<strong>in</strong><strong>in</strong>g on the clock when the bid is<br />

placed is lower th<strong>an</strong> the reset time t reset , then the<br />

clock is set to t := t reset . Equivalently, when a bid<br />

is placed, the clock is set to t := max(t, t reset ) <strong>in</strong><br />

order to ensure that other bidders have at least t reset<br />

to place <strong>an</strong> additional bid. The auction ends when<br />

t = 0, at which po<strong>in</strong>t the current highest bidder w<br />

w<strong>in</strong>s the item <strong>an</strong>d pays the current bid price p (<strong>in</strong><br />

addition to <strong>an</strong>y bid fees paid along the way). Note<br />

that both the w<strong>in</strong>n<strong>in</strong>g bidder <strong>an</strong>d the los<strong>in</strong>g bidders<br />

have to pay the bid fee for every bid they place.<br />

2.2 <strong>QuiBids</strong>’ Rules<br />

<strong>QuiBids</strong> acts as the auctioneer for multiple penny<br />

auctions that happen both simult<strong>an</strong>eously <strong>an</strong>d sequentially<br />

across the day. For each of its auctions,<br />

<strong>QuiBids</strong> follows with the above model where p = $0,<br />

φ = $0.60, <strong>an</strong>d δ = $0.01. The reset time t reset is a<br />

function with r<strong>an</strong>ge {20, 15, 10} seconds whose output<br />

decreases as the auction progresses. The start<strong>in</strong>g<br />

clock time t varies depend<strong>in</strong>g on the auction, but is<br />

on the order of hours.<br />

<strong>QuiBids</strong> adds some vari<strong>an</strong>ts to the st<strong>an</strong>dard penny<br />

auction, <strong>in</strong>clud<strong>in</strong>g Buy-Now, voucher bids, <strong>an</strong>d the<br />

BidOMatic. We describe these these additional auction<br />

rules below for completeness, but will not <strong>an</strong>alyze<br />

them <strong>in</strong> greater detail <strong>in</strong> this work (see (E. Stix<br />

et al., 2013 [8]) for a more thorough discussion). The<br />

Buy-Now feature allows <strong>an</strong>y bidder who has lost <strong>an</strong><br />

auction to buy a duplicate version of that good at<br />

a fixed price m. If a bidder uses Buy-Now, <strong>an</strong>y bid<br />

fees the bidder <strong>in</strong>curred <strong>in</strong> the auction are subtracted<br />

from m. The Buy-Now price is usually marked up<br />

from the actual retail value of the good, with <strong>an</strong> average<br />

markup of approximately 21% (E. Stix et al.,<br />

2013 [8]).<br />

Voucher bids are a special type of good auctioned<br />

<strong>in</strong> packs by <strong>QuiBids</strong>. When a bidder w<strong>in</strong>s a pack of N<br />

voucher bids, it is able to place N subsequent bids <strong>in</strong><br />

future auctions for a bid fee of $0 <strong>in</strong>stead of the usual<br />

fee φ. The Buy-Now price for a pack of N voucher<br />

bids is always m = φN. Voucher bids are identical to<br />

st<strong>an</strong>dard bids with one exception: whereas each st<strong>an</strong>dard<br />

bid reduces the Buy-Now price by φ, voucher<br />

bids c<strong>an</strong>not be used to reduce the Buy-Now price. If<br />

a bidder has won a voucher bid pack, it c<strong>an</strong> choose<br />

at <strong>an</strong>y time whether to use these voucher bids or to<br />

use st<strong>an</strong>dard bids <strong>in</strong> subsequent auctions.<br />

The BidOMatic tool allows a bidder to specify a<br />

number of bids between 3 <strong>an</strong>d 25 that will be automatically<br />

submitted on the bidder’s behalf, start<strong>in</strong>g<br />

at a particular price p. The BidOMatic will submit<br />

each bid at a r<strong>an</strong>dom time between the reset time<br />

t reset <strong>an</strong>d zero seconds. Whether or not a bid is<br />

placed with the BidOMatic is public <strong>in</strong>formation.<br />

3 Data<br />

The dataset used <strong>in</strong> this paper consists of the complete<br />

bid histories for over 6,000 <strong>QuiBids</strong> auctions. 2<br />

The auctions took place between February 21st, 2013<br />

<strong>an</strong>d March 19th, 2013. For each bid <strong>in</strong> each of these<br />

auctions we record the follow<strong>in</strong>g <strong>in</strong>formation:<br />

1. Auction ID: a unique auction identifier assigned<br />

by <strong>QuiBids</strong>.<br />

2. Buy-Now Price: <strong>QuiBids</strong>’ listed price m for the<br />

good be<strong>in</strong>g auctioned.<br />

3. Item Name: the name of the good be<strong>in</strong>g auctioned.<br />

4. Highest Bid: the new highest bid price p of the<br />

good after this bid is placed.<br />

5. Bidder: a unique identifier for the user who<br />

placed the bid.<br />

6. Bid Type: a flag which is 1 if the bid was placed<br />

by the BidOMatic, or 0 if the bid was a s<strong>in</strong>gle<br />

bid.<br />

7. Recent Bidders: the number of dist<strong>in</strong>ct bidders<br />

who placed a bid <strong>in</strong> the previous five m<strong>in</strong>utes.<br />

8. Clock Time: the amount of time rema<strong>in</strong><strong>in</strong>g on<br />

the auction clock when the bid was placed, <strong>in</strong><br />

seconds.<br />

9. Reset Time: the time t reset , <strong>in</strong> seconds, to which<br />

the clock was reset follow<strong>in</strong>g this bid (either 20,<br />

15, or 10).<br />

10. Date: the date on which the bid was placed.<br />

2 The dataset was collected with a scraper written <strong>in</strong> Ruby<br />

us<strong>in</strong>g the Watir framework for web application test<strong>in</strong>g (www.<br />

watir.com).<br />

2


11. Time: the time of day, measured to the second,<br />

at which this bid was placed.<br />

Voucher bid auctions are excluded from the dataset.<br />

With the exception of voucher bid auctions, the<br />

complete auction histories constitute a representative<br />

sample of <strong>QuiBids</strong> auctions. There are roughly<br />

even numbers of recorded bids placed on items <strong>in</strong> each<br />

price category ($0–$50, $50–$100, <strong>an</strong>d so on) <strong>an</strong>d <strong>in</strong><br />

each retail category (e.g. electronics, home <strong>an</strong>d garden,<br />

gift cards). Only bids placed while t ≤ t reset<br />

were recorded.<br />

The raw data consists of a matrix R with the eleven<br />

columns described above. Each row <strong>in</strong> R corresponds<br />

to a particular bid. We c<strong>an</strong> also th<strong>in</strong>k of the raw data<br />

as comprised of a set A of auctions. For <strong>an</strong> auction<br />

a ∈ A we notate by R a the matrix of raw data for<br />

that particular auction. The rows of each such R a are<br />

sorted <strong>in</strong> ascend<strong>in</strong>g chronological order (i.e. the bids<br />

are sorted by the time at which they were placed).<br />

The f<strong>in</strong>al row of R a therefore identifies the w<strong>in</strong>ner of<br />

the auction a, the bid price at which the good was<br />

sold, <strong>an</strong>d the time at which the auction ended.<br />

4 Design<strong>in</strong>g An <strong>Agent</strong><br />

Our goal is to design <strong>an</strong> automated bidd<strong>in</strong>g agent<br />

for <strong>QuiBids</strong> penny auctions, rely<strong>in</strong>g on the data R<br />

scraped from <strong>QuiBids</strong> as tra<strong>in</strong><strong>in</strong>g data. From the bidder’s<br />

perspective, the ideal outcome of a penny auction<br />

is w<strong>in</strong>n<strong>in</strong>g the auction with a s<strong>in</strong>gle bid. Plac<strong>in</strong>g<br />

a bid is costly, so a rational bidder will refra<strong>in</strong><br />

from bidd<strong>in</strong>g until the auction would otherwise end.<br />

This, of course, is a drastic simplification s<strong>in</strong>ce a bidder<br />

c<strong>an</strong>not be sure about others’ <strong>in</strong>tentions <strong>an</strong>d c<strong>an</strong><br />

never be certa<strong>in</strong> whether <strong>an</strong> auction is about to end.<br />

Furthermore, the very act of bidd<strong>in</strong>g when the auction<br />

would otherwise end may <strong>in</strong>fluence the behavior<br />

of the other bidders, potentially caus<strong>in</strong>g the auction<br />

to cont<strong>in</strong>ue.<br />

The realization that the actions of <strong>an</strong> automated<br />

bidd<strong>in</strong>g agent alter the behavior of the other bidders<br />

poses a profound problem. The tra<strong>in</strong><strong>in</strong>g data, needless<br />

to say, does not <strong>in</strong>corporate the effects of the automated<br />

agent’s behavior. Consequently, the tra<strong>in</strong><strong>in</strong>g<br />

data might no longer be predictive of the auction<br />

outcome as soon as the agent places a bid. Proper<br />

evaluation of <strong>an</strong> automated agent, therefore, c<strong>an</strong>not<br />

be done with tra<strong>in</strong><strong>in</strong>g data alone, but rather would<br />

require active experiments with real hum<strong>an</strong> particip<strong>an</strong>ts.<br />

In order to sidestep this problem, we focus on design<strong>in</strong>g<br />

a method which, by passive observation of<br />

<strong>an</strong> auction a ′ , c<strong>an</strong> accurately predict the number of<br />

bids ŷ rema<strong>in</strong><strong>in</strong>g <strong>in</strong> the auction. The agent should<br />

produce a revised estimate of the number of bids rema<strong>in</strong><strong>in</strong>g<br />

after each successive bid is observed, so that<br />

it produces a vector of predictions ŷ a ′. The prediction<br />

made after observ<strong>in</strong>g the first i bids is denoted<br />

ŷ a ′[i]. For the purposes of evaluation, we presume<br />

that the bidd<strong>in</strong>g agent takes no action, <strong>an</strong>d therefore<br />

has no impact on the course of the auction. However,<br />

the predictions ŷ a ′ could <strong>in</strong> theory be basis for<br />

a profitable bidd<strong>in</strong>g strategy. We suggest three bidd<strong>in</strong>g<br />

strategies that c<strong>an</strong> be implemented on top of<br />

end-of-auction prediction:<br />

• Def<strong>in</strong>e a threshold ɛ. Do noth<strong>in</strong>g while ŷ a ′[i] > ɛ.<br />

As soon as ŷ a ′[i] ≤ ɛ, beg<strong>in</strong> bidd<strong>in</strong>g aggressively<br />

with the BidOMatic. Stop bidd<strong>in</strong>g aggressively<br />

only if the agent’s total expended bid fees equal<br />

the Buy-Now price m of the item, at which po<strong>in</strong>t<br />

Buy-Now should be <strong>in</strong>voked, or when the agent<br />

w<strong>in</strong>s the auction. Aggressive bidd<strong>in</strong>g behavior<br />

at the end of <strong>an</strong> auction has been shown to be<br />

associated with auction w<strong>in</strong>ners (J. Stix, 2012<br />

[9]). This f<strong>in</strong>d<strong>in</strong>g suggests that aptly timed aggressive<br />

bidd<strong>in</strong>g behavior might be capable of<br />

w<strong>in</strong>n<strong>in</strong>g, despite refra<strong>in</strong><strong>in</strong>g from submitt<strong>in</strong>g bids<br />

for the majority of the auction.<br />

• As before, def<strong>in</strong>e a threshold ɛ, but also def<strong>in</strong>e a<br />

clock time threshold t thresh . Instead of bidd<strong>in</strong>g<br />

aggressively with the BidOMatic, place a s<strong>in</strong>gle<br />

bid only when observ<strong>in</strong>g that ŷ a ′[i] ≤ ɛ <strong>an</strong>d t ≤<br />

t thresh . This is <strong>an</strong> extension of the “const<strong>an</strong>ttime”<br />

strategy proposed by (J. Stix, 2012 [9]).<br />

• Store the prediction ŷ start := ŷ a ′[1] associated<br />

with the first bid of the auction. Whenever the<br />

auction clock drops below t thresh seconds, bid<br />

with probability m<strong>in</strong>(1, max(0, ŷ a ′[i]/ŷ start )).<br />

4.1 A Hierarchical Method for Predict<strong>in</strong>g<br />

the Auction End<br />

We take a two-level hierarchical approach for predict<strong>in</strong>g<br />

the auction end. Given a novel auction a ′ , the first<br />

step is to compare a ′ to all tra<strong>in</strong><strong>in</strong>g auctions a ∈ A.<br />

The aim of this step is to identify a set of auctions<br />

S ⊂ A that are most similar to a ′ .<br />

The second step is to use each of the similar auctions<br />

s ∈ S <strong>in</strong> order to predict the number of bids<br />

3


ŷ a ′ rema<strong>in</strong><strong>in</strong>g <strong>in</strong> auction a ′ . Consider mak<strong>in</strong>g a prediction<br />

ŷ a ′[i] after a particular number of bids i has<br />

already elapsed. For each similar auction we obta<strong>in</strong><br />

a prediction ŷ s . The f<strong>in</strong>al prediction is the average of<br />

the <strong>in</strong>dividual predictions from the auctions <strong>in</strong> S:<br />

ŷ a ′[i] = 1<br />

|S|<br />

∑<br />

ŷ s (1)<br />

s∈S<br />

We develop the details of both steps of the two-level<br />

method <strong>in</strong> the follow<strong>in</strong>g sections. See Figures 1 <strong>an</strong>d<br />

2 for a summary of the method.<br />

4.2 Generat<strong>in</strong>g Feature Vectors<br />

The first step <strong>in</strong> the pipel<strong>in</strong>e <strong>in</strong>volves preprocess<strong>in</strong>g<br />

the raw bid histories <strong>in</strong> order to generate a tra<strong>in</strong><strong>in</strong>g<br />

set of feature vectors. We need to generate two<br />

types of feature vectors: per-auction feature vectors<br />

<strong>an</strong>d bid history feature vectors. Per-auction feature<br />

vectors are based on auction-level features such as<br />

the Buy-Now price of the good be<strong>in</strong>g auctioned <strong>an</strong>d<br />

the retail category of the good. The per-auction feature<br />

vectors are used <strong>in</strong> order to determ<strong>in</strong>e the set S<br />

of similar auctions. In contrast, bid history feature<br />

vectors are computed us<strong>in</strong>g more gr<strong>an</strong>ular bid-level<br />

<strong>in</strong>formation such as the time at which each bid was<br />

placed <strong>an</strong>d the user that placed each bid. The bid history<br />

feature vectors are used to make the predictions<br />

ŷ s . The process used to compute both per-auction<br />

feature vectors <strong>an</strong>d bid history feature vectors is described<br />

below.<br />

We wish to construct a s<strong>in</strong>gle per-auction feature<br />

vector x a for each a ∈ A. The per-auction feature<br />

vector should be a function of the very first bid<br />

recorded <strong>in</strong> the complete auction history. This me<strong>an</strong>s<br />

that after the bidd<strong>in</strong>g agent observes the first bid of<br />

a novel auction, it has enough <strong>in</strong>formation to map<br />

that auction <strong>in</strong>to the per-auction feature space <strong>an</strong>d<br />

compute the set S. Let the R a,i,j denote the submatrix<br />

of R a which conta<strong>in</strong>s rows i through j of the full<br />

matrix (<strong>in</strong>clusive). The per-auction feature vector x a<br />

for auction a is some function f of the open<strong>in</strong>g bid:<br />

x a = f(R a,1,1 ) (2)<br />

We make use of the rema<strong>in</strong><strong>in</strong>g rows of R a <strong>in</strong> order<br />

to compute the bid history feature vectors. For each<br />

auction <strong>in</strong> the raw data, the matrix R a will be converted<br />

<strong>in</strong>to the correspond<strong>in</strong>g matrix of feature vectors<br />

X a . Each row <strong>in</strong> X a is a bid history feature<br />

vector. Let the ith bid history feature vector (i.e.<br />

the ith row of X a ) be denoted by X a [i].<br />

The ith feature vector for auction a is a function of<br />

the first i bids <strong>in</strong> the recorded history. This design,<br />

aga<strong>in</strong>, has the bidd<strong>in</strong>g agent <strong>in</strong> m<strong>in</strong>d—the ith feature<br />

vector c<strong>an</strong> only depend on the bids that the agent will<br />

have seen so far. The rema<strong>in</strong><strong>in</strong>g bids are <strong>in</strong> the future<br />

<strong>an</strong>d are hence hidden. The ith feature vector c<strong>an</strong> now<br />

be written as a function g of the submatrix comprised<br />

of the first i rows of raw data:<br />

X a [i] = g(R a,1,i ) (3)<br />

Although f <strong>an</strong>d g are left unspecified here, we def<strong>in</strong>e<br />

particular a f <strong>an</strong>d a particular g <strong>in</strong> order to evaluate<br />

our method.<br />

Each bid history feature vector X a [i] has <strong>an</strong> associated<br />

tra<strong>in</strong><strong>in</strong>g label y a [i]. Equivalently, the tra<strong>in</strong><strong>in</strong>g<br />

data X a for auction a has <strong>an</strong> associated vector of labels<br />

y a . Suppose that the bid history for auction a<br />

conta<strong>in</strong>s n a bids. The label correspond<strong>in</strong>g to the ith<br />

feature vector is the number of succeed<strong>in</strong>g bids:<br />

y a [i] = n a − i (4)<br />

Each tra<strong>in</strong><strong>in</strong>g example is thus paired with a ground<br />

truth giv<strong>in</strong>g the number of bids rema<strong>in</strong><strong>in</strong>g <strong>in</strong> the auction.<br />

For evaluation, we compare our predictions ŷ a<br />

aga<strong>in</strong>st the ground truth y a .<br />

4.3 F<strong>in</strong>d<strong>in</strong>g Similar Auctions<br />

Our goal is, given a new auction a ′ , to f<strong>in</strong>d a set<br />

S ⊂ A of auctions which we will use to make a prediction<br />

of the number of bids rema<strong>in</strong><strong>in</strong>g. In order<br />

to do so, we make use of the set of per-auction feature<br />

vectors: {x a : a ∈ A}. We determ<strong>in</strong>e S us<strong>in</strong>g<br />

k-nearest neighbor where k is some predeterm<strong>in</strong>ed<br />

small <strong>in</strong>teger. Namely, the problem is to f<strong>in</strong>d a subset<br />

of auctions S such that |S| = k <strong>an</strong>d for <strong>an</strong>y s ∈ S:<br />

||x s − x a ′|| ≤ ||x a − x a ′|| ∀a ∈ A \ S (5)<br />

This S is not guar<strong>an</strong>teed to be unique; we choose a<br />

solution S uniformly at r<strong>an</strong>dom among all possible<br />

solutions. We efficiently f<strong>in</strong>d a solution that satisfies<br />

Equation 5 by us<strong>in</strong>g the set of per-auction feature<br />

vectors {x a } to construct a kd-tree, <strong>an</strong>d then query<strong>in</strong>g<br />

the kd-tree for the k vectors nearest to x a ′ (see<br />

e.g. (Yi<strong>an</strong>ilos, 1993 [11]) <strong>an</strong>d (Cormen et al., 2009<br />

[4])). The metric is Euclide<strong>an</strong> dist<strong>an</strong>ce.<br />

4.4 Predict<strong>in</strong>g Rema<strong>in</strong><strong>in</strong>g Bids<br />

Suppose that we are try<strong>in</strong>g to compute a particular<br />

ŷ s —we have identified <strong>an</strong> auction s which looks similar<br />

to the novel auction a ′ <strong>an</strong>d, by comparison to s,<br />

4


<strong>QuiBids</strong>Tra<strong>in</strong>(A tra<strong>in</strong> , R)<br />

1 E ← ∅<br />

2 models ← {}<br />

3 for a ∈ A tra<strong>in</strong> do<br />

4 x a ← f(R a,1,1 )<br />

5 E ← E ∪ x a<br />

6 n a ← length(R a )<br />

7 X a ← new matrix with n a rows<br />

8 y a ← new vector of length n a<br />

9 for i = 1, . . . , n a do<br />

10 X a [i] ← g(R a,1,i )<br />

11 y a [i] ← n a − i<br />

12 models[a] ← Tra<strong>in</strong>Model(X a , y a )<br />

13 output KDTreeConstruct(E), models<br />

Figure 1: Given the raw data for the set of tra<strong>in</strong><strong>in</strong>g auctions A tra<strong>in</strong> , the generic procedure shown here is<br />

used to tra<strong>in</strong> the hierarchical model. The procedure returns two data structures: a kd-tree constructed<br />

from the set of per-auction feature vectors, <strong>an</strong>d <strong>an</strong> associative data structure that maps from <strong>an</strong> auction to<br />

the correspond<strong>in</strong>g tra<strong>in</strong>ed model. Depend<strong>in</strong>g on whether we are runn<strong>in</strong>g knn-knn, knn-l<strong>in</strong>, or knn-poi, the<br />

Tra<strong>in</strong>Model procedure might <strong>in</strong>volve construct<strong>in</strong>g a kd-tree, comput<strong>in</strong>g parameters for a l<strong>in</strong>ear regression<br />

model, or comput<strong>in</strong>g parameters for a Poisson regression model. For details on notation, see the glossary of<br />

symbols (Figure 3).<br />

Symbol<br />

A tra<strong>in</strong><br />

A test<br />

a<br />

f<br />

g<br />

n a<br />

R<br />

R a<br />

R a,i,j<br />

S<br />

X a<br />

X a[i]<br />

x a<br />

y a<br />

y a[i]<br />

ŷ a<br />

z a<br />

δ<br />

ɛ<br />

φ<br />

θ<br />

Description<br />

the set of auctions <strong>in</strong> the full auction<br />

bid histories<br />

the set of auctions <strong>in</strong> the end auction data<br />

generic particular auction<br />

per-auction feature vector function<br />

bid history feature vector function<br />

the number of recorded bids <strong>in</strong> auction a<br />

matrix of all raw data<br />

matrix of raw data for auction a<br />

submatrix of R a consist<strong>in</strong>g of rows<br />

i through j, <strong>in</strong>clusive<br />

set of similar auctions found by the first<br />

step of the hierarchical method<br />

matrix conta<strong>in</strong><strong>in</strong>g feature vectors<br />

ith feature vector for auction a<br />

per-auction feature vector for auction a<br />

vector of tra<strong>in</strong><strong>in</strong>g labels for auction a<br />

ith tra<strong>in</strong><strong>in</strong>g label for auction a<br />

vector of predicted bids rema<strong>in</strong><strong>in</strong>g<br />

actual number of rema<strong>in</strong><strong>in</strong>g bids upon<br />

predict<strong>in</strong>g the auction end<br />

bid <strong>in</strong>crement<br />

bid threshold for comput<strong>in</strong>g z a<br />

bid fee<br />

vector of model parameters<br />

Figure 3: Glossary of symbols.<br />

we wish to determ<strong>in</strong>e the number of bids rema<strong>in</strong><strong>in</strong>g<br />

<strong>in</strong> a ′ . In order to accomplish this task, we harness the<br />

tra<strong>in</strong><strong>in</strong>g data X s <strong>an</strong>d the associated labels y s . If the<br />

first i bids of the novel auction have elapsed, then the<br />

most up-to-date bid history feature vector is X a ′[i].<br />

Our approach is to tra<strong>in</strong> a model with X s <strong>an</strong>d y s ,<br />

<strong>an</strong>d then to use X a ′[i] as test data which yields the<br />

model prediction ŷ s . We compare three models for<br />

solv<strong>in</strong>g this problem: 1) s<strong>in</strong>gle-nearest neighbor, 2)<br />

l<strong>in</strong>ear regression, <strong>an</strong>d 3) Poisson regression.<br />

In the s<strong>in</strong>gle-nearest neighbor case, we tra<strong>in</strong> a<br />

model for each a ∈ A by build<strong>in</strong>g a kd-tree conta<strong>in</strong><strong>in</strong>g<br />

the feature vectors <strong>in</strong> X a . In order to compute ŷ s , we<br />

first lookup the kd-tree correspond<strong>in</strong>g to auction s.<br />

Then we use this kd-tree to f<strong>in</strong>d the <strong>in</strong>dex j of the<br />

feature vector that is closest to X a ′[i] accord<strong>in</strong>g to a<br />

Euclide<strong>an</strong> dist<strong>an</strong>ce metric. If the tra<strong>in</strong><strong>in</strong>g data X s<br />

consists of n s bids:<br />

j = arg m<strong>in</strong><br />

1≤v≤n s<br />

||X s [v] − X a ′[i]|| (6)<br />

Although evaluat<strong>in</strong>g Equation 6 by brute force would<br />

require O(|S|) time, the time complexity of the kdtree<br />

query is logarithmic <strong>in</strong> the length of the auction<br />

history. Once we determ<strong>in</strong>e <strong>in</strong>dex j, we set<br />

ŷ s := y s [j]. After follow<strong>in</strong>g this process for each s, we<br />

5


<strong>QuiBids</strong>Test(A test , R, k, kdtree, models)<br />

1 Y ← ∅<br />

2 Ŷ ← ∅<br />

3 for a ∈ A test do<br />

4 x a ← f(R a,1,1 )<br />

5 S ← KDTreeQuery(kdtree, k, x a )<br />

6 n a ← length(R a )<br />

7 X a ← new matrix with n a rows<br />

8 y a ← new vector of length n a<br />

9 ŷ a ← new vector of length n a<br />

10 for i = 1, . . . , n a do<br />

11 X a [i] ← g(R a,1,i )<br />

12 y a [i] ← n a − i<br />

13 ŷ a [i] ← 0<br />

14 for s ∈ S do<br />

15 ŷ s ← Predict(models[s], X a [i])<br />

16 ŷ a [i] ← ŷ a [i] + ŷ s /k<br />

17 Ŷ ← Ŷ ∪ ŷ a<br />

18 Y ← Y ∪ y a<br />

19 output Y, Ŷ<br />

Figure 2: The procedure which is used to make predictions for all test auctions. Given the kd-tree <strong>an</strong>d<br />

tra<strong>in</strong>ed models generated by the <strong>QuiBids</strong>Tra<strong>in</strong> procedure, it returns the set of all prediction vectors,<br />

{ŷ a : a ∈ A test }, <strong>an</strong>d the set of all tra<strong>in</strong><strong>in</strong>g labels for the test data, {y a : a ∈ A test }. Depend<strong>in</strong>g on<br />

whether we are runn<strong>in</strong>g knn-knn, knn-l<strong>in</strong>, knn-poi, the Predict procedure could query a kd-tree for the<br />

s<strong>in</strong>gle-nearest neighbor, use a tra<strong>in</strong>ed l<strong>in</strong>ear regression model to make a prediction, or use a tra<strong>in</strong>ed Poisson<br />

regression model to make a prediction. For details on notation, see the glossary of symbols (Figure 3).<br />

6


compute the f<strong>in</strong>al estimate ŷ a ′[i] accord<strong>in</strong>g to Equation<br />

1.<br />

A general problem with nearest neighbor techniques<br />

is that Euclide<strong>an</strong> dist<strong>an</strong>ce loses its me<strong>an</strong><strong>in</strong>g<br />

<strong>in</strong> a high-dimensional space (Beyer et al., 1999 [2]).<br />

The s<strong>in</strong>gle-nearest neighbor strategy thus limits us<br />

to us<strong>in</strong>g a small number of features (on the order of<br />

10). This “curse of dimensionality” problem motivates<br />

us<strong>in</strong>g ord<strong>in</strong>ary least squares l<strong>in</strong>ear regression<br />

as <strong>an</strong> alternative approach. L<strong>in</strong>ear regression is also<br />

among the simplest of regression models, so it provides<br />

a basel<strong>in</strong>e for comparison aga<strong>in</strong>st other regression<br />

techniques.<br />

L<strong>in</strong>ear regression solves the “curse of dimensionality”<br />

problem, but suffers from a new problem: it<br />

yields negative predictions. The number of bids rema<strong>in</strong><strong>in</strong>g<br />

is always a nonnegative <strong>in</strong>teger. We therefore<br />

explore Poisson regression as a third technique<br />

for comput<strong>in</strong>g the estimates ŷ s . The Poisson regression<br />

model is tailored for mak<strong>in</strong>g predictions on<br />

count data. It is <strong>an</strong> <strong>in</strong>st<strong>an</strong>ce of a generalized l<strong>in</strong>ear<br />

model with a logarithmic l<strong>in</strong>k function (Cameron <strong>an</strong>d<br />

Trivedi, 1998 [3]). The model assumes that the data<br />

follows<br />

P (y a [i] | X a [i], θ) = Poisson(e θT X a[i] ) (7)<br />

where θ is a vector of the model parameters<br />

<strong>an</strong>d Poisson(λ) is the probability mass function of<br />

the Poisson distribution with me<strong>an</strong> λ. Equivalently,<br />

the labels are Poisson-distributed with me<strong>an</strong>s<br />

E[y a ] = exp(X a θ). Tra<strong>in</strong><strong>in</strong>g the model requires<br />

maximum-likelihood parameter estimation—f<strong>in</strong>d<strong>in</strong>g<br />

arg max θ L(θ|X a , y a ). There is no closed-form solution<br />

for the MLE, but good estimates c<strong>an</strong> be obta<strong>in</strong>ed<br />

by st<strong>an</strong>dard gradient descent algorithms.<br />

5 Results <strong>an</strong>d Evaluation<br />

We have described three hierarchical methods for<br />

end-of-auction prediction: k-nearest neighbor followed<br />

by s<strong>in</strong>gle-nearest neighbor (knn-knn), k-nearest<br />

neighbor followed by l<strong>in</strong>ear regression (knn-l<strong>in</strong>), <strong>an</strong>d<br />

k-nearest neighbor followed by Poisson regression<br />

(knn-poi). Our implementation uses the k-nearest<br />

neighbor <strong>an</strong>d regression packages provided by Scikitlearn<br />

(Pedregosa et al., 2011 [7]) along with MAT-<br />

LAB’s generalized l<strong>in</strong>ear model toolbox. Here we<br />

present <strong>an</strong>d compare the results for these three methods.<br />

The set of auctions A was split <strong>in</strong>to a tra<strong>in</strong><strong>in</strong>g<br />

set A tra<strong>in</strong> <strong>an</strong>d a test set A test by r<strong>an</strong>domly select<strong>in</strong>g<br />

auctions. Approximately 20% of the auctions are<br />

<strong>in</strong> A test , with the rema<strong>in</strong><strong>in</strong>g 80% <strong>in</strong> A tra<strong>in</strong> . For each<br />

auction a ∈ A test , we have <strong>an</strong> associated vector of<br />

labels y a . Our goal is to use the tra<strong>in</strong><strong>in</strong>g set A tra<strong>in</strong><br />

to compute the correspond<strong>in</strong>g vector of estimates ŷ a .<br />

The predictions ŷ a are plotted aga<strong>in</strong>st the true labels<br />

y a for <strong>an</strong> example auction <strong>in</strong> Figure 4.<br />

Predicted bids rema<strong>in</strong><strong>in</strong>g<br />

800<br />

700<br />

600<br />

500<br />

400<br />

300<br />

200<br />

100<br />

knn−poi Predictions for Auction 529632804<br />

0<br />

0 500 1000 1500 2000 2500 3000 3500<br />

Actual bids rema<strong>in</strong><strong>in</strong>g<br />

Figure 4: Predicted bids rema<strong>in</strong><strong>in</strong>g ŷ a versus actual<br />

bids rema<strong>in</strong><strong>in</strong>g y a for auction a = 529632804. The<br />

auction was for a Cuis<strong>in</strong>art FP-14DC Elite Food Processor<br />

with a Buy-Now price of $283.99.<br />

The results use k = 20 for k-nearest neighbor. The<br />

Buy-Now price is the sole per-auction feature, so that<br />

f(R a,1,1 ) simply returns the Buy-Now price conta<strong>in</strong>ed<br />

<strong>in</strong> the first row of the the raw data matrix. Furthermore,<br />

g is def<strong>in</strong>ed to compute the follow<strong>in</strong>g bid-level<br />

features for each X a [i]:<br />

1. Time Elapsed: the time elapsed between the<br />

placement of the auction’s open<strong>in</strong>g bid <strong>an</strong>d the<br />

placement of the ith bid.<br />

2. Absolute Time: the absolute time of day at<br />

which the ith bid was placed, measured <strong>in</strong> seconds.<br />

3. Highest Bid: the new highest bid price p of the<br />

good after this bid is placed.<br />

4. Unique Bidders: the number of unique bidders<br />

that have bid so far <strong>in</strong> the auction.<br />

7


5. Unique Bidders Last 50: the number of unique<br />

bidders <strong>in</strong> the last 50 bids.<br />

6. Bids Placed: the total number of bids placed<br />

thus far by the current highest bidder.<br />

7. BidOMatic Bids: the total number of BidOMatic<br />

bids placed thus far <strong>in</strong> the auction.<br />

The first evaluation metric is the residual sum of<br />

squares (RSS):<br />

RSS =<br />

∑<br />

a∈A test ||ŷ a − y a || 2 (8)<br />

The smaller the RSS, the more closely ŷ a predicts<br />

y a . The results show that knn-l<strong>in</strong> has the largest<br />

squared residuals; knn-knn’s RSS is 41.3% that of<br />

knn-l<strong>in</strong>, <strong>an</strong>d knn-poi’s RSS is 5.9% that of knn-l<strong>in</strong>.<br />

By this measurement, knn-poi is the favored method.<br />

The RSS <strong>in</strong>dicates how well the method predicts<br />

the number of bids rema<strong>in</strong><strong>in</strong>g at <strong>an</strong>y po<strong>in</strong>t <strong>in</strong> the auction.<br />

But for the purposes of a bidd<strong>in</strong>g agent, it is<br />

not strictly necessary to always generate <strong>an</strong> accurate<br />

prediction of the number of rema<strong>in</strong><strong>in</strong>g bids. What<br />

is more import<strong>an</strong>t is whether the predictions accurately<br />

<strong>in</strong>dicate when the end of the auction is imm<strong>in</strong>ent.<br />

Figure 4, for example, shows large errors between<br />

the predicted <strong>an</strong>d actual numbers of rema<strong>in</strong><strong>in</strong>g<br />

bids—when there are 3,000 bids rema<strong>in</strong><strong>in</strong>g, knn-poi<br />

suggests that there are only 500. This is nevertheless<br />

a “good” case <strong>in</strong> the sense that the graph lies close<br />

to the orig<strong>in</strong> towards the end of the auction. When<br />

there are a small number of bids rema<strong>in</strong><strong>in</strong>g, the prediction<br />

<strong>in</strong>deed recovers that few bid rema<strong>in</strong>.<br />

The preference for accuracy specifically when the<br />

end of the auction is impend<strong>in</strong>g requires <strong>an</strong> end-ofauction<br />

aware evaluation scheme. We use the follow<strong>in</strong>g<br />

algorithm to produce <strong>an</strong> end-of-auction prediction<br />

for each a ∈ A test : f<strong>in</strong>d the first bid <strong>in</strong> the<br />

test auction whose associated prediction ŷ a [i] falls<br />

below some threshold ɛ. After comput<strong>in</strong>g the smallest<br />

j such that ŷ a [j] ≤ ɛ, the correspond<strong>in</strong>g label<br />

y a [j] gives the actual number of bids rema<strong>in</strong><strong>in</strong>g at<br />

this po<strong>in</strong>t. Let z a := y a [j] so that z a c<strong>an</strong> be <strong>in</strong>terpreted<br />

as the actual number of bids rema<strong>in</strong><strong>in</strong>g when<br />

we predict the end of auction a. If ŷ a [i] > ɛ ∀i then<br />

the prediction is never sufficiently low. In this case,<br />

z a does not exist <strong>an</strong>d the method has failed to predict<br />

the end of a.<br />

We use the end-of-auction predictions z a for three<br />

evaluation metrics:<br />

Me<strong>an</strong> bids rema<strong>in</strong><strong>in</strong>g<br />

Medi<strong>an</strong> bids rema<strong>in</strong><strong>in</strong>g<br />

Auction recall<br />

1. The me<strong>an</strong> bids rema<strong>in</strong><strong>in</strong>g, or the me<strong>an</strong> z a taken<br />

over the auctions a ∈ A test . The auctions for<br />

which z a does not exist are excluded from this<br />

calculation.<br />

2. The medi<strong>an</strong> bids rema<strong>in</strong><strong>in</strong>g, or the medi<strong>an</strong> z a<br />

taken over a ∈ A test . Together, the me<strong>an</strong> <strong>an</strong>d<br />

medi<strong>an</strong> z a <strong>in</strong>dicate precision. The lower they are,<br />

the more precise the end-of-auction predictions.<br />

3. The auction recall. This is the fraction of the<br />

auctions <strong>in</strong> A test for which z a exists.<br />

These evaluation metrics are shown as a function of<br />

the threshold ɛ <strong>in</strong> Figure 5.<br />

300<br />

250<br />

200<br />

150<br />

knn−knn<br />

knn−l<strong>in</strong><br />

knn−poi<br />

100<br />

0 50 100 150 200 250 300 350 400<br />

End−of−auction threshold, epsilon<br />

110<br />

100<br />

90<br />

80<br />

70<br />

knn−knn<br />

knn−l<strong>in</strong><br />

knn−poi<br />

60<br />

0 50 100 150 200 250 300 350 400<br />

End−of−auction threshold, epsilon<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

knn−knn<br />

knn−l<strong>in</strong><br />

knn−poi<br />

0<br />

0 50 100 150 200 250 300 350 400<br />

End−of−auction threshold, epsilon<br />

Figure 5: Evaluation metrics as a function of the<br />

threshold ɛ: the me<strong>an</strong> z a (top), medi<strong>an</strong> z a (middle),<br />

<strong>an</strong>d the auction recall (bottom). Results for knn-knn<br />

are shown <strong>in</strong> blue, with knn-l<strong>in</strong> shown <strong>in</strong> green <strong>an</strong>d<br />

knn-poi shown <strong>in</strong> red.<br />

8


For nearly <strong>an</strong>y choice of ɛ, knn-knn performs best <strong>in</strong><br />

terms of the me<strong>an</strong> <strong>an</strong>d medi<strong>an</strong> z a metrics—there tend<br />

to be the fewest bids rema<strong>in</strong><strong>in</strong>g <strong>in</strong> the test auction history<br />

when knn-knn predicts the impend<strong>in</strong>g end of the<br />

auction. The knn-poi method performs second best,<br />

with knn-l<strong>in</strong> perform<strong>in</strong>g worst (Figure 5, top <strong>an</strong>d center<br />

p<strong>an</strong>els). These results are consistent with the RSS<br />

<strong>in</strong> that knn-knn <strong>an</strong>d knn-poi outperform knn-l<strong>in</strong>. Although<br />

knn-knn is better at identify<strong>in</strong>g the auction<br />

end th<strong>an</strong> knn-poi, the Poisson regression method has<br />

considerably better recall, especially for low values<br />

of ɛ (Figure 5, bottom p<strong>an</strong>el). Poisson regression offers<br />

perhaps the best bal<strong>an</strong>ce between precision <strong>an</strong>d<br />

recall.<br />

The knn-knn <strong>an</strong>d knn-poi hierarchical methods are<br />

capable of predict<strong>in</strong>g the end of the auction with<strong>in</strong> a<br />

resolution of a few hundred bids. For example, sett<strong>in</strong>g<br />

the threshold to ɛ = 2 <strong>an</strong>d us<strong>in</strong>g knn-poi, the error<br />

is 149.9 bids as measured by me<strong>an</strong> z a . The medi<strong>an</strong><br />

z a more conservatively suggests <strong>an</strong> error of 73 bids.<br />

The recall for knn-poi with ɛ = 2 is 60.2%.<br />

6 Conclusion<br />

Although (J. Stix, 2012, [9]) suggests several rulebased<br />

strategies for a <strong>QuiBids</strong> bidd<strong>in</strong>g agent, to our<br />

knowledge no prior research has attempted to apply<br />

mach<strong>in</strong>e learn<strong>in</strong>g techniques for end-of-auction<br />

prediction <strong>in</strong> penny auctions. Given the dearth of<br />

research on automated agents for onl<strong>in</strong>e penny auctions,<br />

we <strong>an</strong>ticipate that this work will set a basel<strong>in</strong>e<br />

for supervised learn<strong>in</strong>g-based penny auction agents.<br />

Our results demonstrate the promise beh<strong>in</strong>d a hierarchical<br />

strategy which tra<strong>in</strong>s a model for each auction<br />

<strong>in</strong>dividually. The evaluation suggests that the<br />

hierarchical method is capable of obta<strong>in</strong><strong>in</strong>g end-ofauction<br />

predictions that err, on average, by less th<strong>an</strong><br />

200 bids. There is a tradeoff between end-of-auction<br />

prediction precision <strong>an</strong>d recall, but depend<strong>in</strong>g on the<br />

desired level of precision, knn-knn <strong>an</strong>d knn-poi c<strong>an</strong><br />

achieve between 60% <strong>an</strong>d 90% recall.<br />

One direction for future work is to design a loss<br />

function which properly penalizes error at the end<br />

of a tra<strong>in</strong><strong>in</strong>g auction more th<strong>an</strong> error at the beg<strong>in</strong>n<strong>in</strong>g<br />

of a tra<strong>in</strong><strong>in</strong>g auction when comput<strong>in</strong>g the model<br />

parameters θ. This would ensure that each auction<br />

model closely fits the data at the end of the auction,<br />

<strong>an</strong>d therefore makes accurate predictions when the<br />

end of the auction is imm<strong>in</strong>ent. A second direction<br />

for future work is to explore regression models for<br />

count data aside from Poisson regression. In particular,<br />

negative b<strong>in</strong>omial regression might provide <strong>an</strong><br />

improvement over knn-poi.<br />

We believe that the discrim<strong>in</strong>ative models presented<br />

here for end-of-auction prediction could form<br />

the foundation for implement<strong>in</strong>g a profitable <strong>QuiBids</strong><br />

bidd<strong>in</strong>g agent. An alternative avenue which may<br />

be <strong>in</strong>terest<strong>in</strong>g to pursue is develop<strong>in</strong>g a generative<br />

model capable of model<strong>in</strong>g the underly<strong>in</strong>g auction<br />

dynamics. A hidden Markov model might be applicable<br />

for this purpose given that the full bid histories<br />

are sequential data. Potentially of use here is a hidden<br />

semi-Markov model (HSMM) <strong>in</strong> which tr<strong>an</strong>sition<br />

probabilities are not static, but rather depend on the<br />

time elapsed s<strong>in</strong>ce entry <strong>in</strong>to the hidden state.<br />

References<br />

[1] Augenblick, N. 2012. Consumer <strong>an</strong>d producer behavior<br />

<strong>in</strong> the market for penny auctions: A theoretical<br />

<strong>an</strong>d empirical <strong>an</strong>alysis. Unpublished m<strong>an</strong>uscript.<br />

Available at http://faculty.haas.berkeley.edu/<br />

ned/Penny_Auction.pdf.<br />

[2] Beyer, K., Goldste<strong>in</strong>, J., Ramaskrishn<strong>an</strong>, R., <strong>an</strong>d<br />

Shaft, U. 1999. When Is “Nearest Neighbor” Me<strong>an</strong><strong>in</strong>gful?<br />

7th International Conference Jerusalem, Israel,<br />

J<strong>an</strong>uary 10–12, 1999 Proceed<strong>in</strong>gs, 217–235: International<br />

Conference on Database Technology.<br />

[3] Cameron, A. C. <strong>an</strong>d Trivedi, P. 1998. Basic Count<br />

Regression. In Regression Analysis of Count Data, 61–<br />

69. New York: Cambridge <strong>University</strong> Press.<br />

[4] Cormen, T., Leiserson, C., <strong>an</strong>d Rivest, R. 2009. 3rd<br />

ed. Introduction to Algorithms. Cambridge, MA: MIT<br />

Press.<br />

[5] H<strong>in</strong>nosaar, T. 2010. Penny auctions are unpredictable.<br />

Unpublished m<strong>an</strong>uscript. Available at http:<br />

//toomas.h<strong>in</strong>nosaar.net/pennyauctions.pdf.<br />

[6] Krishna, V. <strong>an</strong>d Morg<strong>an</strong>, J. 1997. An Analysis of the<br />

War of Attrition <strong>an</strong>d the All-Pay Auction. Journal of<br />

Economic Theory 72(2): 343–362.<br />

[7] Pedregosa, F. et al. 2011. Scikit-learn: Mach<strong>in</strong>e<br />

Learn<strong>in</strong>g <strong>in</strong> Python. Journal of Mach<strong>in</strong>e Learn<strong>in</strong>g Research<br />

12: 2825–2830.<br />

[8] Stix, E., Stix, J., Storch, D., Sodomka, E., <strong>an</strong>d Greenwald,<br />

A. 2013. Empirical Analysis of Auctioneer Profitability<br />

<strong>in</strong> <strong>QuiBids</strong> Penny Auctions. Association for<br />

the Adv<strong>an</strong>cement of Artificial Intelligence. Proceed<strong>in</strong>gs:<br />

AAAI-13 Workshop on Trad<strong>in</strong>g <strong>Agent</strong> Design<br />

<strong>an</strong>d Analysis. Forthcom<strong>in</strong>g.<br />

[9] Stix, J. 2012. Design<strong>in</strong>g a <strong>Bidd<strong>in</strong>g</strong> Algorithm<br />

for Onl<strong>in</strong>e Penny Auctions. Available at<br />

http://cs.brown.edu/research/pubs/theses/<br />

ugrad/2012/jstix.pdf.<br />

9


[10] W<strong>an</strong>g, Z. <strong>an</strong>d Xu, M. 2012. Learn<strong>in</strong>g <strong>an</strong>d<br />

Strategic Sophistication <strong>in</strong> Games: The Case<br />

of Penny Auctions on the Internet. Unpublished<br />

m<strong>an</strong>uscript. Available at http://www.economics.<br />

neu.edu/zw<strong>an</strong>g/Penny%20auction.pdf.<br />

[11] Yi<strong>an</strong>ilos, P. 1993. Data Structures <strong>an</strong>d Algorithms<br />

for Nearest Neighbor Search <strong>in</strong> General Metric Spaces.<br />

Proceed<strong>in</strong>gs, 311–321: ACM-SIAM Symposium on<br />

Discrete Algorithms.<br />

10

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!