24 июня, суббота 23:54
Курсы ЦБ: USD 59.66 EUR 66.68
Bankir.Ru

Объявление

Свернуть

На Bankir.ru начался цикл публикаций, созданных по следам обсуждений на форуме

Показать больше
Показать меньше

Расчет показателя и график доходности по облигациям

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Расчет показателя и график доходности по облигациям

    как вы считаете есть ли достаточно простой способ расчета доходности без использования математических методов, но при этом чтобы показатель доходности был по значению не сильно отличным от расчета численными методами ...
    можете дать какие-нибудь ссылки ?

    спасибо !

    ------------------
    С уважением, Олег.

  • #2
    Да, блин ... Посчитать, НО БЕЗ математики . А кто б научил читать без знания букв ....
    Владимир С.

    Комментарий


    • #3
      надеюсь данный subj. не противоречит правилам форума ?
      я не спрашивал можно ли посчитать без математики
      Просто сейчас мне поставили задачу расчета доходности к погашению по формуле, где само значение доходности - составляющее ряда CashFlow ...
      типа P + NKD = сумма ( CFi / ((1 + y) в степени t/365))
      P - цена тек. момент, NKD - НКД
      CF - i-ый поток платежей по купонам и погашению,
      t - время до i-го потока потока

      а вот y и есть доходность - посчитать ее не совсем тривиально ...

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

      что вы думаете - надо использовать существующую формулу или ... ?

      Спасибо.

      Комментарий


      • #4
        Мдаааа... Доходность есть отношение полученного к затраченному. Дальше?
        Per aspera ad astrum

        Комментарий


        • #5
          Dr_Head
          Так хорошо бескупонные бумаги считать, с купонными все-таки приходится возиться с той формулой, что Spartak написал, чтобы правильно посчитать NPV купонов.

          Так что единственный метод - из имеющейся формулы расчета цены облигаций вывести формулу расчета доходности, что не просто, но возможно ;-)
          Или использовать для вычислений Excel.

          Комментарий


          • #6
            to all: Спасибо, я убедился в том, что другого корректного способа расчета данного показателя нет )

            to Perchilla :
            ты говоришь, что вывести формулу для расчета доходности возможно ? )
            может я конечно слишком давно учился в своем техническом ВУЗ'е, но у меня это не получилось ...
            может научишь ?

            to Voila: а в этом файле с макросом, который ЦБ столь любезно раздавал случайно не было и базы по корпоративкам ?
            а может они и сейчас раздают его ... надо к ним на сайт заглянуть ...

            Комментарий


            • #7
              Spаrtak
              а почему же невозможно ;-))) если у тебя есть формула расчета цены при известных купонах, сумме погашения и доходности к погашению, то посчитать обратную функцию доходности к погашению при известных цене, купонах и сроке погашения не проблема.
              Формула расчета цены - сумма отдисконтированных купонных платежей и суммы погашения. Так что приводишь все к общему знаеменателю и выражаешь оттуда доходность. Повозиться конечно придется, но ничего невозможного не вижу ;-))))

              Комментарий


              • #8
                Во-во !!! В XL-ке методом подбора параметров !!!

                Комментарий


                • #9
                  Считать доходность купонных бумаг все же лучше по официальной формуле. Программку или макрос в екселе самому написать очень просто. Для себя седлал сам, но давно не пользовался и базы по бумагам и купонам нет. ЦБ, в свое время, раздавал дилерам екселевский файл с макросом для расчета.

                  Комментарий


                  • #10
                    to Spаrtak
                    Посмотрите здесь: http://www.cbonds.ru/catalogue_inv/calc.shtml
                    возможно пригодится

                    Комментарий


                    • #11
                      to exbankir:
                      Спасибо за ссылку, но на текущий момент она мне уже не столь актуальна )
                      просто я сам программер и моя задача была реализовать расчет доходности средствами SQL Server'a ) поэтому Excel'евский макрос мне не помог бы )
                      а из-за лени хотелось убедиться, что других способов решения данного вопроса нет.

                      Спасибо всем за помощь )

                      Комментарий


                      • #12
                        Поделитесь такой функцией для расчета доходности к погашению для ОФЗ, чтобы результат совпадал с биржевкой ММВБ.

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

                        Public Function CD_OFZFD(ColBegin, Num, CurPrice, Nominal, Today, CurSheet)
                        Dim Coupons(0 To 69, 1 To 3) As Variant
                        Dim Cycle, CurCoupon, NKD, Dohodnost, Step, Dest, PrDest, CalcPrice As Double
                        ' сразу переведем цену из % в денежный вид
                        CurPrice = CurPrice * Nominal / 100
                        ' во первых, надо заполнить информацию о купонах, дабы за ней в таблицу не бегать каждый раз, данные кладутся в порядке: дата, период, купон
                        For Cycle = ColBegin To ColBegin + Num
                        Coupons(Cycle - ColBegin, 1) = Worksheets(CStr(CurSheet)).Cells(2, Cycle).Value
                        Coupons(Cycle - ColBegin, 2) = Worksheets(CStr(CurSheet)).Cells(3, Cycle).Value
                        Coupons(Cycle - ColBegin, 3) = Worksheets(CStr(CurSheet)).Cells(4, Cycle).Value
                        Next Cycle
                        ' затем надо найти НКД по данной облигашке на данную дату
                        ' для этого находим ближайший купонный период
                        For Cycle = ColBegin To ColBegin + Num
                        If (Coupons(Cycle - ColBegin, 1) > "") And (Coupons(Cycle - ColBegin, 1) Today) Then CurCoupon = Cycle - ColBegin + 1
                        Next Cycle
                        ' когда мы его нашли, находим НКД
                        NKD = Coupons(CurCoupon, 3) * (Coupons(CurCoupon, 2) - (Coupons(CurCoupon, 1) - Today)) / Coupons(CurCoupon, 2)
                        ' НКД подсчитали, и может быть, теперь начинаем подбирать доходность
                        Dohodnost = 16
                        Step = 8
                        ' методом последовательного приближения, начинаем от 16%, с первым шагом 8%
                        ' при каждом цикле режем шаг пополам
                        Do
                        CalcPrice = 0
                        For Cycle = 0 To Num - CurCoupon - 1
                        ' начинаем расчет купонной части цены
                        CalcPrice = CalcPrice + (Coupons(CurCoupon + Cycle, 3) / ((1 + Dohodnost / 100) ^ ((Coupons(CurCoupon + Cycle, 1) - Today) / 365)))
                        Next Cycle
                        ' подсчитали купонную часть, надо приплюсовать номинал
                        CalcPrice = CalcPrice + (Nominal / ((1 + Dohodnost / 100) ^ ((Coupons(CurCoupon + Cycle - 1, 1) - Today) / 365)))
                        ' приплюсовали, теперь из этого всего вычитаем НКД
                        CalcPrice = CalcPrice - NKD
                        If CalcPrice CurPrice Then
                        Dohodnost = CDec(Dohodnost) - CDec(Step)
                        Else
                        Dohodnost = CDec(Dohodnost) + CDec(Step)
                        End If
                        Step = Step / 2

                        Loop Until (Abs(CalcPrice / CurPrice - 1)) 0.0000001

                        CD_OFZFD = CDbl(Dohodnost / 100)
                        End Function

                        Сообщение перенесено из новой темы.
                        Предупреждение: YMA! Вы не в первый раз создаете темы, дублирующие уже существующие. Читайте Правила форума, пользуйтесь поиском!
                        Последний раз редактировалось Александр Лобов; 02.04.2002, 13:34.

                        Комментарий


                        • #13
                          если облигация сроком более года до погашения и ее купон вписывается в ранг доходностей, соответствующих страновому рейтингу или если бумага размещалась по номиналу, для приблизительного подсчета можно применять формулу текущей доходности: купон/цену*100%

                          Вот тока зачем? :о)

                          Комментарий


                          • #14
                            Есть! Нашел я отличие в своих методах от применяемых на ММВБ - теперь совпадает с их результатами до последней копеечки. Добавил 2 строчки в функцию, указанную выше. Даже получилось количество итераций уменьшить. Но до чего они извращенно считают...

                            2 Александр Лобов: Впредь буду внимательнее. Но этот тред мне ничем не помог, к тому же ссылка выше - мертвая... Зачем было поднимать кучу старого хлама?

                            Комментарий


                            • #15
                              "Но этот тред мне ничем не помог, к тому же ссылка выше - мертвая... Зачем было поднимать кучу старого хлама?"
                              YMA, ну, не знаю, таковы у нас правила игры. И не я их придумал.

                              Комментарий


                              • #16
                                Дорогой YMA!

                                А нельзя ли получить исправленную версии программки, а то я просто заколебался методом подбора доходность по ЦБшной формуле определять, а с VBA у меня отношения не очень...

                                Комментарий


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

                                  Public Function CD_OFZFD(ColBegin, Num, CurPrice, Nominal, Today, CurSheet)
                                  Dim Coupons(0 To 69, 1 To 3) As Variant
                                  Dim Iter, Cycle, CurCoupon, NKD, Dohodnost, Step, Dest, PrDest, CalcPrice As Double
                                  ' сразу переведем цену из % в денежный вид
                                  CurPrice = CurPrice * Nominal / 100
                                  ' во первых, надо заполнить информацию о купонах, дабы за ней в таблицу не бегать каждый раз
                                  For Cycle = ColBegin To ColBegin + Num
                                  Coupons(Cycle - ColBegin, 1) = Worksheets(CStr(CurSheet)).Cells(2, Cycle).Value
                                  Coupons(Cycle - ColBegin, 2) = Worksheets(CStr(CurSheet)).Cells(3, Cycle).Value
                                  Coupons(Cycle - ColBegin, 3) = Worksheets(CStr(CurSheet)).Cells(4, Cycle).Value
                                  Next Cycle
                                  ' затем надо найти НКД по данной облигашке на данную дату
                                  ' для этого находим ближайший купонный период
                                  For Cycle = ColBegin To ColBegin + Num
                                  If (Coupons(Cycle - ColBegin, 1) > "") And (Coupons(Cycle - ColBegin, 1) Today) Then CurCoupon = Cycle - ColBegin + 1
                                  Next Cycle
                                  ' когда мы его нашли, находим НКД
                                  NKD = Coupons(CurCoupon, 3) * (Coupons(CurCoupon, 2) - (Coupons(CurCoupon, 1) - Today)) / Coupons(CurCoupon, 2)
                                  If NKD - ((NKD * 10000) \ 100) / 100 > 0.005 Then NKD = NKD + 0.005
                                  NKD = ((NKD * 10000) \ 100) / 100
                                  ' НКД подсчитали, и даже правильно, теперь начинаем подбирать доходность
                                  Dohodnost = 16
                                  Step = 8
                                  Iter = 0
                                  ' методом последовательного приближения,
                                  ' при каждом цикле режем шаг пополам
                                  Do
                                  CalcPrice = 0
                                  Iter = Iter + 1
                                  For Cycle = 0 To Num - CurCoupon - 1
                                  ' начинаем расчет купонной части цены
                                  CalcPrice = CalcPrice + (Coupons(CurCoupon + Cycle, 3) / ((1 + Dohodnost / 100) ^ ((Coupons(CurCoupon + Cycle, 1) - Today) / 365)))
                                  Next Cycle
                                  ' подсчитали купонную часть, надо приплюсовать номинал
                                  CalcPrice = CalcPrice + (Nominal / ((1 + Dohodnost / 100) ^ ((Coupons(CurCoupon + Cycle - 1, 1) - Today) / 365)))
                                  ' приплюсовали, теперь из этого всего [beep] вычитаем НКД
                                  CalcPrice = CalcPrice - NKD
                                  PrDest = Dest
                                  If CalcPrice CurPrice Then
                                  Dohodnost = CDec(Dohodnost) - CDec(Step)
                                  Dest = -1
                                  Else
                                  Dohodnost = CDec(Dohodnost) + CDec(Step)
                                  Dest = 1
                                  End If
                                  If PrDest > Dest Then Step = Step / 2
                                  Loop Until ((Abs(CalcPrice / CurPrice - 1)) 0.000000001) Or (Iter > 50)

                                  CD_OFZFD = CDbl(Dohodnost / 100)
                                  If Iter > 49 Then CD_OFZFD = -1
                                  End Function

                                  Public Function DC_OFZFD(ColBegin, Num, Dohodnost, Nominal, Today, CurSheet)
                                  Dim Coupons(0 To 69, 1 To 3) As Variant
                                  Dim Cycle, CurCoupon, NKD, CalcPrice
                                  ' во первых, надо заполнить информацию о купонах, дабы за ней в таблицу не бегать каждый раз
                                  For Cycle = ColBegin To ColBegin + Num
                                  Coupons(Cycle - ColBegin, 1) = Worksheets(CStr(CurSheet)).Cells(2, Cycle).Value
                                  Coupons(Cycle - ColBegin, 2) = Worksheets(CStr(CurSheet)).Cells(3, Cycle).Value
                                  Coupons(Cycle - ColBegin, 3) = Worksheets(CStr(CurSheet)).Cells(4, Cycle).Value
                                  Next Cycle
                                  ' затем надо найти НКД по данной облигашке на данную дату
                                  ' для этого находим ближайший купонный период
                                  For Cycle = ColBegin To ColBegin + Num
                                  If (Coupons(Cycle - ColBegin, 1) > "") And (Coupons(Cycle - ColBegin, 1) Today) Then CurCoupon = Cycle - ColBegin + 1
                                  Next Cycle
                                  ' когда мы его нашли, находим НКД
                                  NKD = Coupons(CurCoupon, 3) * (Coupons(CurCoupon, 2) - (Coupons(CurCoupon, 1) - Today)) / Coupons(CurCoupon, 2)
                                  If NKD - ((NKD * 10000) \ 100) / 100 > 0.005 Then NKD = NKD + 0.005
                                  NKD = ((NKD * 10000) \ 100) / 100
                                  ' НКД подсчитали, теперь начинаем рассчитывать цену
                                  CalcPrice = 0
                                  For Cycle = 0 To Num - CurCoupon - 1
                                  ' начинаем расчет купонной части цены
                                  CalcPrice = CalcPrice + (Coupons(CurCoupon + Cycle, 3) / ((1 + Dohodnost) ^ ((Coupons(CurCoupon + Cycle, 1) - Today) / 365)))
                                  Next Cycle
                                  ' подсчитали купонную часть, надо приплюсовать номинал
                                  CalcPrice = CalcPrice + (Nominal / ((1 + Dohodnost) ^ ((Coupons(CurCoupon + Cycle - 1, 1) - Today) / 365)))
                                  ' приплюсовали, теперь из этого всего [beep] вычитаем НКД
                                  CalcPrice = CalcPrice - NKD
                                  DC_OFZFD = CalcPrice
                                  End Function

                                  Комментарий


                                  • #18
                                    Спасибо!

                                    Комментарий


                                    • #19
                                      Анализ операций с ценными бумагами в MS Excel
                                      (встроенные функции, в том числе NPV и IRR)
                                      http://www.cfin.ru/finanalysis/math/index.shtml

                                      Расчетные формулы по купоннцм корпоративным облигациям есть,
                                      например, в презентации
                                      http://invest.mdmbank.ru/services/bo...bonds-demo.pps

                                      Комментарий


                                      • #20
                                        Единственная ценная фраза, присутствующая в документе на cfin.ru:

                                        .....Уравнение (2.4) решается относительно YTM каким-либо итерационным методом....

                                        Что, в общем-то, и так понятно.

                                        Комментарий


                                        • #21
                                          Для YMA!
                                          Ну почему ж Вы до конца не ПРОчитали? Ведь встроенная функция IRR
                                          есть не только в таблицах Excel (русифиц.=ВНДОХ), но и в рядовом
                                          финансовом калькуляторе. Все давно запрограммировано.
                                          Да, расчет идет подбором. Но ведь явной формулы в общем случае нет!

                                          "Уравнение (2.4) решается относительно YTM каким-либо итерационным методом. Приблизительное значение этой величины можно определить из соотношения (2.5):

                                          . (2.5)

                                          Поскольку применение ППП EXCEL освобождает нас от подобных забот, рассмотрим более подробно некоторые важнейшие свойства этого показателя.

                                          Доходность к погашению YTM – это процентная ставка в норме дисконта, которая приравнивает величину объявленного потока платежей к текущей рыночной стоимости облигации. По сути, она представляет собой внутреннюю норму доходности инвестиции (internal rate of return – IRR). "

                                          Комментарий


                                          • #22
                                            А можно конкретный пример расчета, скажем, для ОФЗ 27004:
                                            стоимость на 17/04/02 - 10,039
                                            1ый оставшийся купон - 19/06/02 - период 91 день - сумма купона 0,37
                                            2ой оставшийся купон - 18/09/02 - период 91 день - сумма купона 0,37
                                            погашение - 18/09/02

                                            Комментарий


                                            • #23
                                              Спасибо за вопрос! Доходность к погашению (yield to maturity) - это показатель, который считается за полный срок. Где мне разыскивать для ответа Вам дату размещения ОФЗ 27004? Максимальная цена на торгах 1003р39к за день внутри текущего купонного периода тоже мало чем поможет. Давайте по порядку и возьмем пример попроще. Дисконтируем бумагу к цене размещения!!!

                                              Корпоративные облигации ОАО С-З Телеком номиналом 1000 рублей размещены 10/4/2 по цене 96,5% т.е. за 965 рублей. Расписание купонов 10/7 - 20%, 9/10 - 19%, 10/4/3 - 18%, 9/10/3 - 16% и последний в момент погашения 9/4/4 - 16%.
                                              Длины купонных периодов 91 91 183 182 183 Всего 730 дней

                                              В Excel есть функция XIRR, умеющая подбирать внутренний процент
                                              для денежного потока неравной периодичности и величины.
                                              По-русски она названа =ЧИСТВНДОХ().

                                              Первый аргумент: значения элементов денежного потока, связанного
                                              с данной облигацией -965; 49.86; 47.37; 90.25; 79.78; 1080.22
                                              Поясню -цена размещения (расход), купоны до предпоследнего (точный процент по базе 365 дней в году) и последний купон с номиналом.

                                              Второй агрумент: даты существенных моментов , то есть
                                              последовательность 10/4/2; 10/7/2; 9/10/2; 10/4/3; 9/10/3; 9/4/4

                                              Последний необязательный аргумент предположение - это начальное
                                              приближение для подбора. По умолчанию, кажется, 10%

                                              Нужно предварительно на рабочем листе составить маленькую табличку денежных значений и соответствующих дат, чтобы потом сразу в мастере фунций интервалы мышкой выделять. Например, числа записать в блок В2:В7,
                                              а даты рядом в C2:C7.

                                              Берусь утверждать, что =ЧИСТВНДОХ(B2:B7;C2:C7) дает правильный ответ 20.85% годовых и, действительно, освобождает от забот. Желаю успехов! [/B]

                                              Комментарий


                                              • #24
                                                Ну вот,похоже вы не совсем в курсе того, что я тут хотел подсчитать...
                                                Доходность облигации к погашению на дату ее размещения меня совершенно не интересует, размещение было давно.

                                                А интересует как раз доходность по результатам вчерашних торгов, считающаяся по средневзвешенной цене, которую я привел. Причем необходимо учитывать реинвестирование предстоящих купонов, чего эта функция ИМХО не делает. Да и если пытаться ее использовать, то НКД за прошедшую часть купонного периода придется считать все равно вручную.

                                                А доходность по ОФЗ прекрасно считается из приведенных мной данных.

                                                Комментарий


                                                • #25
                                                  YMA
                                                  Привет, а не поделишься программой, которую написал. А то я с программингом не дружу, а разобраться самому - пока не получается

                                                  Комментарий


                                                  • #26
                                                    Господа, я в этой области не специалист, поэтому изучать вопрос не успеваю, меня собственно попросили помочь с этим.
                                                    1) У знакомой у дипломном проекте нужно рассчитать доходность облигаций Сбербанка 26 серии, купленных 7 мая 1998 года по цене 507,73 руб., - 5,23.
                                                    Так вот нужно также посчитать доходы на 20 мая 2003 года, которые мог бы получить держатель.
                                                    2) Допустим человек намеревается вложить 1.000.000 руб. в ценные бумаги. Какова доходность по каждому из их видов (векселя, облигации и т.д.) на примере какого нибудь банка или организации.
                                                    Надеюсь сформулировал правильно более или менее. Очень надеюсь на Вашу помощь, завтра днем уже нужно.
                                                    Если будет необходимо, то можно даже по e-mail в Ворде прислать решение. Буду чрезвычайно благодарен.

                                                    Комментарий


                                                    • #27
                                                      HELP!

                                                      Меня недавно загрузили громадной работой рассчитать кучу показателей для кучи облигаций.
                                                      И вот уже неделю я мучаюсь с формулой расчета ДКП.
                                                      Единственное, что я смог накопатть - так это то, что в разных источниках эта формула выглядит по-разному... Даже на ММВБ для расчета ДКП по ГКО-ОФЗ и евробондам используются разные формулы (кстати, неплохо, если бы кто-нибудь смог пояснить их принципиальное различие).
                                                      В настоящее время у нас для расчета ДКП используется формула, учитывающая периодичность выплат купона и доходность за период (период - расстояние между купонными выплатами), которая приводится к гдовой.
                                                      Расчеты, в основном, идут верно, но по некоторым бумагам (в частности, ОФЗ 45002) расхождение внушает суеверный ужас. Подскажите, поджалуйста, что не так?
                                                      А также пожалуйста, просвятите начинающего аналитика относительно еще нескольких вопросов:
                                                      1. Бывают ли облигации с нестандартной частотой выплат (имеется в виду, например, если в год не укладывается целое число выплат купона)? Как по ним считать ДКП?
                                                      2. Есть какие-то стандарты ISMA относительно расчета ДКП
                                                      3. Как ДКП считается на cbonds и micex (и для каких бумаг), почему у меня результаты отличаются?
                                                      4. Как считать ДКП (и прочую аналитику) для облигаций, которые имеют не зафиксированный поток платежей (например, размер купона привязан к LIBOR, или к инфляции, или задан границами от и до, или определяется каким нибудь собранием , или как-нибудь еще)?

                                                      Есть еще один вопрос, связанный с точностью вычислений и округлением: как принято округлять значения - отбрасыванием правой части или по математическому правилу?

                                                      Комментарий


                                                      • #28
                                                        А что такое ДКП?

                                                        Комментарий


                                                        • #29
                                                          Есть ли в сети сайты, позволяющие автоматически строить график текущей доходности облигаций?
                                                          То есть выбираешь интересующие выпуски или берешь все выпуски по одной отрасли и автоматически строится график

                                                          Комментарий


                                                          • #30
                                                            http://cbonds.info/quotes/yield_curves.php

                                                            Комментарий

                                                            Пользователи, просматривающие эту тему

                                                            Свернуть

                                                            Присутствует 1. Участников: 0, гостей: 1.

                                                            Обработка...
                                                            X