Aukce

Aukce se již dlouho používají k prodeji a nákupu různého zboží po celém světě.

Typy klasických aukcí

Existuje řada různých typů aukcí, nicméně čtyři z nich jsou typické:

Aukce s druhou cenou se může zdát divná. Proč by chtěl prodejce použít tento typ aukce, když dostane méně peněz než v aukci s první cenou? Ve skutečnosti se ukazuje, že lidé velmi často v dražbě za druhou cenu přihazují o něco více, což rozdíl mezi konečnými cenami snižuje. Aukce za druhou cenu je také zajímavá tím, že konečná cena je stejná jako v anglické aukci. Proč? Představte si, že máme několik zájemců, každý z nich dává předmětu, který se prodává, jinou hodnotu. V anglické aukci zůstávají zájemci v aukci tak dlouho, dokud je aktuální cena nižší než jejich vnitřní hodnota předmětu (odejít dříve nemá smysl, protože v případě, že by předmět koupili, budou sice mít zisk, ale nemusí předmět získat, odejít později také nemá smysl, protože i když zájemce předmět koupí, utrpí ztrátu). Jakmile je tedy cena vyšší než druhá nejvyšší, zůstává pouze jeden zájemce a vyhraje aukci s aktuální cenou (která je jen o trochu vyšší než druhá nejvyšší). Ve skutečnosti lze také dokázat, že u dražby s uzavřenou nabídkou za druhou cenu je dominantní strategií každého uchazeče nabídnout přímo svou vnitřní hodnotu.

Obálková aukce s první cenou se naopak podobá holandské aukci, protože v obou z nich vítěz platí nejvyšší nabízenou hodnotu. V obou případech však uchazeč nemusí nabízet svou vnitřní hodnotu. Nabídka, která ve skutečnosti maximalizuje zisk pro uchazeče, je o něco nižší a závisí na počtu dalších uchazečů a na tom, jak moc se mohou lišit jejich vnitřní hodnoty (ty ostatní uchazeči neznají).

Jiné typy aukcí

Používají se i další typy aukcí. Některé z nich jsou zobecněním dražeb s druhou cenou na případy, kdy je k dispozici více totožných předmětů. Pokud například prodáváme $n$ totožných předmětů, můžeme použít dražbu za $n$-tou cenu. V takovém případě každý zájemce předloží svou nabídku v obálce a po otevření obálek jsou předměty prodány za $n$-tou cenu zájemcům, kteří nabídli jednu z $n$ nejvyšších cen. Podobné aukce se také používají například při prodeji státních pokladničních poukázek USA.

Amazon Web Services také používají podobný typ aukce při pronájmu svých spotových instancí (v podstatě virtuálních počítačů). V takovém případě každý uživatel určí maximální cenu, kterou je ochoten za použití konkrétní instance zaplatit. Pokud je k dispozici $n$ instancí, všichni uživatelé zaplatí $n$-tou nejvyšší cenu a mohou instanci použít. Zajímavostí je, že počet dostupných instancí se může kdykoli změnit stejně jako počet uživatelů, kteří mají zájem je používat. To znamená, že taková dražba je ve skutečnosti kontinuální v tom smyslu, že kdykoliv může kdykoli přijít další zájemce a podat svou nabídku. V důsledku toho může $n$-tá cena vzrůst, což zase znamená, že některé z instancí jsou ukončeny a přiřazeny novým uživatelům. Je zřejmé, že v případě, že někteří uživatelé sníží svou nabídku nebo přestanou instance potřebovat (stáhnou nabídku), $n$-tá cena se naopak může snížit, což zase znamená, že někteří uživatelé mohou za tuto nižší cenu začít instance používat.

Burzy také využívají kontinuální typ aukce. V tomto konkrétním typu kupující specifikují maximální cenu, kterou jsou ochotni zaplatit za akcii, a počet akcií, které chtějí koupit, a prodávající specifikují minimální cenu, kterou chtějí za akcii, a počet akcií, které chtějí prodat. Pokud se v nějakém okamžiku najde kupec, který chce koupit za vyšší cenu, než je prodávající ochoten prodat, obchod se okamžitě uskuteční.

Kromě toho burzy v některých fázích obchodování (obvykle na začátku a konci dne a při přerušení obchodování) používají jiný typ aukce. U tohoto typu kupující a prodávající opět specifikují své ceny a množství akcií, se kterými jsou ochotni obchodovat. Všechny tyto nabídky jsou uloženy v knize objednávek a v určený čas se obchody provedou za cenu, která povede k zobchodování největších počtu akcií.

Úkol

Dnešním úkolem je připravit strategii pro obchodování v aukcích. Ve skutečnosti je třeba připravit dvě strategie - jednu pro aukci s rostoucí cenou a jednu pro aukci s klesající cenou. U jednoduchých aukcí jednotlivých objektů by strategie byly jednoduché, proto je situace v zadání trochu složitější. Budeme simulovat aukci řady různých objektů (za různé ceny). Pro každý z těchto objektů dostanete svou vnitřní hodnotu a vaším cílem je maximalizovat skóre, které spočítáme jako $M + V$, kde $M$ jsou zbývající peníze, $V$ je vaše vnitřní hodnota objektů, které jste koupili. Částka $M$ nemůže být záporná. Aby se celá záležitost ještě více zkomplikovala, dostanete omezený rozpočet na obchodování (počáteční množství peněz).

K implementaci použijte připravené zdrojové kódy. Příklad strategie je implementovaný v strategies/example.py. Tato strategie se zajímá o jakýkoli objekt, pokud je jeho cena nižší než jeho hodnota a strategie má dostatek peněz na jeho koupi. Pro implementaci vlastní strategie doporučuji vytvořit novou kopii tohoto souboru (s novým a jedinečným názvem) a implementovat vlastní třídu. Komentáře k jednotlivých metodám ve třídě vysvětlují, co metoda dělá a kdy je volána. Nejdůležitější je, že musíte implementovat metodu interested, která vrací True, jestliže má strategie zájem koupit objekt za danou cenu.

V souboru je také třeba napsat dvě funkce - strategy_ascending a strategy_descending, které vrátí vaši strategii pro anglickou, respektive holandskou verzi aukce. Obě metody mají pouze jeden parametr - počet strategií v turnaji. Můžete mít jednu strategii pro obě verze turnaje, nicméně doporučuji mít dvě různé strategie (tj. implementovat dvě různé třídy).

Termín: 8. května 2023 v 15:00 (potom spustím turnaj)

Body:

Odkazy

Hezký popis aukcí a strategií je k dispozici v knize Networks, Crowds, and Markets: Reasoning about a Highly Connected World - Chapter 9. Předtisková verze celé knihy je dostupná online (odkaz v kapitole odkazované výše).