Спот, bid, ask и спред: как котируются цены на драгоценные металлы
Спот, bid, ask, средняя цена и спред для золота, серебра, платины и палладия: как дилеры формируют котировки и как запросить и показать bid/ask через API.
Почему у одной унции золота несколько цен
Посмотрите цену золота на трёх сайтах в один и тот же момент — и вы нередко увидите три немного разных числа. Сайт дилера монет покажет ещё два. Ни одно из них не обязательно ошибочно: они отвечают на разные вопросы. Одно — это спотовая цена середины рынка, другое — цена фьючерсного контракта, третье — цена, по которой дилер продаст вам слиток, а четвёртое — цена, по которой он выкупит его обратно.
Если вы создаёте что-то, что показывает или использует цены на драгоценные металлы, — витрину дилера, трекер портфеля, ювелирный калькулятор или внутренний отчёт, — вам нужно понимать, с каким из этих чисел вы работаете. В этой статье объясняются основные понятия (спот, bid, ask, средняя цена и спред), показано, как дилеры превращают оптовые котировки в розничные цены, и разобрано, как запрашивать и отображать цены bid и ask с помощью REST API MetalAPI.
Это образовательная статья о том, как котируются цены. Она не является инвестиционной или торговой рекомендацией, а все числа в примерах условные.
Спотовая цена: ориентир для немедленной поставки
Спотовая цена — это цена стандартного количества металла с немедленной поставкой, в отличие от поставки в будущем. На оптовом рынке золота, где торговля идёт в основном на внебиржевом рынке (OTC) с центром в Лондоне, под «спотом» традиционно понимают расчёты через два рабочих дня после сделки.
Драгоценные металлы котируются за тройскую унцию (31,1034768 грамма), обычно в долларах США, с кодами в стиле ISO: XAU — золото, XAG — серебро, XPT — платина и XPD — палладий. Поэтому XAU/USD читается как «долларов США за тройскую унцию золота» — так же, как EUR/USD читается как «долларов США за евро».
Поскольку спотовый рынок внебиржевой, нет единой биржи, которая публиковала бы официальную последнюю сделку. Банки и поставщики ликвидности транслируют собственные двусторонние котировки, а «спотовая цена», которую вы видите на сайте, — это репрезентативное значение, полученное из этих котировок, чаще всего средняя цена. С ней легко спутать несколько родственных цен:
- Фьючерсные цены, например контракта на золото COMEX, относятся к поставке в одном из будущих месяцев. Обычно они отличаются от спота на стоимость владения (cost of carry): проценты и хранение до поставки.
- Эталонные цены (бенчмарки), такие как LBMA Gold Price (устанавливается на аукционах дважды в каждый рабочий день в Лондоне) и LBMA Silver Price (устанавливается раз в день), — это единые справочные значения, по которым рассчитываются контракты и оцениваются активы. Их фиксируют в определённое время, и в промежутках они не меняются.
- Розничные цены на монеты и слитки включают премию сверх спота. О них — ниже.
Bid, ask и средняя цена
На двустороннем рынке каждая котировка состоит из двух чисел:
- Bid — самая высокая цена, которую маркетмейкер сейчас готов заплатить. Это цена, по которой вы могли бы продать.
- Ask, или offer, — самая низкая цена, по которой маркетмейкер готов продать. Это цена, по которой вы могли бы купить.
Ask всегда не ниже bid. Средняя цена (mid) — их среднее арифметическое, (bid + ask) / 2. По средней цене как таковой никто не торгует; это нейтральный ориентир, который находится между двумя сторонами и не выгоден ни покупателю, ни продавцу. Поэтому именно её естественно использовать для графиков, оценки портфеля и заголовков вроде «цена золота сегодня», и именно её большинство API цен возвращают по умолчанию.
| Термин | Значение | Типичное применение |
|---|---|---|
| Bid | Лучшая цена, которую заплатит покупатель | Оценка металла, который вы бы продали; ориентир для цен выкупа у дилера |
| Ask (offer) | Лучшая цена, которую примет продавец | Стоимость покупки; ориентир для цен продажи у дилера |
| Mid (средняя) | Среднее между bid и ask | Графики, оценка активов, цены в заголовках |
| Спред | Ask минус bid | Оценка ликвидности и стоимости сделки «туда и обратно» |
Разберём пример с условными числами. Допустим, оптовая котировка золота — 3 997,62 bid и 3 998,16 ask в долларах США за тройскую унцию:
bid = 3 997,62
ask = 3 998,16
mid = (3 997,62 + 3 998,16) / 2 = 3 997,89
спред = 3 998,16 - 3 997,62 = 0,54 USD
спред в % от mid = 0,54 / 3 997,89 ≈ 0,0135 % (около 1,35 базисного пункта)Спреды на практике
Спред — это цена немедленности: во что обойдётся купить и сразу же продать обратно. Сравнивайте спреды в относительном выражении — в процентах от средней цены или в базисных пунктах (сотых долях процента). Абсолютный спред 0,50 означает совсем разное для золота стоимостью в несколько тысяч долларов за унцию и для серебра стоимостью в несколько десятков долларов.
Спред расширяется или сужается под влиянием нескольких факторов:
- Ликвидность металла. Золото — самый активно торгуемый драгоценный металл, и обычно у него самый узкий относительный спред. Платина и палладий торгуются в гораздо меньших объёмах, поэтому их спреды в процентном выражении обычно шире.
- Время суток. Спреды, как правило, наиболее узкие, когда одновременно работают основные торговые центры, и шире в спокойные часы — например, около ежедневного закрытия в Нью-Йорке и при еженедельном открытии рынка в воскресенье вечером по нью-йоркскому времени.
- Волатильность и новости. Вокруг выхода важной экономической статистики или во время рыночного стресса маркетмейкеры расширяют котировки, чтобы защитить себя.
- Объём. Котируемый спред относится к стандартному объёму сделки. Очень крупные заявки могут котироваться с более широким спредом, а небольшие розничные покупки несут издержки, которые оптовый спред вообще не включает.
Рассчитывая спреды в коде, используйте неокруглённые числа из потока данных и измеряйте относительный спред относительно средней цены:
function spreadStats(bid, ask) {
const mid = (bid + ask) / 2;
const spread = ask - bid;
return {
mid,
spread,
spreadPct: (spread / mid) * 100,
spreadBps: (spread / mid) * 10000,
};
}
spreadStats(3997.62, 3998.16);
// mid ≈ 3997.89, spread ≈ 0.54, spreadPct ≈ 0.0135, spreadBps ≈ 1.35Оптовый и розничный спреды — разные вещи. Межбанковский спред по золоту составляет малую долю процента. Разница между ценой продажи и ценой выкупа однаунцевой монеты у дилера гораздо больше, потому что она покрывает также премию за продукт, затраты на дистрибуцию и маржу дилера.
Как дилеры превращают спот в котировку
Дилер слитков, ювелир или торговое приложение редко показывают оптовую котировку как есть. Большинство берут за основу текущий ориентир — среднюю цену или bid и ask — и применяют к каждой стороне собственные условия. Типичная структура выглядит так:
- Цена продажи (сколько платит клиент) = ориентир ask × масса × чистота + премия
- Цена выкупа (сколько получает клиент) = ориентир bid × масса × чистота − скидка
Премия покрывает изготовление (чеканка маленькой монеты в пересчёте на унцию обходится дороже, чем отливка большого слитка), страхование, доставку, платёжные издержки и маржу. Она может быть процентом сверх спота, фиксированной суммой за изделие или и тем и другим и зависит от продукта, размера, дилера и спроса.
Между ними часто стоят ещё два пересчёта. Цены для клиентов за пределами США пересчитываются из долларов в местную валюту, а это добавляет обменный курс и иногда собственный валютный спред. А товары, которые продаются на граммы или по каратам, например ювелирные изделия, пересчитываются из тройских унций и масштабируются по чистоте: золото 22K — это 22/24, около 91,67% чистоты, а 18K — 75%.
| Шаг (условно, монета 1 унция золота) | Сторона продажи | Сторона выкупа |
|---|---|---|
| Оптовый ориентир, USD за тройскую унцию | Ask 3 998,16 | Bid 3 997,62 |
| Корректировка дилера (только для примера) | Премия +3,0% | Скидка −1,0% |
| Цена для клиента, USD | ≈ 4 118,10 | ≈ 3 957,64 |
Премия и скидка в этой таблице придуманы для примера; реальные значения сильно различаются. Важна структура: спред, который видит клиент, — это оптовый спред плюс корректировки дилера с обеих сторон, причём оптовая часть обычно самая маленькая.
Запрос bid и ask в MetalAPI
По умолчанию MetalAPI возвращает среднюю цену. Для спотовых драгоценных металлов она рассчитывается по межбанковским потокам bid/ask. На тарифе Standard и выше можно запросить и обе стороны, добавив -BID и -ASK к символу в currencies:
curl "https://metalapi.com/api/v1/latest?currencies=XAU,XAU-BID,XAU-ASK" \
-H "Authorization: Bearer YOUR_API_KEY"Каждая запрошенная сторона появляется в rates в обоих направлениях — точно так же, как средняя цена. USDXAU-BID — это bid в долларах США за тройскую унцию, а XAU-BID — обратная величина:
{
"success": true,
"timestamp": 1792834892,
"date": "2026-10-24",
"base": "USD",
"rates": {
"XAU": 0.0002501319446,
"USDXAU": 3997.89,
"XAU-BID": 0.0002501488386,
"USDXAU-BID": 3997.62,
"XAU-ASK": 0.0002501150529,
"USDXAU-ASK": 3998.16
}
}Несколько деталей, которые стоит знать:
- Какие символы. Bid и ask доступны для символов, котировки которых берутся из межбанковских потоков: для драгоценных металлов и основных валют. Символы на основе фьючерсов, например медь или сырая нефть, публикуются одной ценой. Если для символа сторона недоступна, её нет в
rates, поэтому проверяйте наличие ключа, а не предполагайте его. - Один снимок. Bid, ask и средняя цена берутся из одного снимка, поэтому согласованы между собой. Они обновляются с интервалом вашего тарифа: каждые 10 минут на Standard, каждую минуту на Advanced и Pro, каждые 15 секунд на Ultra и Business и каждые 5 секунд на Enterprise.
- Другие валюты и единицы.
baseиunitработают как обычно, поэтомуbase=EUR&unit=gramвозвращает bid и ask золота в евро за грамм. Пересчёт в другую базовую валюту выполняется по среднему курсу этой валюты; если нужно учесть ещё и валютный спред, добавьте его сами. - Тарифы. На Free и Lite запрос с символами
-BIDили-ASKвозвращает ошибку106(plan_restriction). Как и при других ограничениях тарифа, такой запрос не тарифицируется. - История. Исторические эндпоинты (дневные цены закрытия, временные ряды, OHLC) возвращают средние цены. Bid и ask доступны только в последней котировке.
- ИИ-ассистенты. Те же суффиксы работают в аргументе
symbolsMCP-инструментаget_latest_prices, если вы используете MetalAPI из Claude или ChatGPT. Подробнее — в разделе ИИ и MCP.
Как правильно отображать котировки
Большинство ошибок с ценами на металлы происходит на уровне отображения, а не в данных. Краткий чек-лист:
- Указывайте, что это за цена. Подписывайте средние цены соответствующим образом («спот» или «средняя»). Если показываете обе стороны, подписывайте их с точки зрения клиента: клиент покупает по ask и продаёт по bid. На сайтах дилеров часто пишут «Мы покупаем» и «Мы продаём» — это точка зрения дилера; смешение двух подходов на одной странице сбивает людей с толку.
- Указывайте единицу и валюту. «3 997,89 $» само по себе неоднозначно. Пишите «USD за тройскую унцию» или «EUR за грамм». Будьте внимательны с унциями: в параметре
unitMetalAPI значенияounceиozозначают торговую унцию (avoirdupois, 28,35 г), а слитки оцениваются за тройскую унцию (troy_oz, значение по умолчанию). - Указывайте время. Показывайте время котировки из поля
timestampответа — это время данных, а не вашего запроса. На тарифах с отложенным обновлением сообщайте, как часто обновляется цена. - Учитывайте часы работы рынка. Спотовые металлы и основные валюты торгуются с 17:00 воскресенья до 17:00 пятницы по нью-йоркскому времени. В выходные MetalAPI продолжает возвращать цены закрытия пятницы, поэтому показывайте пометку «рынок закрыт», а не позволяйте застывшей цене выглядеть актуальной.
- Округляйте только для отображения. Сохраняйте полную точность в расчётах и округляйте в самом конце. Спред, рассчитанный по округлённым bid и ask, может отличаться от истинного на значительную долю собственной величины.
- Защищайтесь от перевёрнутой котировки. Если ваши собственные корректировки когда-нибудь дадут цену продажи ниже цены выкупа, считайте это ошибкой и прекращайте выставлять котировки, пока её не исправят.
- Ясно указывайте, что цены ориентировочные. Цены из API данных — это информация, а не предложение заключить сделку. Если вы показываете их клиентам, ясно дайте понять, что обязательной является цена, подтверждённая при оформлении заказа или в подтверждении сделки.
Собираем всё вместе: вот небольшой пример, который получает среднюю цену, bid и ask золота в евро за грамм и выводит их с подписями и меткой времени:
const res = await fetch(
"https://metalapi.com/api/v1/latest?base=EUR&unit=gram¤cies=XAU,XAU-BID,XAU-ASK",
{ headers: { Authorization: "Bearer " + process.env.METALAPI_KEY } },
);
const data = await res.json();
if (!data.success) throw new Error(data.error.code + ": " + data.error.info);
const r = data.rates;
const eur = new Intl.NumberFormat("en-GB", { style: "currency", currency: "EUR" });
const asOf = new Date(data.timestamp * 1000).toISOString();
console.log("Gold, EUR per gram, as of " + asOf);
console.log("Mid:", eur.format(r.EURXAU));
if (r["EURXAU-BID"] !== undefined && r["EURXAU-ASK"] !== undefined) {
console.log("You sell at (bid):", eur.format(r["EURXAU-BID"]));
console.log("You buy at (ask):", eur.format(r["EURXAU-ASK"]));
}Краткий справочник
| Термин | Определение |
|---|---|
| Спот | Цена с немедленной поставкой; на оптовом рынке — расчёты через два рабочих дня после сделки |
| Bid | Цена, по которой рынок купит у вас |
| Ask / offer | Цена, по которой рынок продаст вам |
| Mid (средняя) | (bid + ask) / 2; обычный ориентир и цена API по умолчанию |
| Спред | Ask минус bid; часто выражается в процентах от средней цены или в базисных пунктах |
| Базисный пункт | 0,01%, одна сотая процента |
| Премия | Наценка дилера сверх ориентира для физического продукта |
| Тройская унция | 31,1034768 грамма; единица, в которой оцениваются драгоценные металлы |
Чтобы попробовать самостоятельно, зарегистрируйтесь и получите бесплатный ключ для работы со средними ценами, а на странице тарифов посмотрите, какие тарифы включают bid и ask. В документации API перечислены все параметры, а руководство «Форматы данных и единицы измерения» подробнее описывает базовые валюты, единицы массы и обратные курсы.
Попробуйте на своих данных
Создайте бесплатный аккаунт и отправьте первый запрос меньше чем за две минуты. 100 запросов в месяц, без банковской карты.
Читайте также
Подключите Claude и ChatGPT к актуальным ценам на золото через MCP
Подключите Claude, ChatGPT, Cursor и VS Code к ценам на золото и металлы через MCP-сервер MetalAPI: OAuth или ключ API, инструменты, безопасность и квоты.
Цены на медь, алюминий, цинк и нефть через API: руководство для разработчиков
Цены на медь, алюминий, цинк, сталь, нефть и природный газ через API: рыночные единицы, нормализация, фьючерсы ближайшего месяца, пересчёт и примеры кода.
Как выбрать API цен на драгоценные металлы: 12 вопросов
Нейтральный чек-лист для выбора API цен на драгоценные металлы: источники, свежесть, история, единицы, bid/ask, лимиты, цены, безопасность, условия и MCP.