cfplot

Визуализируйте потоки наличности финансовых инструментов

Синтаксис

cfplot(CFlowDates,CFlowAmounts)
cfplot(___,Name,Value)
h = cfplot(___,Name,Value)
[h,axes_handle] = cfplot(___,Name,Value)

Описание

пример

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;
cfplot(CFlowDates, CFlowAmounts, 'Groups', {[2 3]}, 'ShowAmnt', 1);

Отформатируйте ось даты и метки деления места в фактические даты потока наличности.

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

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

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

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

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');

Задайте 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])

Задайте подкачку с помощью функции 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');

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

свернуть все

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

Каждая строка матрицы CFlowDates представляет инструмент так, чтобы CFlowDates(k,:) был вектором дат потока наличности k th инструмент. Строки дополнены запаздывающим NaN s, если количество потоков наличности не является тем же самым для всех инструментов.

cfamounts может использоваться, чтобы сгенерировать CFlowDates.

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

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

cfamounts может использоваться, чтобы сгенерировать CFlowAmounts.

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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' Для всех групп все стрелки происходят из горизонтальной строки.

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

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

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

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

  • 'off' Скройте суммы потока наличности на стрелках.

  • все Покажите суммы потока наличности на стрелках.

  • [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
    17Q1 00
    18Q1
    1901/03
    2001/03/00
    27Q1–2000
    28Mar2000
    292000–03–01

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

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

свернуть все

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

  • hLines — Горизонтальные и вертикальные строки используются в схеме потока наличности

  • hUArrowHead — Наконечники стрелки

  • hDArrowHead — "Вниз" наконечники стрелки

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

Введенный в R2013a