AVISO: Este desafio está encerrado: não vou mais atualizar a tabela de classificação e não alterarei a resposta aceita. No entanto, você pode executar o controlador e atualizar a tabela de classificação por conta própria, se desejar.
Participe do chat!
Introdução
Boa noite, comerciantes! Vocês são todos comerciantes da empresa de golfe PPCG. Sua tarefa é ganhar o máximo de dinheiro possível.
Desafio
Escreva um programa que compre e venda ações na Stack Exchange Stock Exchange com o objetivo de ganhar o máximo de dinheiro possível.
Jogabilidade
Todos os jogadores começarão com 5 ações e US $ 100 no banco. O jogo sempre começa com um preço das ações de US $ 10.
Cada jogo terá 1000 rodadas, onde a primeira rodada é rodada 1
. Em cada rodada, seu programa receberá quatro argumentos como entrada: o preço atual da ação, o número de ações que você possui, a quantidade de dinheiro que você possui e o número da rodada (indexado em 1).
Por exemplo, se meu programa é test1.py
, o preço das ações é 100
, o número de ações que detenho é 3
, a quantidade de dinheiro que tenho 1200
e o número da rodada é 576
, meu programa será executado da seguinte forma:
python test1.py 100 3 1200 576
Em uma rodada, o preço da ação concedido a cada jogador será o mesmo. Isso não muda até o final da rodada.
Em resposta, o jogador deve imprimir seu comando. Existem duas opções:
- Comprar ações: este comando é dado como
bn
onden
está o número de ações que você deseja comprar. Por exemplo, se você quiser comprar 100 ações, produzirá:
b100
Ao comprar ações, você pode receber um cheque especial de até US $ 1.000. Se você tentar comprar ações suficientes que excedam esse cheque especial (seu saldo bancário ficará abaixo de US $ -1000), você será declarado falido. Isso significa que você perderá todas as suas ações e seu saldo será definido em US $ 50.
O preço da ação não será afetado pelo seu comando se você falir.
(Se o seu saldo for de US $ -1000, você não estará falido. No entanto, se o saldo for de US $ -1001, você estará falido)
- Vender ações: este comando é dado como
sn
onden
está o número de ações que você deseja vender. Por exemplo, se você quiser vender 100 ações, produzirá:
s100
Você não pode vender mais ações do que possui. Se você tentar fazer isso, sua solicitação será negada e você pulará a rodada.
Se você quiser pular a rodada e não fazer nada, produza uma b0
ou outra s0
.
Sua solicitação será negada se você tentar comprar ou vender um número negativo de ações e / ou um número não inteiro de ações.
Após 5 rodadas, no final de cada rodada, todos os jogadores receberão um dividendo, cujo valor é 5% do preço médio das ações das últimas 5 rodadas.
Como funciona?
Inicialmente, o preço da ação será de US $ 10. No final de cada rodada, ele será recalculado usando a fórmula:
O preço da ação será limitado para que nunca caia abaixo de US $ 1.
Para evitar mudanças excessivamente rápidas, a mudança no preço das ações é limitada a um máximo de .
Regras
- Seu programa deve ter um nome
- É permitido ao seu programa um único arquivo de texto para armazenamento de dados. Ele deve ser armazenado na mesma pasta que o seu programa
- Inclua na sua resposta detalhes de como executar seu programa
- Este KotH é aberto a todas as linguagens de programação que são gratuitas e podem ser executadas no Windows 10
- Sua pontuação é baseada apenas no conteúdo do seu saldo. Qualquer dinheiro bloqueado em ações não será contabilizado
- Você pode editar seu programa a qualquer momento. Antes de cada jogo, o código mais recente será salvo e compilado
- Você não deve escrever código que atinja especificamente outro bot.
Controlador
O controlador está escrito em Python e pode ser encontrado aqui: https://gist.github.com/beta-decay/a6abe40fc9f4ff6cac443395377ec31f
No final, ele imprimirá uma tabela de classificação e exibirá um gráfico de como o preço das ações mudou ao longo do jogo.
Por exemplo, quando dois robôs aleatórios estavam jogando
Ganhando
O jogador com a maior quantidade de dinheiro em seu saldo no final do último jogo vence.
Entre os melhores
Jogo 4: 16:14 10/08/2018
Name Balance
Experienced Greedy Idiot $14802860126910608746226775271608441476740220190868405578697473058787503167301288688412912141064764060957801420415934984247914753474481204843420999117641289792179203440895025689047561483400211597324662824868794009792985857917296068788434607950379253177065699908166901854516163240207641611196996217004494096517064741782361827125867827455285639964058498121173062045074772914323311612234964464095317202678432969866099864014974786854889944224928268964434751475446606732939913688961295787813863551384458839364617299883106342420461998689419913505735314365685264187374513996061826694192786379011458348988554845036604940421113739997490412464158065355335378462589602228039730
Equalizer $763185511031294813246284506179317396432985772155750823910419030867990447973211564091988995290789610193513321528772412563772470011147066425321453744308521967943712734185479563642323459564466177543928912648398244481744861744565800383179966018254551412512770699653538211331184147038781605464336206279313836606330
Percentage Trader $448397954167281544772103458977846133762031629256561243713673243996259286459758487106045850187688160858986472490834559645508673466589151486119551222357206708156491069820990603783876340193236064700332082781080188011584263709364962735827741094223755467455209136453381715027369221484319039100339776026752813930
OYAIB $8935960891618546760585096898089377896156886097652629690033599419878768424984255852521421137695754769495085398921618469764914237729576710889307470954692315601571866328742408488796145771039574397444873926883379666840494456194839899502761180282430561362538663182006432392949099112239702124912922930
Chimps on a Typewriter $176504338999287847159247017725770908273849738720252130115528568718490320252556133502528055177870
Greedy B*****d $17689013777381240
Illiterate Dividend Investor $2367418699671980
Lucky Number 6 $4382725536910
Lone Accountant $90954970320
Buy/Reinvest $127330
Technical Analysis Robot $126930
Dollar Cost Averager $106130
Fibonacci $69930
Novice Broker $28130
Buy Low $6130
Naive Statistician $6130
Fallacious Gambler $6130
Passive Trader $4980
Half More or Nothing $4920
Monkeys on a Typewriter $66
Ver gráficos de cada participante
Relacionado, mas a jogabilidade e o critério de vitória são muito diferentes para este desafio.