Что такое арбитраж в трейдинге и как на нем заработать
На финансовых рынках существуют разные способы получения прибыли от движения цен активов. Например, инвестируя в акции, участники рассчитывают на спекулятивный доход от покупки в текущий момент по одной цене и продажи в будущем по более высокой. Любой из таких способов построен на использовании неэффективности рынков. Опытные трейдеры прекрасно знают и широко используют такие подходы, которые позволяют реализовывать эти эффективности здесь и сейчас, получая быстрый доход с минимальными рисками. Именно к таким способам торговли относится арбитраж.
Понятие арбитража
Во французском языке слово «арбитраж» означает справедливое решение. Участники биржевого рынка обозначают им принцип торговли, использующий отклонение на конкретный момент времени цен активов от справедливых с последующим возвратом к ним. Работа с такой неэффективностью рынка сопряжена с минимальным риском, но при этом позволяет извлекать быструю прибыль.
Участники фондового рынка предпочитают две схемы арбитража:
Пространственный арбитраж: виды и принцип заработка
Пространственный арбитраж может работать как с ценами одного актива в разных обстоятельствах (например, на разных биржевых площадках), так и с котировками инструментов, для которых характерен высокий коэффициент корреляции. В зависимости от базы для арбитража различают несколько его разновидностей: каждый имеет собственный алгоритм извлечения прибыли.
Классический или межбиржевой арбитраж
Межбиржевой арбитраж является классическим вариантом этого способа торговли, хорошо понятным даже неопытному инвестору и, при определенных условиях, легко реализуемым. Он основан на принципе ценообразования фондового (и любого другого) рынка. Цену актива определяют спрос и предложение, которые в один и тот же момент времени на разных площадках могут различаться.
Пример стандартной арбитражной ситуации. Акции компании АВС на Санкт-Петербургской бирже в текущий момент времени стоят 12 долларов за штуку, а на Лондонской – 14. Такие расхождения встречаются на мировых площадках достаточно часто. Как только они возникают, за счет постоянной и высокопроизводительной связи между биржами начинается переток средств между ними. Растет предложение на площадке с более высокой ценой актива и спрос там, где котировки ниже. В результате цены в обоих точках уравновешиваются на справедливом уровне.
Если трейдер успеет до выравнивания купить бумаги на Санкт-Петербургской бирже по 12 руб. и продать на Лондонской по 14, он получит прибыль в 2 руб. на каждую акцию.
Именно так выглядит классический межбиржевой арбитраж:
Важное замечание! На биржевых площадках в разных странах ценные бумаги одной компании могут быть представлены в разных вариантах. Кроме того, различны и валюты котировок. Например, на MOEX котируются акции Сбербанка в рублях, а на LSE – его депозитарные расписки в долларах США. Соответственно, к комиссиям бирж и брокеров добавляются расходы на конвертацию.
Еще одна статья расходов – плата за поручения по пересылке акций между брокерскими счетами и депозитариями, которая может быть достаточно высокой и также должна быть учтена в расходах.
Таким образом, межбиржевой арбитраж оказывается прибыльным только в случае, если разность цен бумаги на разных площадках превышает суммарную величину расходов.
Другое не менее жесткое требование – возможность быстро совершать сделки на обеих биржах с минимальной задержкой. Это касается как интервала времени после обнаружения арбитражной ситуации, так и временного лага между совершением сделок. Оно обусловлено высокой производительностью современных каналов связи между биржами, за счет чего выравнивание котировок происходит быстро (как правило, по высоколиквидным активам завершается в несколько секунд). За это время трейдеру необходимо успеть открыть позиции на обеих площадках.
Достичь этого можно за счет:
Розничному инвестору выполнить эти условия достаточно сложно, поэтому межбиржевой арбитраж, как правило, остается полем деятельности крупных рыночных игроков.
У российского розничного инвестора есть и другая сложность – необходимость открытия брокерских счетов в отечественных и зарубежных компаниях. Альтернативой может стать работа с брокерами, предоставляющими выход на иностранные торговые площадки, но в этом случае для работы потребуется статус квалифицированного инвестора.
На заметку! Альтернативой может выступать единый счет, с которого ведутся торги сразу на нескольких площадках. Такие услуги предоставляют только некоторые зарубежные брокерские компании. Аналогичные услуги можно найти у некоторых лицензированных брокеров из России, например, у «Финама».
Внутриотраслевой арбитраж
Внутриотраслевой арбитраж – вариант торговли, использующий разницу цен двух активов на одной торговой площадке:
Арбитраж на акциях одной компании строится на предположении, что характер движения бумаг практически всегда совпадает. Однако за счет разницы спроса и предложения на бумаги различных типов, разность между котировками (при совпадении масштабов) может существенно изменяться. Такой спред расширяется или сужается, открывая возможности для заключения арбитражных сделок.
Так, например, трейдер входит в сделки, когда простые акции компании АВС стоят 122 руб. за штуку, а привилегированные («префы») – 118 руб. Продажа дорогих и покупка дешевых бумаг даст 4 руб. на сделку по одной акции. После того как разность уменьшится до 2 руб. (например, за счет роста цены «префов» до 119 руб. и снижения «обычки» до 121 руб.) можно совершить обратные сделки. В результате итоговый доход участника торгов составит 2 руб. на сделку по одной акции (без учета комиссий).
Аналогичным образом выглядит арбитраж на акциях разных компаний. Единственное условие – правильно выбрать активы. Они должны быть взаимно зависимыми, т. е. иметь коэффициент корреляции, близкий к 1. Поскольку такой коэффициент – величина не постоянная, а может изменяться с течением времени, арбитраж выглядит вполне перспективным.
При этом следует учитывать, что разница в ценах бумаг различных эмитентов зависит от состояния бизнеса каждой из компаний. В этом случае цена акций какой-либо компании может не следовать отраслевой тенденции. Такие бумаги для арбитража не подходят.
Важное замечание! Выбирать эмитентов, на бумагах которых возможен арбитраж, следует только после тщательного анализа бизнеса. Торговлю вести лучше, когда при прочих равных существенно расходятся мультипликаторы, такие как P/E и PEG. Это позволит выбрать пары активов, которые потенциально принесут максимальную прибыль.
Эквивалентный арбитраж
Под этим термином понимают совершение сделок на разнице цен между базовым активом и производным инструментом, например, акциями компании и фьючерсом на них. Базой для него является ценообразование контракта, предполагающее, что в его цену всегда заложена безрисковая доходность. При этом чем ближе момент экспирации контракта, тем меньше разница цен между фьючерсом и базовым активом.
В идеале сделка эквивалентного арбитража выглядит следующим образом:
В реальности у такой сделки есть несколько подводных камней:
На заметку! Из-за незначительной разницы цен фьючерс-спот результирующая доходность такой арбитражной сделки может быть невелика и с учетом комиссий уступать даже банковскому депозиту. Оценку обязательно проводить до заключения сделки.
Временной или календарный арбитраж
Наиболее ярким представителем календарного арбитража является использование разницы цен на фьючерсы одного и того же базового актива с разными сроками экспирации. Принцип вполне понятен:
В целом, практически все арбитражные сделки используют схожие принципы, поэтому и критерии выбора активов для них практически одинаковы. Основными выступают три требования:
Подпишитесь на нашу рассылку, и каждое утро в вашем почтовом ящике будет актуальная информация по всем рынкам.
арбитражные сделки
Арбитражные сделки — вид трейдинга, при котором трейдер пытается извлекать прибыль без рыночных рисков (угадал-не угадал).
Ключевая идея арбитража заключается в неэффективном ценообразовании того или иного инструмента или группы инструментов — то есть, рынок неправильно оценивает стоимость актива, что создает арбитражную возможность.
Распротранено заблуждение, что арбитраж подразумевает безрисковые сделки. На самом деле, арбитражная сделка — это всего лишь направленная позиция по спрэду (разнице цен между двумя активами), которая избавлена от рыночного риска, но не исключает остальных рисков[1].
В совершенном мире арбитражные сделки были бы невозможны. В мире реальном арбитражные возможности быстро исчезают из-за действий участников рынка, если таким действиям не препятствуют большие транзакционные издержки.
Риски арбитражных сделок
Арбитражеры часто имеют дело с «риском асфальтоукладчика» — они пытаются подобрать несколько монет с земли прямо перед надвигающимся асфальтоукладчиком.
Изменения в законодательстве, регулировании и налогообложении могут заставить арбитражера закрыть позицию с потерей денег. Например, внезапный запрет на короткие позиции может вынудить закрыть шорт.
Транзакционные издержки могут составлять существенную долю арбитражной прибыли. В этом случае, большое конкурентное преимущество получают те фонды, которые работают с меньшими комиссиями:
Обычно, транзакционные издержки меньше у наиболее крупных и активных игроков, которым брокеры снижают комиссию.
Виды арбитражных сделок:
Парный арбитраж — попыка торговать парой похожих инструментов одного сектора — например, акции Лукойла и Роснефти. Основная идея — акции ходят вместе. Если разница между ценами акции слишком большая, разницу можно продавать.
Географический арбитраж — игра на разнице цен на разных рынках. Например, разница между ценами на Московской бирже и ADR в Лондоне. Риском такого арбитража являются транзакционные издержки и скорость исполнения приказов на родном рынке и американской бирже.
Арбитраж спот-фьючерс (эквивалентный арбитраж) — игра на расхождении между ценами интрумента на спот-рынке и ценой фьючерса на этот инструмент. Например, торговля казначейскими облигациями США и фьючерсами на них.
Арбитраж между фьючерсом на фондовый индекс и корзиной акций. Например, если цена фьючерса на индекс существенно превыщает значение самого фондового индекса, имеет смысл продать фьючерсы и купить на эту же сумму корзину акций, составляющих фондовый индекс.
Арбитраж нефти разных сортов. Основная идея заключается в том, что если один сорт нефти слишком сильно подорожал относительно второго, то эта ситуация будет временной, и можно продавать дорогой сорт нефти и покупать дешевый.
Опционный арбитраж — принцип паритета стоимости опционов Пут и Колл.
Рисковый арбитраж — покупка перепроданных дефолтных облигаций или акций компаний с высоким риском банкротства.
Арбитраж между новыми и устаревающими 30-летними облигациями Treasuries. 30-летние облигации, выпущенные минфином вчера всегда будут ликвиднее и чуть дороже, чем выпущенные несколько месяцев назад такие же облигации, рынок которых стал неликвидным. Неликвидность создает арбитражную возможность
Источники:
[1] Filippo Stefanini — Investment Strategies of Hedge Funds
Арбитраж
Арбитраж — одновременная покупка и продажа одинаковых или похожих друг на друга инструментов в надежде на то что их цены сойдутся.
Самый просто вид арбитража: это покупка базового актива(к примеру доллар) и продажа фьючерса(si)
К примеру продажа SI по 75000 и покупка 1000 долларов по 74 р. К истечению фьючерсного контракта цены фьючерса и доллара сойдутся, мы получим прибыль ровно в 1000 рублей 75000-74000. Причем нам не важно где будет цена доллара. Это некий вариант депозита в банке. Назовем такой вид арбитража — синтетическая облигация.
Таким арбитражем занимаются все кому не лень, по этому рынок очень конкурентный — роботы на базе FPGA окуппировали стаканы SI и бакса, фьючерсов на акции и сами акции. Но примерно раз в пару месяцев, бывают хорошие движения и роботы входят в позиции тратя все лимиты и для обычной публики — открывается окно возможностей, когда роботы уже потратили все свои лимиты, а возможность получить пару — тройку безрисковых ставок осталась.
Второй вид арбитража — статистический. Торгуем два похожих инструмента — к примеру акции банковского сектора(ВТБ против Газпрома) или Роснефти против покупки лукойла в надежде что отношение между этими активами стабильно в долгосрочной перспективе,
Российская биржа, раскручивает фьючерсы на металлы. Давайте посмотрим возможность получить безрисковую прибыль.Так как большой истории торгов еще нет, я заменил российский фьючерс на медь, американской акцией CPER(строго говоря это не акция, а фонд, который держит в своих активах фьючерсы на медь), Второй ногой будет подобный же фонд от Barklyse Bank JJCTF). Ниже на графике цена акций JJCTF поделена на цену акций CPER)-так называемая торговля отношением. На графике ниже присутствуют выбросы цен. Они то нас и интересуют. Покупаем все что ниже 1,65-продаем JJCTF и покупаем CPER и продаем все что выше 1.80-покупаем JJCTF и продаем CPER.
Вторая стратегия более реалистична для обычного спекулянта, не обладающего обширными познаниями в роботостроении :
Упрощеный вариант, этой стратегии предусматривает элементарный отсмотр глазами резких движений в течении дня на западных рынках и покупка продажа фьючерса или акций норникеля с быстрым выходом из позиции.
Перед этим он разгромил Карлосна. Но коллеги, посмотрите скрины, которые там размещены:
Первая стратегия:
дает профита за 11 лет аж 114%
Максимальная просадка 24,5%(ну это еще эквити не смотрели)
Вторая стратегия :
дает 130% профита за 7 лет.
Сравните с ценами акции Норникеля — производителя цветных металлов. Провел две прямые линии от того периода, где автор начинает показывать свою страту: Купи и держи дает до 1000%. Просто купи акцию и все. И получи в доходность в 10 раз больше!

Как торговать выбирать вам. Но когда читаете посты на смартлабе, лучше не проверять на истории. Ведь господин Эймонт предусмотрительно не включил в свой пост график актива, на котором он построил стратегию.
Коллеги стоит относиться аккуратнее к людям, которые читеря(засовывая абы какую стратегию, в пост который был без нее) подставляют вас.
Как устроен арбитражный трейдинг?
В интернете множество способов спекулятивного трейдинга, который может заключаться на скальпинге, высокочастотном алгоритме или арбитраже. Именно с последней методикой мало кто знаком и недавно мне задали вопрос по этой теме на последнем вебинаре. Ответом на вопрос «как устроен арбитражный трейдинг» я бы хотел поделиться в этой статье.
Спекулятивный трейдинг с каждым годом завлекает все больше и больше новых игроков, ведь в краткосрочной перспективе спекуляции способны продемонстрировать больше потенциал доходности, нежели инвестиционные сделки. Все хотят легких или быстрых денег и забывают о простой логике: каждый вид спекулятивного трейдинга заключается в правильном распределении рисков и грамотном управлении капиталом. Однако такая комбинация получается далеко не у каждого трейдера. Именно из-за таких хаотичных решений и слепой веры формируется статистика, при которой практически 90% игроков рынка теряют свои средства.
Если же выбирать спекуляции как источник заработка с финансового рынка, то я настоятельно рекомендую использовать вспомогательные алгоритмы, системы, сигналы, консультации и так далее. Благо мы живём с вами в эпоху информационных технологий, в которой можно автоматизировать каждый процесс и трейдинг в том числе. Если рассматривать алгоритмические стратегии для спекулятивного трейдинга, то самым сложным и полностью неизведанным является именно арбитражный трейдинг.
Арбитраж — это вид спекулятивного трейдинга, который основан на парном анализе одного и того же финансового актива, но на разных брокерских или биржевых площадках. Проще говоря, арбитраж позволяет анализировать один и тот же актив на наличие курсовых расхождений или задержек, с целью открытия краткосрочной сделки. Сама логика работы уже давно не нова, однако на валютном рынке начала использоваться совсем недавно.
Чтобы более подробно понять логику работы, предлагаю рассмотреть конкретный пример:
Стоимость валютной пары EURUSD в одного брокера составляет 1.1230, а во второго 1.1220. То есть существует курсовое расхождение в моменте размера 10 пунктов, при том факте, что нормативное значение равняется 5 пунктам. Торговый робот или вспомогательный алгоритм видит это расхождение и совершает две сделки: на покупку по цене 1.1220 (на торговом счету в первого брокера) и продажу по цене 1.1230 (на торговом счету второго брокера). Когда же цена достигнет нормативного расхождения (5 пунктов), то робот одновременно закроет две сделки. Пускай цена составила 1.1267 и 1.1262 соответственно. Таким образом, трейдер получит убыток на первом счету размером 37 пунктов, а также прибыль размера 42 пункта на счету второго брокера. Общий финансовый результат равняется 5 пунктов чистой прибыли.
Идентично это может работать и на рынке криптовалют.
Такой вид спекулятивного трейдинга имеет ряд преимуществ:
На рынке форекс существует множество спекулятивных краткосрочных алгоритмов. Однако далеко не каждая подобная торговая система способна демонстрировать стабильный положительный результат. Множество «кухонных» брокеров попросту запрещают данный вид торговли и прописывают это в своих договорах. Поэтому будьте бдительны!
Я хочу отметить тот факт, что считаю спекуляции основой движения рынка и что на них делаются огромные деньги. Но те трейдеры, которые только знакомятся с рынком, не способны правильно проанализировать ситуацию и войти в рынок. И если вы только знакомитесь с рынком и не понимаете базовых принципов его движения, то с вероятностью 90% у вас будет убыток (на что опять-таки указывает статистика).
Надеюсь этот сложный процесс и алгоритм мне удалось пояснить просто и понятно. Но если у вас возник все же вопрос – пишите мне в комментарии!
Арбитражная торговля (Алгоритм Беллмана — Форда)
Торговля на бирже обычно ассоциируется с рисками. Это совершенно верно для большинства торговых стратегий. Успешность торговли в этих случаях определяется исключительно способностью верно оценивать риски и управлять ими. Но не все торговые стратегии таковы. Существуют безрисковые стратегии, к которым относится, в частности, арбитраж. В этой статье будет рассказано, что такое арбитраж, и как реализовать его с использованием такого классического алгоритма на графе, как алгоритм Беллмана — Форда.
Что такое арбитраж
Арбитраж — это несколько логически связанных сделок, направленных на извлечение прибыли из разницы в ценах на одинаковые или связанные активы в одно и то же время на разных рынках (пространственный арбитраж), либо на одном и том же рынке в разные моменты времени (временной арбитраж).
В качестве простого примера рассмотрим пространственный арбитраж. В Нью-Йорке и Лондоне можно заключить сделки по покупке долларов за евро и евро за доллары. В Нью-Йорке это можно делать по курсу 4 доллара за 3 евро, а в Лондоне — по курсу 5 долларов за 3 евро. Такая разница курсов открывает возможность для пространственного арбитража.
Имея 4 доллара, в Нью-Йорке на них можно купить 3 евро. После этого в Лондоне купить за эти 3 евро 5 долларов. Как можно заметить, такая несложная последовательность сделок приносит 1 доллар прибыли на каждые вложенные 4 доллара. Соответственно, если изначально имеется 4 миллиона долларов, то и прибыль будет уже в миллион.
Когда обменные курсы (спред не рассматриваем) для одной и той же валютной пары отличаются, то последовательность сделок, необходимых для реализации арбитражной стратегии, очень простая. В случае, если курс для одной валютной пары фиксирован, но торгуются несколько валютных пар параллельно, арбитраж также возможен, но последовательность сделок уже будет нетривиальной. К примеру, можно купить 4 евро за 5 долларов, 3 фунта за 4 евро, а потом 6 долларов за 3 фунта. Прибыль от такой последовательности сделок составит 1 доллар на каждые 5 вложенных долларов.
На бирже могут торговаться сотни валютных пар, а обменные курсы постоянно меняются. Понять, какая последовательность сделок принесёт прибыль, без алгоритмического решения в этом случае уже невозможно.
Переход к алгоритмической задаче
Представим потенциальные сделки обмена валюты в алгоритмическом виде, а именно в виде графа. Вершины в этом графе представляют валюты, а ребра являются возможными сделками. Длина же ребра соответствует обменному курсу, по которому данную сделку можно заключить.
Далее встает вопрос, как в таком графе найти последовательность сделок, которая принесет прибыль. Очевидно, что так как в начале последовательности и в её конце должна быть одна и та же валюта, то последовательность должна соответствовать циклу в заданном графе. Далее необходимо определиться с тем, как вычисляется обменный курс между двумя валютами, если они обмениваются не напрямую, а через некую третью валюту (или произвольное количество промежуточных операций). Тут всё тоже достаточно просто. Такой обменный курс будет вычисляться как произведение обменных курсов промежуточных сделок. Прибыльной последовательность сделок становится, если это произведение принимает значение меньше единицы. Другими словами, если единицу валюты можно купить меньше, чем за единицу этой же самой валюты.
Классические алгоритмы на графах плохо подходят для работы с произведением длин ребер. Такие алгоритмы, в основном, заточены на нахождение пути, который определяется как сумма этих длин. Однако для обхода этого ограничения существует математический способ перейти от произведения к сумме. Таким способом является логарифмирование. Если под логарифмом оказывается произведение, то такой логарифм может быть преобразован в сумму логарифмов. В правой же части этого уравнения желаемым является число меньшее единицы, а значит, логарифм этого числа должен быть меньше нуля.
Такой простой математический трюк позволяет перейти от поиска цикла, произведение длин ребер которого меньше единицы, к поиску цикла, сумма длин ребер которого меньше нуля. Такая задача уже выглядит более решаемой классическими графовыми алгоритмами, а точнее алгоритмом Беллмана — Форда.
Алгоритм Беллмана — Форда
Алгоритм Беллмана — Форда обычно используется для нахождения расстояния от заданной вершины до всех остальных вершин некоторого графа, однако его модификация позволяет найти и циклы отрицательной длины.
Базовой операцией этого алгоритма является релаксация ребер. Суть данной операции следующая. Допустим, что имеется ребро , а еще известны вычисленные ранее предварительные значения расстояний до вершин
и
. Для выполнения релаксации ребра требуется вычислить, какое получилось бы расстояние до вершины
, если бы путь проходил через вершину
и ребро
. Это расстояние вычисляется как сумма расстояния до вершины
и длины ребра
. Далее, если это расстояние оказывается меньше текущего предварительного расстояния до
, то это самое расстоние до
переписывается и принимает новое, только что вычисленное, значение.
Остальной алгоритм тоже несложен. Необходимо раз (
— это количество вершин графа) обойти список ребер, при каждом обходе применяя операцию релаксации. Сложность алгоритма при этом получается
(где
— количество вершин, а
— количество ребер). Для графа без отрицательных циклов дальнейшие релаксации ребер не приведут к изменению расстояний до вершин. В то же время, для графа, содержащего отрицательный цикл, релаксации будут уменьшать расстояние до вершин и после
обходов. Это свойство может быть использовано использовано для нахождения искомого цикла.
Тем, кому привычнее разбираться с кодом, должна помочь следующая небольшая реализация описанного выше алгоритма на Kotlin’е.
Разберем пример с небольшим графом, в состав которого входит цикл отрицательной длины. Для работы алгоритма необходимо для каждой вершины поддерживать текущее известное расстояние до неё, а так же ссылку на её предыдущую вершину. Ссылка на предыдущая вершина в данном случае определяется успешной релаксацией ребра. Если операция релаксации прошла успешно, и дистанция до вершины была обновлена, то ссылка на предыдущую вершина этой вершины также обновляется и принимает значение вершины-источника заданного ребра.
Итак, для начала необходимо инициализировать вершины, установив дистанцию до всех вершин кроме начальной равной бесконечности. Для начальной вершины устанавливается дистанция равная нулю.
Далее следует первый обход всех ребер и выполняются их релаксации. Практически все релаксации не дают никакого результата, кроме релаксации ребра . Релаксация данного ребра позволяет обновить расстояние до
.
Далее следует второй обход всех рёбер графа и соответствующие релаксации. На этот раз результат дают релаксации ребер , а также
. Обновляются расстояния до вершин
и
. Тут следует заметить, что результат зависит от того, в каком порядке происходит обход ребер.
При третьем обходе ребер удается успешно релаксировать уже три ребра, а именно ребра ,
,
. При этом, при релаксации ребер
и
обновляются уже записанные ранее расстояния до
и
, а так же соответствующие ссылки на предыдущие вершины.
При четвертом обходе успешно заканчиваются операции релаксации ребер и
. При этом опять обновляются уже записанные значения расстояний до вершин
и
, как и соответствующие ссылки на предыдущие вершины.
Пятый обход является последним. При этом обходе релаксируются ребра ,
,
. Тут можно заметить, что наличие цикла отрицательной длины уже вносит определенные корректировки в значения расстояний до вершин.
После этого обхода, если бы граф не содержал цикла отрицательной длины, алгоритм был бы закончен, так как релаксация любого ребра уже не внесла бы никаких изменений. Однако для данного графа из-за наличия цикла отрицательной длины, все еще можно найти ребро, релаксация которого обновит значения расстояния до одной из вершин.
Ребро, релаксация которого обновляет расстояние до вершины, найдено. Это подтверждает наличие цикла отрицательной длины. Теперь необходимо найти сам этот цикл. Важно, что вершина, расстояние до которой сейчас обновилось, может быть как внутри цикла, так и вне него. В примере это вершина и она вне цикла. Далее необходимо обратиться к ссылкам на предыдущие вершины, которые аккуратно обновлялись на всех шагах алгоритма. Чтобы гарантированно попасть в цикл, необходимо отступить назад на
вершин, пользуясь этими ссылками.
В данном примере переходы будут следующие: . Таким образом находится вершина
, которая гарантированно лежит в цикле отрицательной длины.
Далее дело техники. Чтобы вернуть искомый цикл, нужно опять итерироваться по ссылкам на предыдущие вершины, пока опять не встретится вершина . Это будет значить, что цикл замкнулся. Остается только изменить порядок на обратный, так как при итерациях по ссылкам на предыдущие вершины порядок был инвертирован.
В приведенном алгоритме предполагается наличие некоторой изначальной вершины, от которой рассчитываются расстояния. Наличие такой вершины не является обязательным для работы алгоритма, а введена она в большей степени для соответствия изначальному алгоритму Беллмана — Форда. Если же предметом интереса является цикл отрицательной длины, то можно считать, что все вершины заданного графа являются начальными. Другими словами, что дистанция до всех вершин изначально равна нулю.





