Cos'è un Pip nel Forex? Guida dello Sviluppatore a Pip, Pipette e Matematica FX (2026)
Se stai costruendo un bot di trading, una calcolatrice di dimensione della posizione, una dashboard di rischio o qualsiasi prodotto consapevole del FX, ti imbatterai presto nella domanda: cos'è un pip nel forex e come ne calcolo il valore in codice? Sbagliarlo significa P&L distorto, stop-loss che scattano ai livelli sbagliati e utenti che non avranno pazienza.
Questa guida spiega pip, pipette e la formula completa del valore del pip dal punto di vista di uno sviluppatore — con esempi risolti e codice pronto da copiare in JavaScript, Python, PHP e cURL. Alla fine avrai una calcolatrice di pip funzionante che recupera tassi in tempo reale dalla documentazione dell'API Finexly e gestisce ogni caso limite che i manuali ignorano.
Cos'è un Pip? La Definizione Rapida
Un pip (abbreviazione di "percentage in point" o "price interest point") è il più piccolo incremento di prezzo standardizzato per una coppia di valute. Per la maggior parte delle coppie, è la quarta cifra decimale della quotazione — un movimento di 0.0001. Per le coppie quotate in yen giapponesi, è la seconda cifra decimale — un movimento di 0.01.
Esempi concreti:
- EUR/USD passa da
1.0850a1.0851→ 1 pip (variazione di 0.0001 USD per EUR). - GBP/USD passa da
1.2640a1.2655→ 15 pip. - USD/JPY passa da
154.20a154.30→ 10 pip (variazione di 0.10 JPY per USD). - AUD/JPY passa da
99.45a99.40→ −5 pip.
Il pip è l'unità universale del mercato FX per "di quanto si è mosso il prezzo?" — molto più utile dei decimali grezzi perché normalizza la conversazione tra coppie con livelli di prezzo assoluti molto diversi.
Pip vs Pipette vs Point
Broker e fornitori di dati moderni quotano i tassi con una cifra decimale oltre il pip standard. Quella cifra extra è chiamata pipette, pip frazionario o semplicemente point. Una pipette equivale a un decimo di un pip.
| Coppia | Dimensione pip | Dimensione pipette | Quotazione esempio |
|---|---|---|---|
| EUR/USD | 0.0001 | 0.00001 | 1.08507 |
| GBP/USD | 0.0001 | 0.00001 | 1.26482 |
| USD/JPY | 0.01 | 0.001 | 154.215 |
| EUR/JPY | 0.01 | 0.001 | 167.482 |
1.08507, il 7 finale è la pipette — di solito reso più piccolo o in apice su una piattaforma di trading. Come sviluppatore, tratta questa distinzione con cura: se calcoli differenze di prezzo usando aritmetica delle stringhe su quotazioni che includono pipette, riporterai i movimenti in pip al ribasso di un fattore 10 a meno che tu non scali correttamente.Una regola sicura: normalizza sempre a un tipo numerico, poi moltiplica o dividi per la costante della dimensione del pip per quella coppia.
Perché le Dimensioni dei Pip Differiscono tra le Coppie
Il pip a due decimali per le coppie JPY non è una scelta arbitraria. Lo yen giapponese ha un piccolo valore unitario rispetto alla maggior parte delle valute di riserva — circa 1 USD ≈ 154 JPY nel 2026 — quindi quotare a quattro decimali creerebbe movimenti di prezzo cosmeticamente minuscoli e scale di prezzo illeggibili sugli schermi di trading. Troncare a due decimali mantiene l'azione del prezzo visivamente proporzionale alle altre coppie principali.
La stessa logica si applica a una manciata di altre valute di quotazione "a basso valore unitario" (won coreano, fiorino ungherese, ecc.) — spesso quotate con dimensioni pip di 0.01 o 1. Quando costruisci un sistema multi-coppia, non codificare mai 0.0001 come costante di dimensione pip. Cercala sempre per coppia.
Una regola di rilevamento pragmatica che funziona per la maggior parte delle coppie:
function getPipSize(pair) {
// pair example: "EURUSD" or "EUR/USD"
const quote = pair.replace("/", "").slice(3, 6).toUpperCase();
const twoDecimalQuotes = new Set(["JPY", "HUF", "KRW"]);
return twoDecimalQuotes.has(quote) ? 0.01 : 0.0001;
}
console.log(getPipSize("EURUSD")); // 0.0001
console.log(getPipSize("USD/JPY")); // 0.01
console.log(getPipSize("EURHUF")); // 0.01Per un sistema di produzione vorrai una tabella completa di dimensioni pip indicizzata sui codici ISO 4217 — vedi la nostra guida completa dello sviluppatore ai codici valuta ISO 4217 per l'elenco completo.
La Formula del Valore del Pip
La domanda centrale per qualsiasi calcolo di P&L: per una posizione di N unità della valuta base, di quanto cambia il saldo del mio conto quando la coppia si muove di un pip?
La formula generale:
pip_value_in_quote_currency = pip_size × position_size
pip_value_in_account_currency = pip_value_in_quote_currency × (quote_to_account_rate)Tre casi, a seconda di come la valuta del tuo conto si rapporta alla coppia che stai negoziando.
Caso 1: Valuta del Conto = Valuta Quotata
Il caso più semplice. Se negozi EUR/USD su un conto USD, ogni pip vale un importo fisso in dollari senza ulteriore conversione.
pip_value = pip_size × position_sizePer 100,000 unità (un lotto standard) di EUR/USD su un conto USD:
0.0001 × 100,000 = 10 USD per pipQuesto è il classico "$10 per pip per lotto standard" che si sente citato ovunque — vale solo quando la valuta quotata coincide con la valuta del conto.
Caso 2: Valuta del Conto = Valuta Base
Se negozi USD/CHF su un conto USD, il movimento del pip è denominato in CHF e deve essere riconvertito in USD usando il tasso ask corrente della coppia.
pip_value_in_quote = pip_size × position_size
pip_value_in_account = pip_value_in_quote / current_ratePer 100,000 unità di USD/CHF quando USD/CHF = 0.9050:
0.0001 × 100,000 = 10 CHF
10 CHF / 0.9050 = 11.05 USD per pipCaso 3: Coppia Cross (Nessun Lato è la Valuta del Conto)
Il caso più complicato. Negozi EUR/JPY su un conto USD. Il movimento del pip è in JPY, e per esprimerlo in USD serve un tasso di conversione tra JPY e USD.
pip_value_in_quote = pip_size × position_size
pip_value_in_account = pip_value_in_quote × (account_per_quote_rate)Per 100,000 unità di EUR/JPY quando USD/JPY = 154.20:
0.01 × 100,000 = 1,000 JPY
1,000 JPY / 154.20 = 6.49 USD per pipNota che abbiamo usato il tasso USD/JPY, non il tasso EUR/JPY, perché stiamo convertendo da JPY a USD, non da EUR a niente.
Costruire una Calcolatrice di Pip con l'API Finexly
Colleghiamo la formula sopra a una vera API di tassi di cambio in tempo reale, così la calcolatrice resta accurata mentre il mercato si muove. Iscriviti su Finexly per una chiave API gratuita — 1,000 richieste/mese senza carta richiesta, più che sufficienti per una calcolatrice come questa. Il riferimento completo delle richieste è nella documentazione dell'API Finexly.
JavaScript (Node.js)
const FINEXLY_API_KEY = process.env.FINEXLY_API_KEY;
const BASE_URL = "https://finexly.com/api";
// Two-decimal-pip currencies. Extend as needed.
const TWO_DECIMAL_PIP_QUOTES = new Set(["JPY", "HUF", "KRW"]);
function pipSize(quoteCcy) {
return TWO_DECIMAL_PIP_QUOTES.has(quoteCcy) ? 0.01 : 0.0001;
}
async function getRate(base, quote) {
const res = await fetch(
`${BASE_URL}/latest?base=${base}&symbols=${quote}&api_key=${FINEXLY_API_KEY}`
);
const json = await res.json();
return json.rates[quote];
}
async function calcPipValue({ pair, positionSize, accountCcy }) {
const base = pair.slice(0, 3).toUpperCase();
const quote = pair.slice(3, 6).toUpperCase();
const pip = pipSize(quote);
const pipValueInQuote = pip * positionSize;
if (accountCcy === quote) {
return pipValueInQuote;
}
if (accountCcy === base) {
const rate = await getRate(base, quote);
return pipValueInQuote / rate;
}
// Cross: convert quote -> account via account/quote rate
const rate = await getRate(accountCcy, quote);
return pipValueInQuote / rate;
}
// Example: 100,000 units of EUR/JPY on a USD account
calcPipValue({
pair: "EURJPY",
positionSize: 100_000,
accountCcy: "USD",
}).then((v) => console.log(`Pip value: ${v.toFixed(2)} USD`));Python
import os
import requests
FINEXLY_API_KEY = os.environ["FINEXLY_API_KEY"]
BASE_URL = "https://finexly.com/api"
TWO_DECIMAL_PIP_QUOTES = {"JPY", "HUF", "KRW"}
def pip_size(quote_ccy: str) -> float:
return 0.01 if quote_ccy in TWO_DECIMAL_PIP_QUOTES else 0.0001
def get_rate(base: str, quote: str) -> float:
r = requests.get(
f"{BASE_URL}/latest",
params={"base": base, "symbols": quote, "api_key": FINEXLY_API_KEY},
timeout=10,
)
r.raise_for_status()
return r.json()["rates"][quote]
def calc_pip_value(pair: str, position_size: float, account_ccy: str) -> float:
base, quote = pair[:3].upper(), pair[3:6].upper()
pip = pip_size(quote)
pip_in_quote = pip * position_size
if account_ccy == quote:
return pip_in_quote
if account_ccy == base:
return pip_in_quote / get_rate(base, quote)
# Cross
return pip_in_quote / get_rate(account_ccy, quote)
if __name__ == "__main__":
value = calc_pip_value("EURJPY", 100_000, "USD")
print(f"Pip value: {value:.2f} USD")PHP
<?php
$apiKey = getenv('FINEXLY_API_KEY');
$baseUrl = 'https://finexly.com/api';
$twoDecimalPipQuotes = ['JPY', 'HUF', 'KRW'];
function pipSize(string $quoteCcy): float {
global $twoDecimalPipQuotes;
return in_array($quoteCcy, $twoDecimalPipQuotes, true) ? 0.01 : 0.0001;
}
function getRate(string $base, string $quote): float {
global $apiKey, $baseUrl;
$url = "$baseUrl/latest?base=$base&symbols=$quote&api_key=$apiKey";
$body = file_get_contents($url);
$data = json_decode($body, true);
return $data['rates'][$quote];
}
function calcPipValue(string $pair, float $positionSize, string $accountCcy): float {
$base = strtoupper(substr($pair, 0, 3));
$quote = strtoupper(substr($pair, 3, 3));
$pipInQuote = pipSize($quote) * $positionSize;
if ($accountCcy === $quote) return $pipInQuote;
if ($accountCcy === $base) return $pipInQuote / getRate($base, $quote);
return $pipInQuote / getRate($accountCcy, $quote);
}
echo number_format(calcPipValue('EURJPY', 100000, 'USD'), 2) . " USD\n";cURL
Se hai bisogno solo del tasso grezzo da collegare al tuo calcolo del pip:
curl "https://finexly.com/api/latest?base=USD&symbols=JPY&api_key=YOUR_KEY"
# {"base":"USD","rates":{"JPY":154.20},"timestamp":1746...}Quel singolo tasso è sufficiente per convertire un movimento pip JPY in USD usando la formula sopra.
Trabocchetti Comuni nella Matematica dei Pip che Cadono gli Sviluppatori
I pip sembrano semplici. I bug sono sottili. Cinque cose da osservare:
1. Drift in virgola mobile nell'aritmetica dei pip. 0.1 + 0.2 !== 0.3 in JavaScript, e la stessa famiglia di problemi ti morde quando sommi P&L in pip su molte operazioni. Per qualsiasi cosa che raggiunge la produzione — specialmente i calcoli finanziari — usa contatori interi di pip internamente (moltiplica i prezzi per 10_000 per coppie non-JPY e per 100 per coppie JPY) o una libreria decimale come decimal.js o decimal.Decimal di Python.
2. Codificare 0.0001 come dimensione pip. Questo rompe ogni coppia JPY nel momento in cui un utente ne negozia una. Cerca sempre la dimensione pip da una tabella per coppia.
3. Confondere pip con pipette nel confronto dei prezzi. Una quotazione EUR/USD a 5 decimali come 1.08502 sembra 1.08502 pip di movimento da 1.08501, ma è solo 1 pipette = 0.1 pip. Normalizza in float e dividi per la dimensione del pip.
4. Usare tassi obsoleti per la conversione di valuta del conto nel Caso 3. Un calcolo del valore pip per una posizione aperta dovrebbe usare il tasso corrente, non il tasso al momento dell'apertura della posizione. Se metti in cache i tassi, imposta TTL abbastanza brevi affinché la conversione resti accurata — vedi migliori pratiche di caching e gestione errori per le API valutarie per pattern testati in produzione.
5. Dimenticare l'asimmetria bid/ask. I broker convertono il P&L usando bid per chiudere lunghi e ask per chiudere corti. Per una calcolatrice rivolta all'utente finale che ha bisogno solo di una stima, un tasso medio va bene. Per un sistema di esecuzione, usa il lato appropriato.
Per uno sguardo più approfondito alla divisione bid/ask, vedi il nostro articolo tasso spot vs tasso forward, e per le conversioni cross-coppia tassi di cambio incrociati spiegati.
Valore Pip a Colpo d'Occhio: Coppie Comuni
Per un conto denominato in USD che opera con un lotto standard (100,000 unità), ecco i valori pip tipici a tassi indicativi di maggio 2026. Trattali come un controllo di sanità mentale, non come dogma — preleva tassi in tempo reale dal convertitore di valuta Finexly o dall'API per qualsiasi cosa tocchi un conto reale.
| Coppia | Dimensione pip | Valore pip (1 lotto, conto USD) |
|---|---|---|
| EUR/USD | 0.0001 | 10.00 USD |
| GBP/USD | 0.0001 | 10.00 USD |
| USD/CHF | 0.0001 | ~11.05 USD |
| USD/JPY | 0.01 | ~6.49 USD |
| EUR/JPY | 0.01 | ~6.49 USD |
| AUD/USD | 0.0001 | 10.00 USD |
| EUR/GBP | 0.0001 | ~12.61 USD |
Domande Frequenti
Cos'è un pip nel forex in termini semplici?
Un pip è il più piccolo movimento standardizzato nel prezzo di una coppia di valute — tipicamente la quarta cifra decimale per la maggior parte delle coppie (0.0001) e la seconda cifra decimale per le coppie in yen (0.01). È l'unità universale del mercato FX per misurare il movimento di prezzo.
Come calcolo il valore del pip in codice? Moltiplica la dimensione del pip per la dimensione della posizione per ottenere il valore del pip nella valuta quotata, poi converti nella valuta del tuo conto usando il tasso di cambio corrente. I tre casi (quotata = conto, base = conto, cross) sono mostrati negli esempi JavaScript, Python e PHP sopra.
Qual è la differenza tra un pip e una pipette?
Una pipette è un decimo di un pip — la cifra frazionaria che alcuni broker e feed di dati aggiungono per spread più stretti. Se un pip su EUR/USD è 0.0001, una pipette è 0.00001.
Perché un pip equivale a circa $10 su EUR/USD?
Perché un lotto standard è 100,000 unità e la dimensione del pip per coppie non-JPY è 0.0001. 100,000 × 0.0001 = 10 unità della valuta quotata. Quando la valuta quotata è USD, sono direttamente $10.
Mi serve un'API a pagamento per costruire una calcolatrice di pip? No. Il piano gratuito di Finexly ti dà 1,000 richieste al mese e copre 170+ valute — sufficiente per una calcolatrice di pip personale o un progetto a basso traffico. Per volumi maggiori, vedi i nostri piani tariffari.
Le dimensioni dei pip sono diverse sulle coppie crypto? Le coppie crypto non seguono la convenzione standard dei pip FX. BTC/USD spesso quota a 2 o 4 decimali a seconda del venue, e "1 pip" è definito dal venue. Per P&L crypto puro, lavora in differenze di prezzo assolute piuttosto che in pip.
Pronto a Costruirla?
Ora hai la formula, tre esempi di codice funzionanti e una lista dei bug che mordono la maggior parte delle persone. L'ultimo pezzo sono tassi in tempo reale che non derivano a metà calcolo.
Ottieni la tua chiave API Finexly gratuita — nessuna carta di credito richiesta. Inizia con 1,000 richieste gratuite al mese, 170+ valute, latenza sub-50 ms, e fai upgrade solo quando ti serve. La tua calcolatrice di pip merita tassi accurati quanto la matematica dietro.
Explore More
Vlado Grigirov
Senior Currency Markets Analyst & Financial Strategist
Vlado Grigirov is a senior currency markets analyst and financial strategist with over 14 years of experience in foreign exchange markets, cross-border finance, and currency risk management. He has wo...
View full profile →