Enchère au second prix
Avec des offres de 100, 95 et 80, l'enchérisseur à 100 l'emporte mais ne paie que 95, l'offre du deuxième, et garde un surplus de 5. Saisissez les offres scellées pour voir gagnant, prix et classement complet. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Une enchère au second prix à offres scellées—aussi appelée enchère de Vickrey—attribue l’objet au soumissionnaire dont l’offre est la plus élevée, tout en ne facturant que la deuxième offre la plus haute. Cette règle de prix est le mécanisme standard des manuels pour rendre l’offre sincère une stratégie faiblement dominante lorsque les valeurs sont privées et indépendantes. Ce calculateur de gagnant d’enchère au second prix accepte une liste d’offres scellées, chacune avec un montant non négatif et une étiquette de soumissionnaire optionnelle, les classe par montant avec un départage stable selon l’ordre d’entrée, nomme le gagnant et le second, et renvoie le prix payé comme l’offre du second ainsi que le surplus du soumissionnaire (offre gagnante moins prix).
Comment une enchère scellée au second prix choisit gagnant et prix
Dans une enchère au second prix à offres scellées, chaque participant soumet une seule offre sans voir les autres. Une fois toutes les offres recueillies, le commissaire-priseur les classe de la plus haute à la plus basse. Le participant à l’offre la plus élevée est déclaré gagnant et reçoit l’objet ou le contrat ; le montant qu’il paie réellement n’est pas sa propre offre, mais la deuxième plus haute du classement—le montant du second.
Les économistes appellent cela une enchère de Vickrey d’après le résultat classique de William Vickrey : sous valeurs privées indépendantes, offrir sa vraie valeur est une stratégie faiblement dominante car le prix que vous payez ne dépend pas de votre propre offre une fois que vous gagnez. Ce calculateur met en œuvre exactement cette règle d’allocation et de prix : il n’exécute ni horloges ascendantes anglaises, ni horloges descendantes hollandaises, ni paiements au premier prix scellé.
Lorsque deux offres ou plus partagent le montant le plus élevé, l’entrée antérieure de votre liste d’entrée gagne, de sorte que les résultats restent déterministes pour les tests automatisés et les plugins LMS. Le second pour la tarification est toujours l’offre suivante après le gagnant dans ce même classement, ce qui signifie qu’une égalité à deux pour la première place produit un prix égal au montant gagnant et un surplus nul—cohérent avec l’idée que la deuxième cotation du marché se situe au même niveau.
Au moins deux offres sont requises ; une seule offre ne peut définir un paiement au second prix sans réserve, et les réserves sont hors du champ de ce point d’accès. Les montants négatifs sont rejetés afin que le classement ne mélange jamais d’offres invalides dans un résultat de qualité pédagogique.
Contrat d’entrée, champs de réponse et règles de validation
Chaque objet doit inclure amount comme nombre fini supérieur ou égal à zéro ; bidder est une étiquette de chaîne optionnelle (nom, siège ou id d’agent). Si bidder est omis ou vide, le gestionnaire attribue une étiquette stable de la forme Bidder N en utilisant la position à base un dans la liste. Exemple : Alice cent, Bob quatre-vingts, Carol quatre-vingt-quinze donne Carol comme second à quatre-vingt-quinze, Alice comme gagnante à cent, prix payé quatre-vingt-quinze et surplus cinq.
Les montants sont arrondis à douze décimales pour des goldens stables entre environnements. Le point d’accès ne règle pas les lots multi-unités ou combinatoires, n’applique pas de prix de réserve et ne modélise pas les préférences de risque—uniquement le classement classique au second prix pour un seul article.
Où ce calcul d'enchère se révèle utile
Les cours de principes et de conception de marché utilisent un calculateur d’enchère au second prix pour que les étudiants transforment toute courte liste d’offres scellées en paire canonique gagnant-et-prix sans la confondre avec une règle au premier prix où l’on paie son offre. Les générateurs d’examens et les plugins LMS ont besoin d’un oracle déterministe qui rejette les listes vides ou à une seule offre et les montants négatifs au lieu d’inventer un prix zéro creux qu’un correcteur défectueux pourrait traiter comme un succès.
Les exercices d’achats et les expériences de classe qui collectent des offres scellées anonymes peuvent poster la liste une fois et montrer à chaque participant le même gagnant, prix payé et surplus sans déployer un moteur d’enchères complet. Une validation échouée ne consomme pas le solde. Gardez les requêtes petites, figez ranking et surplus dans les tests, et vous obtenez des résultats Vickrey reproductibles pour les devoirs, les LMS et les workers en bordure sans construire votre propre infrastructure d’offres scellées.
Cas d’usage
Contrôles Vickrey en classe
Laissez les étudiants saisir une liste d’offres scellées et vérifier que le plus haut soumissionnaire gagne en ne payant que le deuxième montant le plus élevé.
Notation automatique LMS et examens
Notez des items d’enchère au second prix avec un oracle déterministe qui rejette les listes à une seule offre et les montants négatifs.
Carnets de conception de mécanismes
Calculez le gagnant Vickrey, le prix payé et le surplus du soumissionnaire à côté de simulations au premier prix sans un moteur d’enchères complet.
Questions fréquentes
Comment une enchère au second prix (Vickrey) fixe-t-elle le prix ?
Le soumissionnaire le plus élevé gagne l’objet, mais le prix payé est la deuxième offre scellée la plus haute (le second), et non l’offre propre du gagnant.
Que se passe-t-il si deux soumissionnaires sont à égalité sur le montant le plus élevé ?
L’entrée antérieure de votre liste d’entrée gagne. L’offre suivante de ce classement fixe le prix, de sorte qu’une égalité à deux en tête produit un prix égal au montant gagnant.
Qu’est-ce que le surplus du soumissionnaire dans la réponse ?
C’est l’écart entre ce que le gagnant a déclaré et ce qu’il paie réellement sous la règle du second prix.
Pourquoi miser sa vraie valeur est-il la meilleure stratégie ?
Parce que, si vous gagnez, le prix dépend des autres offres et non de la vôtre. Avec des valeurs privées et indépendantes, offrir exactement ce que l'objet vaut pour vous est une stratégie faiblement dominante.
Combien d'offres puis-je saisir ?
Au moins deux, pour qu'un second prix existe, et jusqu'à cinq cents. Chaque montant doit être nul ou positif, et aucun prix de réserve n'est appliqué.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/econ/second-price-auction \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"bids":[{"bidder":"Alice","amount":100},{"bidder":"Bob","amount":80},{"bidder":"Carol","amount":95}]}'const res = await fetch("https://api.kit.forhosting.com/econ/second-price-auction", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"bids": [
{
"bidder": "Alice",
"amount": 100
},
{
"bidder": "Bob",
"amount": 80
},
{
"bidder": "Carol",
"amount": 95
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/econ/second-price-auction",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"bids": [
{
"bidder": "Alice",
"amount": 100
},
{
"bidder": "Bob",
"amount": 80
},
{
"bidder": "Carol",
"amount": 95
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/econ/second-price-auction", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"bids":[{"bidder":"Alice","amount":100},{"bidder":"Bob","amount":80},{"bidder":"Carol","amount":95}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"bids":[{"bidder":"Alice","amount":100},{"bidder":"Bob","amount":80},{"bidder":"Carol","amount":95}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/econ/second-price-auction", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"bids": [
{
"bidder": "Alice",
"amount": 100
},
{
"bidder": "Bob",
"amount": 80
},
{
"bidder": "Carol",
"amount": 95
}
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "econ.second_price_auction",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Contrat d’entrée, champs de réponse et règles de validation
Envoyez par POST un corps JSON avec un champ obligatoire : bids, un tableau d’au moins deux et au plus cinq cents objets d’offre. Des alias courants sont acceptés pour le tableau entier (list, offers, submissions) et pour amount sur chaque ligne (bid, value, price), ainsi que pour l’étiquette (name, id, label). bids manquant, une valeur non tableau, moins de deux entrées, plus de cinq cents, des lignes non objets, amount manquant ou non fini et des montants négatifs échouent avec invalid_input et ne sont pas facturés. En cas de succès le corps renvoie bidder_count ; winner et winner_index (position d’origine à base zéro) ; winning_bid ; price_paid égal au montant du second ; runner_up, runner_up_index et runner_up_bid ; bidder_surplus comme winning_bid moins price_paid ; ranking comme la liste ordonnée complète avec rank, bidder, amount et original_index ; formula rappelant que le gagnant est l’argmax de l’offre et que price_paid est la deuxième plus haute ; et une courte phrase de résumé adaptée à l’affichage.
Où une API d’enchère au second prix apporte de la valeur
Les carnets de recherche et les bacs à sable de conception de mécanismes tabulent souvent les résultats de Vickrey à côté de simulations au premier prix ; fixer la colonne second prix dans une petite API de parse évite la dérive des tableurs dans la comparaison. Comme l’implémentation est pure parse de niveau A, chaque appel réussi coûte le prix de base publié $0.002 sans jetons de modèle ni réseau sortant.
Questions techniques
Combien d’offres faut-il ?
Au moins deux. La règle du second prix nécessite le montant du second ; les listes de moins de deux offres échouent avec invalid_input et ne sont pas facturées.
Combien coûte le calculateur d’enchère au second prix ?
L’outil navigateur est gratuit. Les requêtes API utilisent le solde prépayé KIT à $0.002 par appel réussi ; une entrée invalide n’est pas facturée.