Автоматизация анализа купонных облигаций

Автоматизация анализа купонных облигаций 

И.Я. Лукасевич

Для анализа облигаций с фиксированным купоном в ППП EXCEL реализованы 15 функций (табл. 2.4). Все функции этой группы предварительной установки специального дополнения – "Пакет анализа" (см. приложение 1). 

Таблица 2.4 

Функции для анализа облигаций с фиксированным купоном 

Наименование функции

Формат функции

Англоязычная версия

Русифицированная 

версия

 

COUPDAYBS

ДАТАКУПОНДО

ДАТАКУПОНДО(дата_согл; дата_вступл_в_силу; частота; [базис])

COUPNCD

ДАТАКУПОНПОСЛЕ

ДАТАКУПОНПОСЛЕ (дата_согл; 

дата_вступл_в_силу; частота; [базис])

COUPDAYSBS

ДНЕЙКУПОНДО

ДНЕЙКУПОНДО(дата_согл; дата_вступл_в_силу; частота; [базис])

COUPDAYSNC

ДНЕЙКУПОНПОСЛЕ

ДНЕЙКУПОНПОСЛЕ (дата_согл; дата_вступл_в_силу; частота; [базис])

COUPDAYS

ДНЕЙКУПОН

ДНЕЙКУПОН(дата_согл; дата_вступл_в_силу; частота; [базис])

COUPNUM

ЧИСЛКУПОН

ЧИСЛКУПОН(дата_согл; дата_вступл_в_силу; частота; [базис])

DURATION

ДЛИТ

ДЛИТ(дата_согл; дата_вступл_в_силу; ставка; доход; частота; [базис])

MDURATION

МДЛИТ

МДЛИТ(дата_согл; дата_вступл_в_силу; ставка; доход; частота; [базис])

PRICE

ЦЕНА

ЦЕНА(дата_согл; дата_вступл_в_силу; ставка; доход; погашение; частота; [базис])

ACCRINT

НАКОПДОХОД

НАКОПДОХОД(дата_вып; дата_след_ куп; дата_согл; ставка; номинал; частота; [базис])

YIELD

ДОХОД

ДОХОД(дата_согл; дата_вступл_в_силу; ставка; цена; погашение; частота; [базис])

ODDFYIELD

ДОХОДПЕРВНЕРЕГ

ДОХОДПЕРВНЕРЕГ(дата_согл; дата_ пог; дата_вып; дата_перв_ куп; ставка; цена; погашение; ÷àñòîòà;[базис])

ODDLYIELD

ДОХОДПОСЛНЕРЕГ

ДОХОДПОСЛНЕРЕГ(дата_согл; дата_ пог; дата_вып; дата_посл_ куп; ставка; цена; погашение; ÷àñòîòà; [базис])

ODDFPRICE

ЦЕНАПЕРВНЕРЕГ

ЦЕНАПЕРВНЕРЕГ(дата_согл; дата_ пог; дата_вып; дата_перв_куп; ставка; доход; погашение; ÷àñòîòà; [базис])

ODDLPRICE

ЦЕНАПОСЛНЕРЕГ

ЦЕНАПОСЛНЕРЕГ(дата_согл; дата_ пог; дата_вып; дата_посл_куп; ставка; доход; погашение; ÷àñòîòà; [базис])

Рассмотрим технологию применения этих функций на реальном примере из практики российского рынка ОВВЗ. 

Пример 2.9 

Рассматривается возможность приобретения облигаций внутреннего валютного займа Минфина России седьмой серии. Произвести расчет эффективности операции на 18 марта 1997 года исходя из следующих данных . 

Дата выпуска ОВВЗ – 14.05.1996 г. Дата погашения – 14.05.2011 г. Купонная ставка – 3%.Число выплат – 1 раз в год. Средняя курсовая цена на дату операции – 37,34. Требуемая норма доходности – 12% годовых. 

На рис. 2.8 приведена исходная ЭТ для решения этого примера с использованием функций рассматриваемой группы. 



Рис. 2.8. Исходная ЭТ для решения примера 2.9 

В приведенной ЭТ исходные (неизменяемые) характеристики займа содержатся в блоке ячеек В2.В8. Значения изменяемых переменных задачи вводятся в ячейки Е2.Е4. Вычисляемые с помощью соответствующих функций ППП EXCEL параметры ОВВЗ, наименования которых содержатся в блоке А10.А22, будут помещаться по мере выполнения расчетов в ячейки блока В10.В22. Руководствуясь рис. 2.8 подготовьте исходную таблицу и заполните ее исходными данными. Приступаем к проведению анализа и рассмотрению функций. 

Функции для определения характеристик купонов 

Первые 6 функций (табл. 2.4) предназначены для определения различных технических характеристик купонов облигаций и имеют одинаковый набор аргументов : 

дата_согл – дата приобретения облигаций (дата сделки); 

дата_вступл_в_силу – дата погашения облигации; 

частота – количество купонных выплат в году (1, 2, 4); 

базис – временная база (необязательный аргумент). 

В нашем примере эти аргументы заданы в ячейках E2, B4 и B8 соответственно (рис. 2.8). 

Функция ДАТАКУПОНДО() вычисляет дату предыдущей (т.е. до момента приобретения облигации) выплаты купона. С учетом введенных исходных данных функция, заданная в ячейке В10, имеет вид: 

=ДАТАКУПОНДО(E2; B4; B8) (Результат: 14.05.96). 

И первый же блин вышел комом! В данном случае можно считать, что функция выдала ошибочный результат, поскольку вычисленное значение является датой выпуска облигации в обращение и никаких выплат в тот день быть не могло. Очевидно, что для более корректной реализации этой функции разработчикам следовало бы предусмотреть задание еще одного аргумента – даты выпуска. Однако, утешив свое самолюбие, признаем, что если бы такая выплата производилась, по условиям займа она действительно должна была бы состояться именно 14.05.96. 

Функция ДАТАКУПОНПОСЛЕ() вычисляет дату следующей (после приобретения) выплаты купона. Формат функции в ячейке В11: 

=ДАТАКУПОНПОСЛЕ(E2; B4; B8) (Результат: 14.05.97). 

Нетрудно заметить, что полученная дата совпадает со сроком выплаты первого купона, как и следует из условий примера. 

Функция ДНЕЙКУПОНДО() вычисляет количество дней, прошедших с момента начала периода купона до момента приобретения облигации. В нашем примере эта функция задана в ячейке В12: 

=ДНЕЙКУПОНДО(E2; B4; B8) (Результат: 304). 

Таким образом, с момента начала периода купона до даты приобретения облигации (18 марта 1997 года) прошло 304 дня. 

Функция ДНЕЙКУПОН() вычисляет количество дней в периоде купона. По условиям выпуска облигаций валютного займа Минфина России купоны выплачиваются 1 раз в году. Таким образом, число дней в периоде купона должно быть равным 360 (финансовый год), что подтверждается результатом применения функции (ячейка В13): 

=ДНЕЙКУПОН(E2; B4; B8) (Результат: 360). 

В случае необходимости проведения расчетов с точным числом дней в году достаточно просто указать необязательный аргумент "базис", равным 1 или 3: 

=ДНЕЙКУПОН(E2; B4; B8; 3) (Результат: 365). 

Следует отметить, что функция правильно работает и в случае високосного года. 

Функция ДНЕЙКУПОНПОСЛЕ() вычисляет количество дней, оставшихся до даты ближайшей выплаты купона (с момента приобретения облигации). В нашем примере эта функция задана в ячейке В14: 

=ДНЕЙКУПОНПОСЛЕ(E2; B4; B8) (Результат: 56). 

Таким образом, периодический доход по облигации будет получен через 56 дней после ее приобретения. 

Функция ЧИСЛКУПОН() вычисляет количество оставшихся выплат (купонов), с момента приобретения облигации до срока погашения. Функция задана в ячейке В15: 

=ЧИСЛКУПОН(E2; B4; B8) (Результат: 15). 

Согласно полученному результату, с момента приобретения облигации и до срока ее погашения будет произведено 15 выплат, что полностью соответствует условиям займа. 

Функции для определения дюрации 

Следующие две функции (табл. 2.4) позволяют определить одну из важнейших характеристик облигаций – дюрацию. 

Функция ДЛИТ() вычисляет дюрацию D и имеет два дополнительных аргумента: 

ставка – купонная процентная ставка (ячейка В6); 

доход – норма доходности (ячейка Е4). 

Заданная в ячейке В17, функция с учетом размещения исходных данных имеет вид: 

=ДЛИТ(E2; B4; B6; E4; B8) (Результат: 9,39). 

Таким образом, средневзвешенная продолжительность платежей по 15-летней ОВВЗ седьмой серии со сроком обращения составит 9 лет и около 140 дней (0,39 ´ 360). 

Функция МДЛИТ( ) реализует модифицированную формулу для определения дюрации MD и имеет аналогичный формат (ячейка В18): 

=МДЛИТ(E2; B4; B6; E4; B8) (Результат: 8,39). 

Полученный результат на целый год меньше. Напомним, что для бескупонных облигаций дюрация всегда равна сроку погашения. 

Следующие функции рассматриваемой группы позволяют определить наиболее широко используемые при анализе характеристики купонных облигаций – цену P и доходность к погашению YTM. Они требуют задания шести обязательных аргументов. Поэтому в дополнение к уже встречавшимся нам аргументам прибавляются: 

погашение – стоимость 100 единиц номинала при погашении (ячейка В7); 

доход – требуемая норма доходности (ячейка Е4); 

ставка – годовая ставка купона (ячейка В6) 

цена – цена, уплаченная за 100 единиц номинала (ячейка Е3). 

Функции для определения курсовой цены и доходности облигации 

Функция ЦЕНА() позволяет определить современную стоимость 100 единиц номинала облигации (т.е. курс), исходя из требуемой нормы доходности на дату ее покупки. В нашем примере она задана в ячейке В19 и имеет следующий формат: 

=ЦЕНА(E2; B4; B6; E4; В7; B8) (Результат: 40,06). 

Полученная величина 40,06 представляет собой цену облигации, которая обеспечивает нам требуемую норму доходности – 12% (ячейка Е3). Поскольку ее величина меньше средней цены покупки в 34,75 (ячейка Е2), мы также получим дополнительную прибыль приблизительно в 5,30 на каждые 100 единиц номинала при погашении облигации. 

Функция ДОХОД() вычисляет доходность облигации к погашению (yield to maturity – YTM). Данный показатель присутствует практически во всех финансовых сводках, публикуемых в открытой печати и специальных аналитических обзорах. В рассматриваемом примере функция для его вычисления задана в ячейке В20: 

=ДОХОД(E2; B4; B6; E3; B7; B8) (Результат: 13,63%). 

Полученный результат несколько выше требуемой нормы доходности и в целом подтверждает прибыльность данной операции. 

Ячейка В21 содержит формулу для расчета текущей (на момент совершения сделки) доходности Y – отношение купонной ставки (ячейка В6) к цене приобретения облигации (ячейка Е3): 

=В6/Е3 (Результат: 8,63%). 

Таким образом, текущая доходность операции составляет 8,63%, что значительно выше купонной ставки, однако ниже доходности к погашению. 

Последним показателем, рассчитанным в электронной таблице (ячейка В22), является величина накопленного купонного дохода НКД на дату сделки. Для его вычисления используется функция НАКОПДОХОД( ): 

=НАКОПДОХОД(B3;B11;E2;B6;B7;B8) (Результат: 2,53). 

Отметим, что в качестве одного из аргументов здесь используется дата ближайшей (после заключения сделки) выплаты купона (ячейка В11). Данную функцию также удобно использовать при определении суммы дохода, подлежащей налогообложению, которая представляет собой разность между накопленным процентом на момент погашения или перепродажи ценной бумаги и накопленным процентом на момент ее приобретения. 

Последние 4 функции этой группы – ДОХОДПЕРВНЕРЕГ(), ДОХОДПОСЛНЕРЕГ(), ЦЕНАПЕРВНЕРЕГ() и ЦЕНАПОСЛНЕРЕГ(), применяются для вычисления цены и доходности облигации в тех случаях, когда период выплаты первого или последнего купона отличается от остальных. При этом в списке аргументов должна быть указана дата выплаты первого (последнего) купона. В остальном, выполняемые ими действия аналогичны рассмотренным выше. 

Полученная в результате таблица должна иметь вид рис. 2.9. 



Рис. 2.9. Результаты анализа ОВВЗ седьмой серии 

Очистите таблицу от исходных данных (блоки ячеек В2.В8 и Е2.Е4) и сохраните на магнитном диске в виде шаблона BONDCOUP.XLT. 

Осуществите проверку работы шаблона на следующем примере. 

Пример 2.10 

Рассматривается возможность приобретения облигаций внутреннего валютного займа Минфина России третьей серии. Произвести расчет эффективности операции на 18 марта 1997 года исходя из следующих данных . 

Дата выпуска ОВВЗ – 14/05/1993 г. Дата погашения – 14/05/1999 г. Купонная ставка – 3%.Число выплат – 1 раз в год. Средняя курсовая цена на дату операции – 85,83. Требуемая норма доходности – 10% годовых. 

Полученная в результате таблица должна иметь вид рис. 2.10. 



Рис. 2.10. Решения примера 2.10 

Большинство из рассмотренных функций можно использовать и для анализа облигаций с плавающей ставкой купона (ОГСЗ, ОФЗ и др.). Однако следует отметить, что результаты расчета доходности к погашению будут справедливы только для текущей ставки купона (т.е. для периода между двумя купонными выплатами). 

При окончательном определении величины полученного дохода, т.е. ретроспективном анализе операций с ОГСЗ, ОФЗ и ряда муниципальных бумаг с плавающей ставкой доходности, удобно пользоваться функцией БЗРАСПИС(). Ее можно применять и для приблизительной оценки будущих доходов, предположив, например, что купонная ставка будет изменяться с фиксированным шагом. Альтернативным вариантом является определение доходности YTM по значениям полученных платежей с помощью функции ЧИСТВНДОХ(). 

Следует отметить, что рассмотренные в данном параграфе фундаментальные зависимости справедливы для любых ценных бумаг, отражающих отношения займа.