Se la tua applicazione deve convertire real brasiliani in rupie indiane, corone norvegesi in dollari di Singapore o qualunque coppia in cui il dollaro americano non sia su nessuno dei due lati, stai per fare matematica con i tassi di cambio incrociati. La maggior parte delle API di valute e delle piazze forex quota migliaia di coppie contro il dollaro, ma solo poche coppie vengono scambiate direttamente tra due valute non-USD. Tutto il resto — ed è la coda lunga — viene calcolato come cross rate.
Questa guida spiega cos'è un tasso di cambio incrociato, la formula nelle sue tre forme, esempi pratici verificabili con una calcolatrice e codice di qualità produzione in JavaScript, Python, PHP e cURL. Copriremo anche le insidie che producono errori dell'ordine dell'1% nei sistemi reali: arrotondamento, spread bid-ask, tassi obsoleti ed errori di inversione.
Cos'è un tasso di cambio incrociato?
Un tasso di cambio incrociato è il prezzo di una valuta espresso in un'altra valuta quando nessuna delle due è la valuta locale o di riferimento nelle quotazioni originali. In pratica significa quasi sempre una coppia di valute che non include il dollaro americano, derivata da due coppie che lo includono ciascuna.
Per esempio, il tasso EUR/JPY è tecnicamente un cross rate. Anche se EUR/JPY è una delle coppie più scambiate al mondo e ha un proprio mercato quotato, la logica sottostante resta la stessa: prendi EUR/USD, prendi USD/JPY, moltiplica e ottieni lo stesso numero che ti quoterebbe una banca a Tokyo. La quotazione di mercato e il cross calcolato sono ancorati l'uno all'altro tramite arbitraggio — se si separassero, i trader interverrebbero finché non tornano a coincidere.
Le valute prive di un mercato diretto liquido — per esempio naira nigeriana contro peso filippino (NGN/PHP) — esistono solo come cross rate. Non c'è un mercato NGN/PHP in alcun senso significativo. Chi quota questa coppia la sta calcolando da NGN/USD e USD/PHP.
La definizione tecnica chiarisce la distinzione:
- Un tasso diretto è quotato attivamente su un mercato o un feed aggregato.
- Un tasso incrociato è calcolato a partire da due o più tassi diretti che condividono una valuta di base comune (di solito USD).
La maggior parte dei provider di API, incluso Finexly, serve i cross rate in modo trasparente: chiedi qualunque coppia e il motore gestisce la matematica dietro le quinte. Conoscere come funziona quella matematica resta importante perché incide su come gestisci precisione, spread e casi limite.
Perché i cross rate sono importanti per gli sviluppatori
I cross rate compaiono in tre categorie di applicazioni:
Pagamenti transfrontalieri e rimesse. Un freelance filippino che fattura un cliente brasiliano vuole sapere quanti BRL valgono le sue tariffe in PHP. Non esiste un mercato diretto BRL/PHP — la piattaforma calcola tramite USD.
E-commerce multivaluta. Un commerciante norvegese che mostra prezzi a un cliente di Singapore ha bisogno di NOK/SGD. Stripe, Adyen e la maggior parte dei processori di pagamento calcolano internamente questo cross e poi aggiungono sopra il loro margine FX.
Analisi finanziaria e trading. I sistemi quantitativi coprono l'esposizione di portafogli denominati in molte valute. Per conoscere la tua esposizione netta in EUR devi convertire posizioni in MXN, INR, ZAR e BRL in EUR — tutti calcoli incrociati.
In ogni caso, la qualità del tuo cross rate dipende interamente dalla qualità e dalla freschezza delle due coppie USD sottostanti. Un EUR/USD di 2 secondi fa combinato con un USD/JPY di 60 secondi fa produce un cross sbagliato esattamente di quanto si è mosso lo JPY in quell'intervallo. Per un'introduzione su come si originano e si aggiornano i tassi, vedi la nostra guida come funzionano i tassi di cambio.
La formula del cross rate
Ci sono tre casi, a seconda di come sono quotate le due coppie sorgente. Il principio generale è semplice: scrivendo i tassi come frazioni, la valuta comune deve cancellarsi.
Caso 1: USD è la valuta quotata in entrambe le coppie
Supponi di avere:
- EUR/USD = 1,0850 (1 EUR compra 1,0850 USD)
- GBP/USD = 1,2620 (1 GBP compra 1,2620 USD)
Vuoi EUR/GBP. La formula è:
EUR/GBP = (EUR/USD) / (GBP/USD)
EUR/GBP = 1.0850 / 1.2620 = 0.8598Quindi 1 euro compra 0,8598 sterline. Entrambe le quotazioni sorgente hanno USD a destra, quindi dividiamo.
Caso 2: USD è la valuta di base in entrambe le coppie
Supponi di avere:
- USD/JPY = 152,30
- USD/CHF = 0,8920
Vuoi JPY/CHF. La formula è:
JPY/CHF = (USD/CHF) / (USD/JPY)
JPY/CHF = 0.8920 / 152.30 = 0.005857Quindi 1 yen compra 0,005857 franchi svizzeri. Entrambe le quotazioni hanno USD a sinistra, quindi dividiamo, ma con il rapporto invertito.
Caso 3: USD è base in una e quotato nell'altra (misto)
È il caso più comune ed è dove avvengono gli errori. Supponi di avere:
- EUR/USD = 1,0850 (USD è il quotato)
- USD/JPY = 152,30 (USD è la base)
Vuoi EUR/JPY. La formula è:
EUR/JPY = (EUR/USD) × (USD/JPY)
EUR/JPY = 1.0850 × 152.30 = 165.25Quindi 1 euro compra 165,25 yen. I dollari si cancellano puliti: euro per dollaro per dollari per yen lascia euro per yen. Nel caso misto moltiplica.
Regola pratica: scrivi le coppie come frazioni, allineale in modo che USD si cancelli e moltiplica o dividi di conseguenza. La valuta che resta come numeratore diventa la base del tuo cross rate.
Esempi pratici verificabili
Usa qualunque feed di valute serio per verificare questi numeri. I valori esatti varieranno con il mercato; quello che conta è la struttura.
Esempio 1: EUR/JPY (caso misto)
Dato EUR/USD = 1,0850 e USD/JPY = 152,30:
EUR/JPY = 1.0850 × 152.30 = 165.2455Esempio 2: GBP/CHF (caso misto)
Dato GBP/USD = 1,2620 e USD/CHF = 0,8920:
GBP/CHF = 1.2620 × 0.8920 = 1.1257Esempio 3: AUD/NZD (entrambi quotati contro USD)
Dato AUD/USD = 0,6630 e NZD/USD = 0,6010:
AUD/NZD = 0.6630 / 0.6010 = 1.1031Quindi 1 dollaro australiano compra 1,1031 dollari neozelandesi.
Esempio 4: BRL/INR (entrambi quotati con USD come base)
Dato USD/BRL = 5,0850 e USD/INR = 84,20:
BRL/INR = (USD/INR) / (USD/BRL) = 84.20 / 5.0850 = 16.561Quindi 1 real brasiliano compra 16,561 rupie indiane.
Per un ripasso dei codici standardizzati a tre lettere usati qui, vedi la nostra guida ai codici ISO 4217.
Tassi reciproci e inversione delle coppie
A volte il tuo feed dati ti dà USD/EUR ma ti serve EUR/USD. Il reciproco è:
EUR/USD = 1 / (USD/EUR)Se USD/EUR = 0,9217, allora EUR/USD = 1 / 0,9217 = 1,0850.
Due punti pratici sui reciproci:
Primo, l'arrotondamento si accumula. Se arrotondi un tasso a 4 decimali, poi prendi il reciproco e arrotondi ancora, puoi introdurre errori dello 0,01% o più. Per applicazioni ad alta precisione mantieni il reciproco in piena precisione floating point fino al passo finale di visualizzazione. Trattiamo le strategie di precisione in dettaglio nel post sulle best practice di caching e gestione errori per API valute.
Secondo, bid e ask si invertono nel reciproco. Se GBP/USD ha un bid di 1,2618 e un ask di 1,2622, allora USD/GBP ha un bid di 1/1,2622 = 0,7923 e un ask di 1/1,2618 = 0,7925. Il bid di una coppia è il reciproco dell'ask dell'altra, non del bid.
Spread bid-ask sui cross rate
Quando costruisci un cross rate da due coppie sottostanti, gli spread si sommano.
Supponi:
- EUR/USD ha bid 1,0848 e ask 1,0852 (spread di 4 pip)
- USD/JPY ha bid 152,27 e ask 152,33 (spread di 6 pip)
Il cross EUR/JPY implicito ha:
Bid = 1.0848 × 152.27 = 165.183
Ask = 1.0852 × 152.33 = 165.309Sono 12,6 pip di spread sul cross — più ampio di entrambe le coppie sorgente. In pratica, il mercato direttamente quotato di EUR/JPY ha uno spread più stretto di questo calcolato perché le coppie incrociate liquide hanno propri market maker.
Conclusione per gli sviluppatori: i cross rate mid-market calcolati da due coppie USD sono stime del vero mercato diretto. Sufficienti per mostrare prezzi in checkout, va bene per analisi, ma non quello che la tua banca o il tuo broker eseguiranno realmente. La distinzione mid-market vs tasso del dealer è trattata nella nostra guida al tasso mid-market.
Come calcolare i cross rate con la API di Finexly
Di norma non devi calcolare i cross rate a mano. La API di Finexly accetta qualunque base e qualunque lista di valute target e serve il cross internamente con precisione costante. Ecco come usarla in quattro stack comuni.
cURL
curl "https://api.finexly.com/v1/latest?base=BRL&symbols=INR,PHP,NGN" \
-H "Authorization: Bearer YOUR_API_KEY"Risposta:
{
"base": "BRL",
"date": "2026-05-09",
"rates": {
"INR": 16.561,
"PHP": 11.272,
"NGN": 312.45
}
}JavaScript (Node 20+, Fetch)
async function getCrossRates(base, targets) {
const url = `https://api.finexly.com/v1/latest?base=${base}&symbols=${targets.join(",")}`;
const res = await fetch(url, {
headers: { Authorization: `Bearer ${process.env.FINEXLY_API_KEY}` }
});
if (!res.ok) throw new Error(`Finexly API error: ${res.status}`);
return res.json();
}
const data = await getCrossRates("BRL", ["INR", "PHP", "NGN"]);
console.log(`1 BRL = ${data.rates.INR} INR`);Python
import os
import requests
def get_cross_rates(base, targets):
url = "https://api.finexly.com/v1/latest"
params = {"base": base, "symbols": ",".join(targets)}
headers = {"Authorization": f"Bearer {os.environ['FINEXLY_API_KEY']}"}
response = requests.get(url, params=params, headers=headers, timeout=10)
response.raise_for_status()
return response.json()
data = get_cross_rates("BRL", ["INR", "PHP", "NGN"])
print(f"1 BRL = {data['rates']['INR']} INR")PHP
<?php
function getCrossRates(string $base, array $targets): array {
$symbols = implode(',', $targets);
$url = "https://api.finexly.com/v1/latest?base={$base}&symbols={$symbols}";
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('FINEXLY_API_KEY')],
CURLOPT_TIMEOUT => 10,
]);
$body = curl_exec($ch);
if (curl_errno($ch)) throw new RuntimeException(curl_error($ch));
curl_close($ch);
return json_decode($body, true);
}
$data = getCrossRates('BRL', ['INR', 'PHP', 'NGN']);
echo "1 BRL = {$data['rates']['INR']} INR\n";In tutti e quattro gli esempi, la API fa la matematica del cross rate al posto tuo e restituisce valori mid-market precisi. Puoi cambiare la base in una qualsiasi delle 170+ valute supportate e richiedere qualunque numero di target in una sola chiamata. Per pattern specifici per linguaggio vedi il nostro tutorial Python per API valute, guida integrazione Node.js e guida PHP.
Quando dovresti calcolare tu i cross rate
Anche con una buona API, ci sono tre scenari in cui calcoli i cross rate sui tuoi dati invece di fetchare:
Backtesting di strategie storiche. Se hai anni di dati tick di EUR/USD e USD/JPY sui tuoi server, calcolare EUR/JPY localmente evita di colpire un'API esterna milioni di volte. Usa gli endpoint di tassi storici per popolare i dati e poi deriva i cross dentro il tuo motore di backtest.
Applicazioni latency-sensitive. I sistemi di trading algoritmico spesso pre-calcolano i cross dalle coppie USD sottostanti in memoria perché risparmiare un round-trip di rete conta. Il trade-off è che ti assumi la responsabilità di sincronizzazione e freschezza.
Tassi miscelati personalizzati. Alcune piattaforme quotano tassi interni che mescolano più sorgenti o applicano un markup. Fare il calcolo del cross internamente ti permette di applicare la tua logica di business prima di esporre il tasso al cliente.
Se il tuo caso d'uso non rientra in nessuno dei precedenti — una pagina di checkout, uno strumento di fatturazione, una dashboard interna — lascia che la API serva il cross direttamente. Sarà più preciso, più semplice da mantenere e più rapido da implementare.
Insidie comuni nel calcolo dei cross rate
Sono gli errori che vediamo più spesso nelle code review degli sviluppatori.
Invertire la coppia sbagliata. Quando le due coppie sorgente sono quotate in direzioni opposte (una con USD come base, l'altra con USD come quotato), è facile moltiplicare quando avresti dovuto invertire e dividere. Scrivi sempre i tassi come frazioni e conferma che la valuta comune si cancelli davvero.
Arrotondare troppo presto. Bug classico: arrotondi ogni tasso sorgente a quattro decimali e poi moltiplichi. L'arrotondamento composto può produrre errori dello 0,01% – 0,1%. Per i calcoli finanziari mantieni la piena precisione e arrotonda solo in fase di visualizzazione.
Usare tassi obsoleti. Se i due tassi sorgente sono stati ottenuti a 30 secondi di distanza, il cross costruito da essi è incoerente internamente. Recupera entrambi in una singola chiamata API (è quello che fa ?symbols=A,B,C nella API di Finexly) in modo che abbiano lo stesso timestamp.
Mescolare dati feriali e weekend. I mercati forex chiudono il weekend. Se il tuo job schedulato ha tirato EUR/USD venerdì alle 17:01 EST e USD/JPY venerdì alle 16:59 EST, potresti star mescolando dati live e dati congelati. Standardizza tutti i fetch dei tassi su un unico timestamp di mercato. Ne parliamo a fondo nella guida agli orari del mercato forex.
Ignorare lo spread per uso transazionale. I cross rate calcolati da fonti mid-market vanno bene per la visualizzazione, ma se stai muovendo soldi veri ti serve il bid o l'ask a seconda della direzione dell'operazione. Modella esplicitamente lo spread nel codice, non basarti sul mid.
Domande frequenti
Cos'è un cross rate in parole semplici?
È il tasso di cambio tra due valute, calcolato usando il tasso di ciascuna contro una terza valuta comune, tipicamente il dollaro americano. Per esempio, il tasso EUR/JPY è derivato da EUR/USD e USD/JPY.
EUR/JPY e GBP/JPY sono considerati cross rate?
Sì, tecnicamente. Non includono il dollaro americano, quindi per definizione stretta sono cross. Tuttavia entrambe le coppie sono talmente scambiate direttamente da avere mercati propri quotati e si comportano come coppie principali nella pratica.
Perché sono importanti i cross rate?
I cross rate rendono possibile prezzare e negoziare valute che non hanno tra loro un mercato diretto liquido — la maggior parte delle coppie nel mondo. Sono essenziali per pagamenti transfrontalieri, commercio multivaluta e analisi finanziarie globali.
Posso calcolare un cross rate senza usare il dollaro americano come ponte?
Sì. Qualunque valuta comune funziona come ponte. EUR è a volte usato in calcoli centrati sull'Europa, JPY in alcuni mercati asiatici. USD è il default perché più coppie sono quotate contro di lui, dando una qualità dei dati migliore.
Quanto sono accurati i cross rate calcolati rispetto alle quotazioni di mercato dirette?
Per i cross liquidi come EUR/JPY o GBP/CHF, tassi calcolati e diretti sono quasi identici grazie all'arbitraggio. Per cross illiquidi come NGN/PHP, il tasso calcolato è l'unico riferimento disponibile — non c'è un mercato diretto separato con cui confrontarsi.
Finexly calcola i cross rate automaticamente?
Sì. Richiedi qualunque base e qualunque lista di valute target, e la API serve cross rate mid-market coerenti. Non devi calcolare o invertire nulla da solo.
Inizia con Finexly
Pronto a usare cross rate in tempo reale nella tua applicazione? Ottieni la tua API key Finexly gratuita — senza carta di credito. Ottieni 1.000 richieste al mese sul piano gratuito e puoi crescere attraverso i nostri piani tariffari man mano che il traffico aumenta. La API supporta più di 170 valute e calcola i cross rate per qualsiasi coppia in modo trasparente, così puoi concentrarti sul tuo prodotto invece che sulla matematica FX.
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 →