cfplot

Визуализация денежных потоков финансовых инструментов

Описание

пример

cfplot(CFlowDates,CFlowAmounts) строит график денежного потока для заданных сумм денежного потока (CFlowAmounts) и дат (CFlowDates). Длина и ориентация каждой стрелы соответствуют сумме денежного потока.

пример

cfplot(___,Name,Value) строит график денежного потока для заданных сумм денежного потока (CFlowAmounts), дат (CFlowDates) и необязательные аргументы пары "имя-значение".

пример

h = cfplot(___,Name,Value) возвращает указатель на объекты линии, используемые в схеме денежного потока.

пример

[h,axes_handle] = cfplot(___,Name,Value) возвращает указатели к объектам линий и осям, используя необязательные аргументы пары "имя-значение".

Примеры

свернуть все

Определите CFlowAmounts и CFlowDates использование cfamounts функция.

CouponRate = [0.06; 0.05; 0.03];
Settle = '03-Jun-1999';
Maturity = ['15-Aug-2000';'15-Dec-2000';'15-Jun-2000'];
Period = [1; 2; 2];  Basis = [1; 0; 0];
[CFlowAmounts, CFlowDates] = cfamounts(...
CouponRate, Settle, Maturity, Period, Basis)
CFlowAmounts = 3×5

   -4.8000    6.0000  106.0000       NaN       NaN
   -2.3352    2.5000    2.5000    2.5000  102.5000
   -1.4011    1.5000    1.5000  101.5000       NaN

CFlowDates = 3×5

      730274      730347      730713         NaN         NaN
      730274      730286      730469      730652      730835
      730274      730286      730469      730652         NaN

Постройте график всех денежных потоков на тех же осях и пометьте первые два.

cfplot(CFlowDates, CFlowAmounts, 'ShowAmnt', [1 2])

Figure contains an axes. The axes contains 17 objects of type line, text.

Сгруппировать второй и третий денежные потоки.

figure;
cfplot(CFlowDates, CFlowAmounts, 'Groups', {[2 3]}, 'ShowAmnt', 1);

Figure contains an axes. The axes contains 11 objects of type line, text.

Форматируйте ось даты и размещайте такты на фактических датах денежного потока.

figure;
cfplot(CFlowDates, CFlowAmounts, 'Groups', {[2 3]}, 'ShowAmnt', 1, ...
'DateFormat', 6, 'DateSpacing', 100);

Figure contains an axes. The axes contains 11 objects of type line, text.

Сложите стрелы денежного потока, происходящие в те же даты.

figure;
cfplot(CFlowDates, CFlowAmounts, 'Groups', {[2 3]}, 'ShowAmnt', 1, ...
'DateFormat', 6, 'DateSpacing', 100, 'Stacked', 1);

Figure contains an axes. The axes contains 11 objects of type line, text.

Формируйте подграфики нескольких групп и добавляйте заголовки с помощью указателей осей.

figure;
[h, axes_handle] = cfplot(CFlowDates, CFlowAmounts, ...
'Groups', {[1] [2 3]}, 'ShowAmnt', 1, 'Stacked', 2, ...
'DateSpacing', [1 60 2 100], 'DateFormat', [1 12 2 6]);
title(axes_handle(1), 'Group 1', 'FontWeight', 'bold');
title(axes_handle(2), 'Group 2', 'FontWeight', 'bold');

Figure contains 2 axes. Axes 1 with title Group 1 contains 6 objects of type line, text. Axes 2 with title Group 2 contains 6 objects of type line.

Определите CFlowDates использование datetime введите и постройте график денежного потока.

CouponRate = [0.06; 0.05; 0.03];
Settle = '03-Jun-1999';
Maturity = ['15-Aug-2000';'15-Dec-2000';'15-Jun-2000'];
Period = [1; 2; 2];  Basis = [1; 0; 0];
[CFlowAmounts, CFlowDates] = cfamounts(...
CouponRate, Settle, Maturity, Period, Basis);
cfplot(datetime(CFlowDates,'ConvertFrom','datenum','Locale','en_US'), CFlowAmounts, 'ShowAmnt', [1 2])

Figure contains an axes. The axes contains 17 objects of type line, text.

Определите своп с помощью swapbyzero функция.

Settle = datenum('08-Jun-2010');
RateSpec = intenvset('Rates', [.005 .0075 .01 .014 .02 .025 .03]',...
'StartDates',Settle, 'EndDates',{'08-Dec-2010','08-Jun-2011',...
'08-Jun-2012','08-Jun-2013','08-Jun-2015','08-Jun-2017',...
'08-Jun-2020'}');
Maturity = datenum('15-Sep-2020');
LegRate = [.025 50];
LegType = [1 0]; % fixed/floating
LatestFloatingRate = .005;
[Price, SwapRate, AI, RecCF, RecCFDates, PayCF,PayCFDates] = ...
swapbyzero(RateSpec, LegRate, Settle, Maturity,'LegType',LegType,...
'LatestFloatingRate',LatestFloatingRate)
Price = -6.7258
SwapRate = NaN
AI = 1.4575
RecCF = 1×12

   -1.8219    2.5000    2.5000    2.5000    2.5000    2.5000    2.5000    2.5000    2.5000    2.5000    2.5000  102.5000

RecCFDates = 1×12

      734297      734396      734761      735127      735492      735857      736222      736588      736953      737318      737683      738049

PayCF = 1×12

   -0.3644    0.5000    1.4048    1.9823    2.8436    3.2842    3.8218    4.1733    4.5164    4.4666    4.8068  104.6743

PayCFDates = 1×12

      734297      734396      734761      735127      735492      735857      736222      736588      736953      737318      737683      738049

Определите CFlowDates и CFlowAmounts для свопа и сгенерировать график денежного потока с помощью cfplot.

CFlowDates = [PayCFDates;RecCFDates];
CFlowAmounts = [-PayCF;RecCF];
cfplot(CFlowDates, CFlowAmounts, 'Groups', {[1 2]});
xlabel('Numeric Cash Flow Dates');

Figure contains an axes. The axes contains 6 objects of type line.

Входные параметры

свернуть все

Матрица серийных номеров дат или массивов datetime для денежных потоков, заданная как NINST-by- (Number of cash flows) матрица дат денежного потока в номерах дат с пустыми записями, заполненными NaNс.

Каждая строка CFlowDates матрица представляет инструмент так, что CFlowDates(k,:) - вектор дат денежного потока для kКИПиА. Строки заполнены конечными NaNs, если количество денежных потоков отличается для всех инструментов.

cfamounts может использоваться для генерации CFlowDates.

Типы данных: double

Матрица сумм денежного потока, заданная как NINST-by- (Number of cash flows) матрица сумм денежного потока с пустыми записями, заполненными NaNс. The CFlowAmounts матрица должна быть того же размера, что и CFlowDates.

cfamounts может использоваться для генерации CFlowAmounts.

Типы данных: double

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: cfplot(CFlowDates,CFlowAmounts,'Groups',{[2 3]},'ShowAmnt',1,'DateFormat',6,'DateSpacing',100)

Группируйте денежные потоки, заданные как разделенная разделенными запятой парами, состоящая из 'Groups' и следующие значения:

  • 'off' - Показать все приборы в одном наборе осей, расположенных сверху вниз.

  • 'individual' - Сгенерируйте подграфики и постройте график каждого прибора на своей оси.

  • GRP - Массив ячеек из групп приборов, {Group1, Group2,... }. Это генерирует подграфики и строит графики каждой группы на каждой оси. При указании {Group1, Group2,... }каждая Группа должна быть взаимоисключающими векторами INSTIndex. Не заданные КИПиА не показаны на сгруппированном графике.

Типы данных: char | cell

Стекли стрелы, находятся ли денежные потоки в том же направлении в тот же день, заданный как разделенная запятой пара, состоящий из 'Stacked' и следующие значения:

  • 'off' - Для всех групп все стрелы начинаются с горизонтальной линии.

  • 'all' - Для всех групп стрел складываются, если денежные потоки находятся в одном направлении в один и тот же день.

  • 'GRPIndex' - Для указанных групп стрел складываются, если денежные потоки находятся в одном направлении в один и тот же день.

Типы данных: char

Показать сумму на стрелах, заданную как разделенная разделенными запятой парами, состоящая из 'ShowAmnt' и следующие значения:

  • 'off' - Скрыть суммы денежного потока на стрелах.

  • 'all' - Показать суммы денежного потока на стрелах.

  • [INSTIndex или GRPIndex] - Показать суммы денежного потока для заданного вектора инструментов (когда 'Groups' является 'off') или группы.

Типы данных: char | cell

Управление интервалом данных, заданное как разделенная разделенными запятой парами, состоящая из 'DateSpacing' и следующие значения:

  • 'off' - Метки даты разнесены регулярно.

  • TickDateSpace - Метки даты ставятся на фактические даты денежного потока. Такты пропускают некоторые денежные потоки, если они меньше TickDateSpace отдельно.

Типы данных: char | double

Формат даты, заданный как разделенная разделенными запятой парами, состоящая из 'DateFormat' и следующие значения:

  • 'off' - Метки деления на оси даты указаны в номерах дат.

  • DateFormNum - Номер формата даты (2 = 'mm/dd/yy', 6 = 'mm/dd', и 10 = 'yyyy'). Дополнительные значения для DateFormNum являются следующими:

    DateFormNumПример
    2 03/01/00
    3Март
    503
    603/01
    701
    8В среду
    9W
    102000
    1100
    12Mar00
    171 квартал 00
    18Q1
    1901/03
    2001/03/00
    271 квартал 2000
    28Mar2000
    292000–03–01

Типы данных: char | double

Выходные аргументы

свернуть все

Указатели на объекты линий, возвращенные как NINST-by- 3 матрица указателей на объекты, содержащая [hLines, hUArrowHead, hDArrowHead] где:

  • hLines - Горизонтальные и вертикальные линии, используемые в схеме денежного потока

  • hUArrowHead - Стрелки «Вверх»

  • hDArrowHead - стрелки «Вниз»

Указатели на оси для графика или подграфиков, возвращенные как a (Number of axes) -by- 1 вектор указателей на оси.

Введенный в R2013a