Работа с денежными потоками
Post on 05-Feb-2016
74 Views
Preview:
DESCRIPTION
TRANSCRIPT
Работа с денежными потокамиРассмотрим модельную задачу: инвестор на протяжении n лет вкладывает в начале каждого i-ого базового периода а в конце того же периода получает доход . Текущая процентная ставка r ( или учетная ставка d). В частности. Величины P и C могут быть равны нулю.Связь текущей стоимость в момент времени , T – базовый временной период и будущей стоимостью:
Можно требовать t=0, так как платежи часто осуществляются в конце периода.Также можно выписать текущую стоимость проекта в виде потока платежей
Можно пересчитать будущую стоимость проекта:
1iP
iC
kt kT t
(1 ) 1k tfv pv r r
T
0 (1 )
nii
i
CFnvp
r
0
(1 )n
n ii
i
fv CF r
Функции MatLab
• nvp=pvvar(cash_flow, percent, payments_date)• fv=fvvar(cash_flow, percent, payments_date)• Внутренняя доходность оценивается с помощью функции
inner_income=xirr(cash_flow, payments_date, start_condition, number_iterations)
• cash_flow – массив потока платежей CF• percent – процентная ставка• payments_date – даты платежей• В функции xirr последние два аргумента
необязательные. Start_condition дает стартовую точку для решения уравнения COF=CIF.
Сложные критерии.Предыдущие критерии достаточно просты. Имеется два
критерия, которые позволяют провести более точный анализ платежей.
Первый – дюрация Маколея. Второй – выпуклость. Пусть стоимость положительного потока платежей P зависит
от процентной ставки r достаточно гладко. Тогда функцию P(r) можно разложить в ряд Тейлора в
окрестности фиксированной точки r.После преобразований формулы Тейлора, получим формулу
Здесь - модифицированная дюрация, а V(r) – выпуклость.
21( ) ( ) ( )( )
2mP P r D r r V r r
( )mD r
Сложные критерии. Дюрация
Модифицированная дюрация связана с дюрацией Маколея следующим соотношением
Собственно дюрация выражается через параетры задачи:
Она имеет смысл средневзвешенного времени полного платежа.
( )( )
1m
D rD r
r
1 1
( )( ) , , ( ) ( )
( )
n ni
i i i ii i
pv CFD r t w w P r pv CF
P r
Сложные критерии. Выпуклость.Как и дюрация, выпуклость вычисляется через параметры
задачи:
Момент времени, как и в дюрации, Дюрация представляет собой линейный показатель
изменения цены P при изменении ставки r на . При таком изменении цена P изменяется нелинейно, но
как выпуклая функция ставки. Выпуклость и показывает на сколько выпукла эта функция при малом изменении.
С математической точки зрения
22
1
1( ) ( )
(1 )
n
i ii
V r t w D rr
it i
r
( ) '( ), ( ) ''( )D r P r V r P r
Сложные критерии. MatLab.Для вычисления дюрации используется функция [duration,
mod_duration] = cfdur(flow, income)Для вычисления выпуклости – функция convexity =
cfconv(flow, income)Параметры. Аргумент flow – массив последовательных
платежей. Второй – income – ставка доходности для одного периода.
Выходные аргументы. Аргумент duration – дюрация Маколея, mod_duration – модифицированная дюрация. Convexity – выпуклость.
Дюрация и модифицированная дюрация имеют размерность количества периодов. Выпуклость – количество периодов в квадрате.
Пример. Простые критерии.
• Рассмотрим модельную задачу. Имеется два проекта на 5 лет, начиная с конца 2011 года, при текущей процентной ставке 10%. Платежи производятся в последний рабочий понедельник месяца.
• Проект 1. Начальное вложение 100 млн. руб. Получение ежегодных доходов, начиная с конца второго года по 47, 53, 30 и 20 млн. руб.
• Проект 2. Начальное вложение 80 млн. руб. Дополнительное вложение 40 млн. руб в начале 4-ого года. Ежегодные доходы с конца первого года по 25, 15, 20, 30 и 80 млн. руб. В последний год ожидается платеж двумя равными частями в конце каждого полугодия.
• Без учета зависимости стоимости платежей от времени, то доход от каждого из этих проектов равен 50 млн. руб.
Последовательное составление программы.
• Составление массивов платежей.Первый проект. Cf1=[-100, 0, 47, 53, 30, 20]Второй проект. Cf2=[-80, 25, 15, -20, 30, 40, 40]• Отрицательное число означает исходящий
платеж.
Построение массива дат платежей.• Первый проект.>> date_flow1=[];
for i = 1:6 date_flow1 (i) = lweekdate(2, 2011 + i, 12); end• Второй проект.>> date_flow2=[]; date_flow2 = date_flow1; date_flow2(6) = lweekdate(2, 2017, 6) ; date_flow2(7) = date_flow1(6);
Простые критерии.
• Сравнение по критерию npvnpv1 = pvvar(Cf1, 0.1, date_flow1)npv2 = pvvar(Cf2, 0.1, date_flow2)
• Критерий fv:fv1 = fvvar(Cf1, 0.1, date_flow1)fv2 = fvvar(Cf2, 0.1, date_flow2)
• Расчет внутренней ставки доходности (критерий IRR)int_rate1 = xirr(Cf1, date_flow1, 0.13, 100)int_rate2 = xirr(Cf2, date_fIow2, 0.13, 100)
Листинг программы.
Результаты>> cash_flow
npv1 =
11.6828 11,5500
npv2 =
11.5804 11,4774
fv1 =
18.7847 18,6050
fv2 =
18.6199 18,4881
int_rate1 =
0.1408 0,1403
int_rate2 =
0.1434 0,1429По первому и второму критерию
первый проект предпочтительнее, чем второй.
Однако по внутренней норме
доходности второй лучше.Оба проекта показывают
достаточно близкие значения, поэтому воспользуемся двумя оставшимися критериями для оценки. Рассчитаем дюрацию и выпуклость.
Пример. Сложные критерии. Расчет поступлений.
• В качестве поступлений во втором проекте следует выбирать полугодовой период, так как в нем присутствует выплата за полугодовой период.
• Поэтому и в первом проекте следует выбирать полугодовой интервал. Иначе будут несоразмерные величины.
Пример. Расчет дюрации и выпуклости.
Cf11=[0, 0, 0, 47, 0, 53, 0, 30, 0, 20];Cf21=[0, 25, 0, 15, 0, 0, 0, 30, 40, 40];
dur1 = cfdur(Cf11, 0.1/2)cxl = cfconv(Cf11, 0.1/2)dur2 = cfdur(Cf21, 0.1/2)cx2 = cfconv(Cf21, 0.1/2)
Листинг программы.
Результаты.>> cash_flow1
dur1 =
6.1118 6,1118
cxl =
42.9530 42,9530
dur2 =
6.9540 6,9540
cx2 =
58.9449 58,9449
Из расчета видно, что второй поток чувствительнее, чем первый, к изменению процентной ставки (оба параметра больше). Как следствие имеет больший риск, связанный с возможными ее изменениями в период осуществления проекта.
Задача. Можно было бы воспользоваться очевидным фактом, что два полугодия составляют один год и пользоваться этим при вычислении дюрации. Однако это не так: результаты будут отличаться на порядок
. Проверить это для рассмотренного примера.
2(( ) )o r
Анализ кредитов. Функция amortize.[per_credit, per_percent, debt, payment] = amortize(rate, periods, summ, balance, moment)
Первые три аргумента обязательны:rate - процентная ставка по кредиту за один периодperiods – полное число периодов расчета по займуsumm – сумма полученных заемщиком денежных средств
Два последних аргумента необязательны:moment (по умолчанию 0) – флаг, равный 1 при выплатах в начале периода и 0 – в концеbalance (по умолчанию 0) – та сумма, которая остается неоплаченной, если задается
отрицательное число. Или сумма, которую будет должен кредитор заемщику после погашения долга.
Возвращает эта функция три массива (первые три аргумента) размерности periods и одно число:per_credit – платежи по сумме кредита за каждый периодper_percent – выплаты по начисленным процентам за остаток кредита в каждый периодdebt – оставшийся долг после текущего платежаpayment – сумма общей разовой выплаты
Анализ кредитов. Другие функции.
Процентную ставку позволяет вычислить функция• rate = annurate(periods, payment, summ, balance, moment)Рассчитать разовый платеж можно с помощью• payment = payper(rate, periods, summ, balance, moment)Следующая функция позволяет работать с накоплениями в
банке и определить за какое время накопится в банке необходимая сумма.
• periods = annuterm(rate, payment, summ, deposit, moment)• summ – сумма на начало вклада; deposit – сумма на
конец вклада.
Анализ кредитов. Пример.
• Пусть необходимо принять решение о рассмотрении кредита в 1 млн. руб. в течении 10 лет. Процентная ставка – 20% годовых.
Результаты.per_credit = 38.5228 46.2273 55.4728
66.5673 79.8808 95.8569 115.0283 138.0340 165.6408 198.7690
per_percent = 200.0000 192.2954
183.0500 171.9554 158.6420 142.6658 123.4944 100.4888
72.8820 39.7538
debt =961.4772 915.2499 859.7772
793.2098 713.3291 617.4721 502.4438 364.4098 198.7690 -0.0000
payment = 238.5228
Продолжение примера.
Результат
Функция annuraterate1 = 0.2000
Функция payperpayment1 = 238.5228
Функция annutermperiods = 7.9964
Портфельный анализ рисковых активов.
Основные функции портфельного анализа основаны на моделях Марковица и Тобина и их модификациях. Вначале кратко поясним суть вопроса.
В общей постановке задача портфельного инвестирования для инвестора формулируется так. Инвестор рассматривает возможность вложения капитала в некоторый набор акций (рисковых активов), выбранный им из личных соображений, и желает составить портфель ценных бумаг так, чтобы его доходность была бы наибольшей при фиксированном риске или риск был бы наименьшим при выбранной доходности портфеля. В рассматриваемой модели за меру риска принимается среднеквадратическое отклонение доходности ценных бумаг или портфеля от ее математического ожидания. На выбор портфеля влияет также отношение инвестора к риску, т. е. насколько он готов увеличить рискованность вложения с целью получить большую доходность.
В простейшем случае поиск наилучшего портфеля состоит из двух шагов: построение эффективной границы Марковица с использованием функций frontcon или portopt и выбор портфеля с помощью функции portalloc в соответствии с отношением инвестора к риску и значениями процентных ставок для безрискового вложения и заимствования.
Математическая постановка.
Пусть инвестор рассматривает вопрос о составлении портфеля из n активов. Ожидаемые доходности которых представлены вектором y, а их ковариации – матрицей V:
Сам портфель определяется вектором , компоненты которого указывают долю покупки того или иного актива, .
Можно наложить дополнительное естественное условие на вектор x, означающее, что вкладываются все имеющиеся средства
1 , 1( ,..., ) ,
nTn ij i j
y y y V v
1( ,..., )Tnx x x
1
1n
ii
x
0ix
Математическая постановка. Продолжение.
Ограничение означает, что инвестор не может осуществлять краткосрочные продажи (продавать заимствованные бумаги).
Ожидаемая доходность обозначается через , а его риск (среднеквадратичное отклонение) - .
Справедливы следующие формулы-определения
0ix
py
p
,T Tp py x y x Vx
Математическая постановка. Продолжение. II.
Пусть и - наименьшая и наибольшая доходности. Тогда , и если для каждого фиксированного значения доходности y построить график , то получится кривая. называемая пулей Марковица. Часть этой кривой является эффективной границей.
Каждой точке на эффективной границе соответствует эффективный портфель в смысле седловой точки.
miny maxy
min max[ , ]py y y
( )p py
0 0,p py
Построение эффективной границы.
Итак, инвестор определился с доходностями и рисками по каждому вложению. Он построил матрицу коэффициентов корреляции между этими активами. MatLab в расчетах пользуется матрицей ковариаций.
Переход к этой матрице осуществляется при помощи функции MatrCov = corr2cov(Disp, MatrCorr)
Здесь Disp – вектор среднеквадратичных отклонений.Необходимо отметить, что матрица корреляции должна
быть симметричной и положительно определенной. В MatLab нет проверки на эти условия, поэтому в случае ошибки можно получить неправдоподобные результаты.
Построение эффективной границы. II
[Prisk, Pincome, Pparts] = portopt(Aincome, Acov, Pnumber, PNincome, borders)
Функция имеет два обязательных аргумента: Aincome и Acov – вектор доходностей и матрицу ковариаций.
Параметры Pnumber, Pnincome задают разбиение интервала . . Если задан один из них, то второй должен быть пустым. Определяют количество портфелей.
Параметр borders задает ограничения на неизвестные x.Выходные параметры – вектор рисков для каждого портфеля,
вектор ожидаемых доходностей портфеля и матрица, в которой каждая строка – доли активов в портфеле.
min max[ , ]y y
Построение ограничений.Как правило ограничения имеют следующий вид . Однако в MatLab можно задавать и более сложные
ограничения. Делается это с помощью функцииborders = portcons(‘type’, data1, data2, ... , dataN)
• Default. Стандартные ограничения , . Передается один параметр – число активов.
• AssetLims. Ограничения на активы. Передается два обязательных аргумента: первый – вектор L, второй – вектор U. Один необязательный аргумент – число активов.
• Custom. Произвольные ограничения . Передается два обязательных аргумента. Первый – матрица A размерности число ограничений на число активов. Второй – вектор b.
0 1i i iL x U
1
1n
ii
x
0ix
Ax b
Выбор оптимального портфеля.
Построение эффективной границы дает инветору множество эффективных портфелей. Из них выбирается тот, который наилучше отражает его отношение к риску: чем выше доходность, тем выше риск.
MatLab использует функцию предпочтения Неймана-Монгерштерна
Здесь a – индекс неприятия риска.
1( , )
2p p p pU y y a
Выбор оптимального портфеля. II
Уравнение U=const описывает кривую безразличия.
Инвестор стремится максимизировать функцию U на множестве допустимых портфелей.
Поэтому оптимальным будет тот портфель, который отвечает точке касания эффективной границы и кривой безразличия.
Выбор оптимального портфеля. III
Необходимо учесть, что MatLab позволяет использовать модифицированную модель инвестирования.
Инвестор может вкладывать средства в безрисковый актив с процентной ставкой
Или брать заем по ставке Таким образом к эффективной границе присоединяется в
соответствующих точках касания две прямых – безрисковая и кредитная.
Эти точки касания определяют еще два пакета, называемые касательными.
Из условия касания можно определить коэффициент вложения средств в этот актив
Здесь - риск для найденной точки на эффективной границе, а - риск соответствующего касательного пакета.
fr
b fr r
lTp
lTp
Средства MatLab для выбора оптимального портфеля
[Frisk, Fincome, Fparts, coef, Optrisk, Optincome]=portalloc(Prisk, Pincome, Pparts,…, NRalloc, NRpercent, Index)
Первые три входящих аргумента – те, которые были посчитаны с помощью функции portopt.
NRalloc, NRpercent – размер вложения и процентная ставка безрискового вложения.
Index – индекс неприятия риска. Чем выше, тем меньший риск выбирается. Рекомендуется: 4 – для осторожного инвестора, 2 – для рискового.
Frisk, Fincome, Fparts – риск, доходность, доли касательного портфеляCoef – коэффициент вложения средств в касательный активOptrisk, Optincome – риск и доходность оптимального портфеля.Если вызвать функцию без указания выходных параметров, то тогда
будет начерчен график.
Пример.
Результат выполнения.Prisk =
0.0805 0.0850 0.0985 0.1230 0.2050
Pincome =
0.1317 0.1465 0.1613 0.1762 0.1910
Pparts =
0.5747 0 0.0487 0.2336 0 0.1430 0.3381 0 0.2988 0.0599 0 0.3032 0.1069 0 0.4386 0 0.0442 0.4102 0 0 0.2955 0 0.2357 0.4688 0 0 0 0 0 1.0000
Пример. Продолжение.
Результат выбора оптимального портфеля. Нерисковый и рисковый случаи.
Результат. IIportalloc with output parametrs. No risk.
Frisk =
0.1013
Fincome =
0.1641
Fparts =
0.0870 0 0.4120 0 0.0798 0.4211
coef =
2.2908
Optrisk =
0.2321
Optincome =
0.2855
portalloc with output parametrs. With risk.
Frisk =
0.1013
Fincome =
0.1641
Fparts =
0.0870 0 0.4120 0 0.0798 0.4211
coef =
4.5816
Optrisk =
0.4643
Optincome =
0.5011
Финальный анализ.
Наиболее интересным является значения коэффициента coef.
Случай, когда он меньше единицы. Это указывает, что инвестору следует вложить долю средств coef в касательный актив, а остальное – в безрисковый.
Случай, когда он больше единицы. Это означает, что следует взять заем на долю coef-1 и вложить полученный кредит в касательный портфель.
top related