AVIS: Ce défi est maintenant fermé: je ne mettrai plus à jour le classement et je ne changerai pas la réponse acceptée. Cependant, vous êtes libre d'exécuter le contrôleur et de mettre à jour le classement vous-même, si vous le souhaitez.
Rejoignez le chat!
introduction
Bonsoir, commerçants! Vous êtes tous des commerçants pour la société de golf PPCG. Votre tâche est de gagner le plus d'argent possible.
Défi
Ecrivez un programme qui achète et vend des actions à la Stack Exchange Stock Exchange dans le but de gagner le plus d'argent possible.
Gameplay
Tous les joueurs commenceront avec 5 actions et 100 $ dans leur banque. Le jeu commence toujours avec un cours de bourse de 10 $.
Chaque partie comportera 1 000 rounds au premier tour 1
. À chaque tour, votre programme recevra quatre arguments en entrée: le cours actuel de l'action, le nombre d'actions que vous détenez, le montant que vous possédez et le nombre de tours (indexé 1).
Par exemple, si mon programme est test1.py
, le prix de l'action est 100
, le nombre d'actions que je détiens est 3
, le montant d'argent que j'ai 1200
, et le nombre de rondes est 576
, mon programme sera exécuté comme suit:
python test1.py 100 3 1200 576
Dans un tour, le prix de l'action attribué à chaque joueur sera le même. Cela ne change pas jusqu'à la fin du tour.
En réponse, le joueur doit imprimer sa commande. Il y a deux options:
- Acheter des actions: Cette commande est donnée sous la forme
bn
oùn
est le nombre d'actions que vous souhaitez acheter. Par exemple, si vous souhaitez acheter 100 actions, vous devez générer:
b100
Lorsque vous achetez des actions, vous avez droit à un découvert pouvant atteindre 1 000 dollars. Si vous essayez d'acheter suffisamment d'actions qui dépassent ce découvert (votre solde bancaire passe en dessous de -1 000 $), vous serez déclaré en faillite. Cela signifie que vous perdrez toutes vos actions et que votre solde sera fixé à 50 $.
Si vous faites faillite, votre commande n’affectera pas le cours de vos actions.
(Si votre solde est de -1 000 $, vous n'êtes pas en faillite. Toutefois, si votre solde est de -1001 $, vous êtes en faillite)
- Vendre des actions: Cette commande est donnée sous la forme
sn
oùn
est le nombre d’actions que vous souhaitez vendre. Par exemple, si vous souhaitez vendre 100 actions, vous devez générer:
s100
Vous ne pouvez pas vendre plus d'actions que vous possédez. Si vous essayez de faire cela, votre demande sera refusée et vous éviterez le tour.
Si vous voulez sauter le tour et ne rien faire, indiquez soit b0
ou s0
.
Votre demande sera refusée si vous essayez d'acheter ou de vendre un nombre d'actions négatif et / ou un nombre d'actions non entier.
Après 5 tours, à la fin de chaque tour, tous les joueurs recevront un dividende dont la valeur correspond à 5% de la moyenne des cours moyens des 5 derniers tours.
Comment ça marche?
Initialement, le prix de l'action sera de 10 $. À la fin de chaque tour, il sera recalculé en utilisant la formule:
Le prix de l’action sera limité afin qu’il ne tombe jamais en dessous de 1 $.
Pour éviter toute modification trop rapide, la variation du cours de l’action est limitée à maximum .
Règles
- Votre programme doit avoir un nom
- Votre programme est autorisé à un seul fichier texte pour le stockage de données. Il doit être stocké dans le même dossier que votre programme.
- Incluez dans votre réponse les détails de l'exécution de votre programme
- Ce KotH est ouvert à tous les langages de programmation libres d’utilisation et peut être exécuté sur Windows 10
- Votre score est basé uniquement sur le contenu de votre balance. Tout argent bloqué en actions ne sera pas compté
- Vous pouvez modifier votre programme à tout moment. Avant chaque jeu, le dernier code sera sauvegardé et compilé
- Vous ne devriez pas écrire de code qui cible spécifiquement un autre bot.
Manette
Le contrôleur est écrit en Python et peut être trouvé ici: https://gist.github.com/beta-decay/a6abe40fc9f4ff6cac443395377ec31f
À la fin, un classement et un graphique illustrant l'évolution du cours de l'action au cours de la partie seront affichés.
Par exemple, quand deux robots aléatoires jouaient
Gagnant
Le joueur avec le montant d'argent le plus élevé à la fin du dernier match gagne.
Classement
Jeu 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
Voir les graphiques de chaque concurrent
En rapport, mais le critère de gameplay et de gain est très différent de ce défi.