Если вы создаёте что-либо, связанное с иностранной валютой — checkout-процесс, биллинг, приложение для денежных переводов, дашборд казначейства, торгового бота — рано или поздно вы столкнётесь с разницей между спот-курсом и форвард-курсом. Оба термина описывают одно и то же (цену одной валюты в другой) в разные моменты времени, и путаница между ними — одна из самых частых (и самых дорогих) ошибок, которые разработчики допускают при интеграции API курсов валют. Это руководство простыми словами разбирает спот-курс vs форвард-курс, показывает математику расчёта форвард-курсов и проводит через реальные примеры кода, которые можно скопировать в проект уже сегодня.
Что такое спот-курс?
Спот-курс — это текущая рыночная цена, по которой валютную пару можно купить или продать с немедленной поставкой. «Немедленно» в FX означает T+2 — сделка заключается сегодня, а фактический обмен денег происходит через два рабочих дня. Для большинства программных приложений это двухдневное окно расчётов невидимо. Когда вы вызываете API курсов валют и получаете EUR/USD = 1,0842, вы видите спот-курс.
Спот-курсы постоянно меняются в течение часов работы Forex-рынка. Межбанковский рынок ежедневно торгует около 7,5 трлн долларов спот-FX, и цены обновляются много раз в секунду. К моменту, когда ваш код прочтёт курс, распарсит JSON и запишет цену в базу, курс уже сдвинется — обычно ничтожно, но в волатильные сессии (заявление ФРС, валютная интервенция, геополитический шок) он может сдвинуться на 1–2% за минуты.
Для разработчиков практический вывод прост. Спот-курс — это почти всегда то, что вам нужно. Конвертации в реальном времени, e-commerce checkout, отчёты о расходах, мультивалютный биллинг, дашборды, аналитика — всё это опирается на спот. Форвард-курсы — узкоспециализированный инструмент для ограниченного набора казначейских и хеджирующих сценариев.
Что такое форвард-курс?
Форвард-курс — это договорная цена, согласованная сегодня для валютного обмена, который произойдёт в конкретную будущую дату — через 30 дней, 90 дней, шесть месяцев или даже годы. Форвард-курс — не прогноз будущего спот-курса. Это рассчитанная безарбитражная цена, выведенная из сегодняшнего спота плюс разница процентных ставок между двумя валютами.
Две стороны (обычно корпоративный казначей и банк) подписывают форвардный контракт, обязывающий обе стороны обменять согласованную сумму по согласованному форвард-курсу в согласованную будущую дату — независимо от того, где торгуется спот в этот момент. По сути это инструмент хеджирования: он устраняет неопределённость относительно того, где будет спот к моменту получения будущего денежного потока.
Форвард-курсы котируются либо как абсолютная цена (например, EUR/USD 3M = 1,0875), либо как форвардные пункты — количество базисных пунктов, которое нужно прибавить или вычесть из текущего спота. Типичная банковская котировка может выглядеть так: «EUR/USD 3M форвардные пункты = +33», что означает, что трёхмесячный форвард равен споту плюс 0,0033.
Математика: как рассчитываются форвард-курсы
Форвард-курсы подчиняются покрытому процентному паритету — безарбитражному условию, связывающему спот, форвард и процентные ставки двух валют. Формула:
F = S × (1 + i_quote × (t / 360)) / (1 + i_base × (t / 360))Где:
- F = форвард-курс
- S = спот-курс (валюта котировки за единицу базовой)
- i_base = ставка базовой валюты (годовая, в долях)
- i_quote = ставка валюты котировки (годовая, в долях)
- t = дни до даты расчёта форварда
Экономическая интуиция: если бы можно было занять в одной валюте под низкую ставку, конвертировать в более доходную, разместить и зафиксировать форвард обратно — получался бы безрисковый доход. Рынки закрывают этот разрыв, выставляя форвард так, что чистый результат сделки — ноль. Валюты с более высокой ставкой торгуются с форвардным дисконтом (форвард слабее спота). Валюты с более низкой ставкой торгуются с форвардной премией.
Подробный пример
Пусть сегодняшний спот EUR/USD = 1,0842, трёхмесячная ставка USD — 4,50%, трёхмесячная ставка EUR — 2,25%. До расчёта 90 дней:
F = 1,0842 × (1 + 0,0450 × (90/360)) / (1 + 0,0225 × (90/360))
F = 1,0842 × (1 + 0,01125) / (1 + 0,005625)
F = 1,0842 × 1,01125 / 1,005625
F ≈ 1,0903Трёхмесячный форвард EUR/USD ≈ 1,0903 — примерно на 61 пип (форвардных пункта) выше спота. Евро торгуется с форвардной премией, потому что ставки EUR ниже ставок USD. Если вы сегодня заключите форвард на покупку евро через 90 дней, вы заплатите 1,0903 USD за EUR — даже если к тому моменту спот ушёл на 1,10 или 1,05.
Спот-курс vs форвард-курс: сравнение
Что меняется при переходе от спота к форварду в простых терминах:
Дата расчёта. Спот рассчитывается через два рабочих дня. Форвард — в согласованную будущую дату, обычно 1, 3, 6 или 12 месяцев.
Источник цены. Спот формируется живыми спросом и предложением. Форвард рассчитывается из спота плюс разницы ставок.
Волатильность курса. Спот высоко волатилен и обновляется непрерывно. Зафиксированный форвард-курс остаётся неизменным с момента подписания контракта.
Сценарий. Спот — для «нужно конвертировать сейчас». Форвард — для «я знаю, что нужно будет конвертировать в конкретную будущую дату, и хочу зафиксировать курс сегодня».
Поддержка API. Большинство современных валютных API (включая Finexly) по умолчанию отдают спот. Форвард-курсы обычно предлагают крупные институциональные провайдеры (банки) и узкая группа FX-ориентированных финтех-API.
Стоимость. Спот-конвертации несут bid/ask-спред. Форварды — спред плюс небольшую премию за фиксацию курса; для не-спекулятивных пользователей «стоимость» — это просто отклонение от того, где в итоге окажется спот.
Когда нужен спот-курс
Около 95% сценариев разработчиков требуют спот-курса. Типичные случаи:
- Мультивалютный checkout. Пользователь в Бразилии платит в BRL, бизнес выставляет в USD — вы показываете цену по живому споту, чтобы пользователь видел справедливую конвертацию. (Подробнее в нашем гайде по мультивалютному ценообразованию для e-commerce.)
- SaaS-биллинг в локальных валютах. При рендере счёта вы запрашиваете сегодняшний спот, чтобы перевести цену плана из USD в EUR, GBP или JPY.
- Отчёты о расходах и бухгалтерия. Возмещения используют спот на дату возникновения расхода. (См. API курсов валют для бухгалтерского ПО.)
- Конвертеры валют. Будь то калькулятор на маркетинговом сайте или конвертер в приложении — вы тянете спот. Попробуйте конвертер валют Finexly.
- Аналитические дашборды. Отчётность по выручке между валютами почти всегда использует спот в фиксированном дневном снимке.
- Торговые приложения. Розничные FX-брокеры котируют спот-цены (с наценкой) и переносят позиции на ночь, используя производную от форвард-курса.
Если вы не подписываете контракт, обязывающий обменять конкретную сумму в конкретную будущую дату, вам нужен спот.
Когда нужен форвард-курс
Форвард-курс возникает в трёх реальных контекстах:
Корпоративное казначейство и хеджирование. Европейский экспортёр, выставляющий счета американским клиентам в USD, знает, что в течение 90 дней получит USD-платежи. Чтобы устранить риск движения EUR/USD против него, казначей открывает форвард на продажу USD/покупку EUR по фиксированному курсу. Этот процесс мы разбираем в гайде по автоматизации управления валютным риском.
Ценообразование будущих контрактов. Если бизнес сегодня подписывает контракт с оплатой в иностранной валюте через шесть месяцев, для пересчёта будущего денежного потока в сегодняшнюю отчётную валюту в целях бюджетирования следует использовать форвард-курс.
Ценообразование деривативов. Опционы, свопы, NDF и прочие FX-деривативы используют форварды как входные параметры. Если вы строите что-то в этой области, обойти их не получится.
Для всего остального — checkout, биллинг, конвертация, аналитика — форварды — ненужное усложнение.
Сборка на спот-курсах: примеры кода
Так выглядит работа со спот-курсами через Finexly API. Эндпоинт возвращает текущий mid-market спот-курс для любой валютной пары из 170+ поддерживаемых валют.
cURL
curl "https://api.finexly.com/v1/latest?base=EUR&symbols=USD,GBP,JPY" \
-H "Authorization: Bearer YOUR_API_KEY"Python
import requests
def get_spot_rate(base, quote):
response = requests.get(
"https://api.finexly.com/v1/latest",
params={"base": base, "symbols": quote},
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=5,
)
response.raise_for_status()
data = response.json()
return data["rates"][quote]
eur_usd = get_spot_rate("EUR", "USD")
print(f"1 EUR = {eur_usd} USD (spot)")JavaScript (Node.js)
async function getSpotRate(base, quote) {
const url = `https://api.finexly.com/v1/latest?base=${base}&symbols=${quote}`;
const res = await fetch(url, {
headers: { Authorization: "Bearer YOUR_API_KEY" },
});
if (!res.ok) throw new Error(`Finexly API error: ${res.status}`);
const data = await res.json();
return data.rates[quote];
}
const rate = await getSpotRate("EUR", "USD");
console.log(`1 EUR = ${rate} USD (spot)`);Для приложений, переоценивающих цены много раз в секунду, кэшируйте ответ на 30–60 секунд и обновляйте в фоне. Полный паттерн — в лучших практиках кэширования и обработки ошибок в API курсов.
Аппроксимация форвард-курса по споту и ставкам
Большинство приложений никогда не котируют настоящий форвард, но иногда требуется оценка — например, чтобы показать в казначейском дашборде проекцию «курс на ожидаемую дату расчёта». Формула покрытого процентного паритета даёт результат в нескольких базисных пунктах от настоящей банковской котировки.
Питон-хелпер, который объединяет вызов спота Finexly с простым расчётом форварда:
import requests
def get_spot_rate(base, quote, api_key):
r = requests.get(
"https://api.finexly.com/v1/latest",
params={"base": base, "symbols": quote},
headers={"Authorization": f"Bearer {api_key}"},
timeout=5,
)
r.raise_for_status()
return r.json()["rates"][quote]
def estimate_forward(spot, base_rate, quote_rate, days):
"""Covered interest rate parity, ACT/360 day count."""
factor = days / 360
return spot * (1 + quote_rate * factor) / (1 + base_rate * factor)
spot = get_spot_rate("EUR", "USD", "YOUR_API_KEY")
forward_3m = estimate_forward(
spot=spot,
base_rate=0.0225,
quote_rate=0.0450,
days=90,
)
print(f"Spot: {spot:.4f}")
print(f"3M forward est: {forward_3m:.4f}")
print(f"Forward points: {(forward_3m - spot) * 10000:.0f}")Две важные оговорки. Во-первых, это оценка. Реальные форвардные котировки также содержат bid/ask-спред, кредитную премию и мелкие фрикции вроде cross-currency basis. Для нетрейдинговых сценариев (прогнозы, дашборды, внутреннее моделирование) точности достаточно. Для заключения реальных форвард-контрактов запрашивайте котировку у банка или брокера. Во-вторых, ставки должны соответствовать сроку форварда. Используйте 1-месячные ставки для 1-месячного форварда, 3-месячные — для 3-месячного, и т. д. Использование ставки overnight для 6-месячного форварда даст существенно неверное число.
Типичные ошибки разработчиков
В код-ревью FX-интеграций повторяется набор одних и тех же ошибок. Все они легко обходятся, если знать, что искать.
Хранить спот-курс так, как будто он не меняется. Спот, полученный в 09:00, может быть совершенно несвежим к 16:00 — особенно в волатильных парах вроде USD/JPY или USD/TRY. Если кэшируете, версионируйте кэш по timestamp и обновляйте часто.
Использовать спот там, где требуется форвард. Если бизнес отчитывается о стоимости будущего денежного потока для бюджета, бухгалтерские стандарты (МСФО, US GAAP) часто требуют форвард, а не спот. До того как захардкодить спот, обсудите это с финансовой командой.
Путать форвард с прогнозом. Трёхмесячный форвард — не рыночный прогноз спота через три месяца. Это безарбитражная конструкция. Куда реально пойдёт спот — неизвестно. Это сбивает с толку чаще продакт-менеджеров, чем разработчиков, но заблуждение просачивается в код (например, переменная с форвардом названа predicted_rate).
Перевернуть разницу ставок. Формула чувствительна к тому, какая ставка в числителе, а какая — в знаменателе. Перепутанный знак выдаёт форвард с неверной стороны от спота. Всегда проверяйте здравый смысл: валюта с более высокой ставкой торгуется с форвардным дисконтом.
Игнорировать выходные и праздники при расчётах. T+2 — это два рабочих дня. Спот в пятницу днём расчитается во вторник, а не в воскресенье. Форварды приходятся на согласованную дату, или на следующий рабочий день, если это праздник — учтите это в любой логике дат расчёта.
Почему спот-курсы движут большинство современных приложений
Двадцать лет назад любому, кто переводил деньги через границу, приходилось думать о форвардах. Сегодня мгновенные расчёты, real-time-платежи и FX по требованию схлопнули временной зазор, который форварды должны были закрывать. SaaS-бизнесу в 2026 году не нужно фиксировать EUR/USD на три месяца вперёд — он просто выставляет счёт клиенту в локальной валюте, рассчитывает каждую транзакцию по живому споту и поглощает небольшую дневную дисперсию.
Именно для этого создан Finexly — для разработчиков, которым нужен свежий и надёжный спот-курс без инфраструктурных накладных расходов. Наш бесплатный тариф API курсов валют покрывает большинство ранних проектов, а тарифы масштабируются линейно по мере роста. Если вы взвешиваете альтернативы — в нашем сравнении API курсов валют разобраны все компромиссы.
Часто задаваемые вопросы
В чём разница между спот-курсом и форвард-курсом?
Спот-курс — текущая цена для немедленного валютного обмена (расчёт через два рабочих дня). Форвард-курс — цена, согласованная сегодня, для обмена в конкретную будущую дату (обычно 1, 3, 6 или 12 месяцев). Форвард рассчитывается из спота плюс разницы процентных ставок двух валют.
Является ли форвард прогнозом будущего спота?
Нет. Форвард — это рассчитанная безарбитражная цена, выведенная из сегодняшнего спота и разницы ставок. Куда фактически выйдет спот в будущем — неизвестно. Эмпирически форварды не были надёжными предсказателями будущих спотов.
Какой курс возвращает API курсов валют, например Finexly?
Finexly по умолчанию возвращает mid-market спот-курс — текущую цену для немедленного обмена. Спот-курсы движут практически все потребительские и SaaS-сценарии: checkout, биллинг, конвертация, отчётность. Форварды — специализированный казначейский продукт, который в основном предлагают банки.
Как рассчитать форвард-курс из спот-курса?
Используйте формулу покрытого процентного паритета: F = S × (1 + i_quote × t/360) / (1 + i_base × t/360), где S — спот, i_base и i_quote — ставки двух валют, t — дни до расчёта. Подробный пример с кодом — выше в статье.
Когда использовать форвард вместо спота?
Только когда у вас есть договорное обязательство обменять конкретную сумму в конкретную будущую дату и вы хотите зафиксировать курс сегодня. Самые частые случаи — корпоративное хеджирование казначейства, ценообразование длинных коммерческих контрактов и FX-деривативы. Для всего остального — checkout, биллинга, бухгалтерии, дашбордов — нужен спот.
Готовы интегрировать спот-курсы в реальном времени в свой проект? Получите бесплатный API-ключ Finexly — без привязки карты. Начните с бесплатного тарифа и 170+ поддерживаемых валют, а по мере роста переходите на старшие планы.
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 →