Prix moyen d'achat
100 actions achetées à 10 et 50 à 16 coûtent 1 800 pour 150 titres, soit un prix moyen de 12 par action : le plus gros lot tire la moyenne vers son cours. Saisissez chaque achat et obtenez un seul prix de revient. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Le prix de revient unitaire d'une position est le cours d'achat pondéré : chaque lot apporte sa sortie de trésorerie, et ce coût total est divisé par le nombre de titres que vous détenez réellement. Investisseurs, cahiers fiscaux, suiveurs de DRIP et exercices de cours de finance ont besoin de ce chiffre unique pour marquer une cession ultérieure contre une seule base de coût plutôt qu'une liste désordonnée d'exécutions. Ce calculateur de prix moyen d'achat prend une liste de quantités et de cours d'achat, multiplie chaque lot, additionne le cash, additionne les titres et renvoie le cours moyen pondéré. Une moyenne simple des cours traiterait un lot de dix titres comme un lot de mille ; pondérer par le nombre d'actions ne le fait pas. Les fractions de titre sont admises.
Ce qu'est le prix moyen d'achat et pourquoi les poids sont les titres
Le prix de revient unitaire d'une position n'est pas la moyenne arithmétique des cours que vous avez payés. C'est une moyenne pondérée par les titres : chaque achat apporte du cash égal aux actions fois le cours, ces sorties sont additionnées, et la somme est divisée par le nombre total de titres de tous les lots.
Cent titres achetés à dix et cinquante titres achetés à seize coûtent mille plus huit cents, soit mille huit cents de cash pour cent cinquante titres, donc la moyenne est douze, non la moyenne simple de dix et seize qui serait treize. Le lot le plus grand tire la moyenne vers son propre cours, ce que montre exactement l'écran de base de coût d'un courtier lorsqu'il affiche le prix de revient moyen.
Les fractions de titre sont de premier rang : un plan de réinvestissement des dividendes qui crédite une fraction de titre à un cours imprimé est un lot comme un autre, et il entre dans les sommes à la valeur faciale. Les lots à zéro titre n'apportent rien aux deux sommes ; ils sont admis tant qu'un autre lot fournit un décompte strictement positif.
Lorsque tous les lots ont zéro titre, il n'y a pas de dénominateur, et le calculateur refuse la requête au lieu de renvoyer Infinity ou un NaN qu'un formulaire fiscal aval traiterait comme un nombre. Les cours d'achat négatifs sont également refusés. Le calculateur ne télécharge pas une cotation, n'applique pas d'ajustements de vente fictive et ne choisit pas entre coût moyen et identification spécifique à votre place.
Il forme seulement la moyenne pondérée à partir des lots que vous avez déjà.
Où un calculateur de prix moyen d'achat justifie sa place
Ceux qui tapent prix moyen d'achat dans un moteur savent déjà qu'ils veulent la base de coût d'une position à partir des lots achetés, pas une cotation en direct, pas un bêta face au marché, et pas un outil générique de moyenne pondérée statistique qui demande des valeurs et des poids abstraits.
Un éditeur qui se classe sur cette requête sert des investisseurs de détail qui ont lissé leurs achats sur un même ticker pendant plusieurs mois, des cahiers fiscaux qui doivent imprimer un seul prix de revient unitaire sur une feuille de cession, et des ingénieurs qui ont besoin d'un oracle déterministe qui refuse un total de titres nul au lieu de produire Infinity en silence.
Les courtiers DRIP et de fractions créditent des quantités impaires aux cours imprimés ; ces lots appartiennent à la même somme que les achats de titres entiers. Comme l'implémentation est du code analytique parse de palier A, chaque appel réussi reste bon marché sans jetons de modèle et sans réseau sortant. Une validation échouée ne consomme pas le solde.
Associez cette capacité à un outil distinct de plus ou moins-value lorsque vous céderez plus tard ; gardez cette surface centrée sur le cours d'achat moyen que l'on cherche en tapant prix moyen d'achat.
Cas d’usage
Achats périodiques sur un même titre
Saisissez chaque achat comme titres et cours pour publier un seul prix de revient unitaire au lieu de moyenner les cours comme si chaque lot avait la même taille.
Livres DRIP et de fractions de titre
Incluez les lots de réinvestissement fractionnaire à leurs cours imprimés afin que la même identité pondérée couvre achats de titres entiers et crédits drip.
Questions fréquentes
Comment calcule-t-on le prix moyen d'achat par action ?
Le cours moyen est la somme des titres fois le cours, divisée par la somme des titres. Exemple : 100 titres à 10 et 50 à 16 donnent un cours moyen 12.
Que se passe-t-il si le nombre total de titres est zéro ?
Le coût moyen divise par le total des titres, donc un total de quantité nul ou vide est refusé et n'est pas facturé.
Pourquoi ne pas simplement moyenner les cours d'achat ?
Une moyenne simple traite chaque lot comme égal. Un lot de cent titres à 10 doit peser le double d'un lot de cinquante à 16 ; ce calculateur pondère par les titres.
Puis-je saisir des fractions de titre ou un seul lot ?
Oui. Les fractions de titre sont admises, et un lot unique renvoie le cours d'achat de ce lot comme moyenne. Titres négatifs ou cours négatifs sont refusés.
Le calculateur applique-t-il les règles de wash sale ou choisit-il la méthode de coût ?
Non. Il n'applique aucun ajustement de type wash sale et ne choisit pas entre coût moyen et identification spécifique. Il calcule seulement la moyenne pondérée par titres des lots que vous saisissez, sans chercher de cours.
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/fin/stock-average \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"purchases":[{"shares":100,"price":10},{"shares":50,"price":16}]}'const res = await fetch("https://api.kit.forhosting.com/fin/stock-average", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"purchases": [
{
"shares": 100,
"price": 10
},
{
"shares": 50,
"price": 16
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/stock-average",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"purchases": [
{
"shares": 100,
"price": 10
},
{
"shares": 50,
"price": 16
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/stock-average", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"purchases":[{"shares":100,"price":10},{"shares":50,"price":16}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"purchases":[{"shares":100,"price":10},{"shares":50,"price":16}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/stock-average", 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
{
"purchases": [
{
"shares": 100,
"price": 10
},
{
"shares": 50,
"price": 16
}
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.stock_average",
"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.
Limites
max_items | 10000 |
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
Si le total des titres est zéro, le rapport n'est pas défini et la tâche échoue avec invalid_input plutôt qu'Infinity. Les appels réussis sont facturés à $0.002 ; une entrée invalide n'est pas débitée.
Ce qu'est le prix moyen d'achat et pourquoi les poids sont les titres
Écrivez cette identité comme average_price égal à la somme de shares_i fois price_i, divisée par la somme de shares_i. Les décomptes négatifs ne sont pas une vente dans ce modèle ; traiter une quantité négative comme une cession mélangerait en silence l'appariement FIFO et la comptabilité au coût moyen, donc ce sont des invalid_input.
Contrat d'entrée, forme de la réponse et validation
Chaque objet porte shares et price comme nombres finis. shares est la quantité achetée dans ce lot et doit être supérieure ou égale à zéro ; les fractions de titre sont admises. price est le cours d'achat par action en unités monétaires et doit être supérieur ou égal à zéro. Un total de titres nul rendrait le dénominateur zéro, donc c'est un échec dur plutôt qu'Infinity. Exemple : cent titres à dix et cinquante à seize donnent un total de titres de cent cinquante, un coût total de mille huit cents et un cours moyen de douze. Envoyez un corps JSON avec un seul tableau obligatoire, purchases, d'au moins un objet. Les alias lots, trades, buys, rows et fills sont acceptés afin qu'un export courtier n'ait pas besoin d'une étape de renommage. Au plus dix mille lots sont lus ; chaque valeur de shares et de price doit rester dans une valeur absolue d'un billion afin que les produits restent des doubles IEEE finis sur le Worker et dans le navigateur. purchases manquant, une liste vide, des jetons non numériques, NaN, Infinity, un décompte négatif, un cours d'achat négatif ou une liste dont les quantités somment à zéro échouent avec invalid_input en nommant le problème et ne sont pas facturés. En cas de succès le corps renvoie lot_count, total_shares, total_cost, average_price comme leur quotient, un tableau lots renvoyé avec shares, price et cost de chaque lot, et une chaîne formula égale à average_price égal à la somme des titres fois le cours sur la somme des titres. Préférez des nombres JSON aux chaînes formatées en devise ; les marques de monnaie et les séparateurs de milliers ne sont pas analysés. Le tarif d'un élément réussi est un $0.002 forfaitaire.
Où un calculateur de prix moyen d'achat justifie sa place
Les cours de finance personnelle assignent des feuilles de base de coût et ont besoin d'un oracle qui marque une liste vide ou de quantité toute nulle comme invalid_input. Les pipelines d'automatisation appellent le même contrat d'API à $0.002 par élément réussi sans dresser un service de tableur. Gardez les requêtes petites, figez average_price et total_cost arrondis dans les tests, et vous obtenez une base de coût pondérée par titres reproductible pour widgets, cahiers et workers de bord, sans dresser un grand livre de portefeuille.
Cas d'intégration
Feuilles fiscales et de base de coût
Additionnez les lots en coût total et titres totaux, puis figez average_price sur une feuille de cession. Un décompte total nul est refusé comme invalid_input.
Questions techniques
Combien coûte le calculateur de prix moyen d'achat ?
L'outil du navigateur est gratuit. Les requêtes API utilisent un solde prépayé KIT à $0.002 par appel réussi ; une entrée invalide n'est pas facturée.