FloatBond

FloatBond объект прибора

Описание

Создайте и оцените FloatBond объект инструмента, использующий этот рабочий процесс:

  1. Использовать fininstrument для создания FloatBond объект прибора.

  2. Использование ratecurve для задания модели кривой для FloatBond прибора.

  3. Использовать finpricer для задания Discount метод ценообразования для FloatBond прибора.

Дополнительные сведения об этом рабочем процессе см. в разделе Запуске с рабочими процессами с использованием объектной среды для ценообразования финансовых инструментов.

Для получения дополнительной информации о доступных моделях и методах ценообразования для FloatBond инструмент, см. «Выбор инструментов», «Модели» и «Цены».

Создание

Описание

пример

FloatBondObj = fininstrument(InstrumentType,'Spread',spread_value,'Maturity',maturity_date) создает FloatBond объект путем определения InstrumentType и устанавливает свойства для необходимых аргументов пары "имя-значение" Spread и Maturity.

The FloatBond инструмент поддерживает ванильную ноту плавающей скорости и амортизирующую ноту плавающей скорости. Для получения дополнительной информации см. «Примечание с плавающей скоростью».

пример

FloatBondObj = fininstrument(___,Name,Value) устанавливает необязательные свойства с помощью дополнительных пар "имя-значение" в дополнение к необходимым аргументам в предыдущем синтаксисе. Для примера, FloatBondObj = fininstrument("FloatBond",'Spread',0.6,'Maturity',datetime(2019,1,30),'Basis',1,'Principal',100,'FirstCouponDate',datetime(2016,1,30),'EndMonthRule',true,'Name',"float_bond_instrument") создает FloatBond инструмент со спредом 0,6 и зрелостью 30 января 2019 года. Можно задать несколько аргументы пары "имя-значение".

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

расширить все

Тип инструмента, заданный как строка со значением "FloatBond" или вектор символов со значением 'FloatBond'.

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

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

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

Пример: FloatBondObj = fininstrument("FloatBond",'Spread',0.6,'Maturity',datetime(2019,1,30),'Basis',1,'Principal',100,'FirstCouponDate',datetime(2016,1,30),'EndMonthRule',true,'Name',"float_bond_instrument")
Требуемая FloatBond Аргументы в виде пар имя-значение

расширить все

Десятичное значение над частотой ссылки, заданное как разделенная запятой пара, состоящее из 'Spread' и скаляр неотрицательная десятичная цифра.

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

Дата погашения, заданная как разделенная разделенными запятой парами, состоящая из 'Maturity' и скалярное значение datetime, серийный номер даты, вектор символов даты или строка даты.

Если вы используете вектор символов даты или строку даты, формат должен быть распознаваемым datetime потому что Maturity свойство сохранено как datetime.

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

Необязательные FloatBond Аргументы в виде пар имя-значение

расширить все

Частота платежей в год, заданная как разделенная разделенными запятой парами, состоящая из 'Reset' и скалярное целое число. Значения для Reset являются: 1, 2, 3, 4, 6, или 12.

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

Базис отсчета дней, заданный как разделенная разделенными запятой парами, состоящая из 'Basis' и скаляр целое число с использованием одного из следующих значений:

  • 0 - факт/факт

  • 1 - 30/360 (SIA)

  • 2 - факт/360

  • 3 - фактический/365

  • 4 - 30/360 (PSA)

  • 5 - 30/360 (ISDA)

  • 6 - 30/360 (европейский)

  • 7 - фактический/365 (японский)

  • 8 - факт/факт (ICMA)

  • 9 - факт/360 (ICMA)

  • 10 - факт/365 (ICMA)

  • 11 - 30/360E (ICMA)

  • 12 - факт/365 (ISDA)

  • 13 - BUS/252

Для получения дополнительной информации см. раздел Базиса.

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

Условная сумма основной суммы или график основного значения, заданный как разделенная разделенными запятой парами, состоящая из 'Principal' и скаляр число или расписание.

Principal принимает timetable, где первый столбец является датами, а второй - связанным условным основным значением. Дата указывает на последний день действия основного значения.

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

Кривая ставки для прогнозирования плавающих денежных потоков, заданная как разделенная разделенными запятой парами, состоящая из 'ProjectionCurve' и a ratecurve объект. Вы должны создать этот объект используя ratecurve.

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

Задержка в настройке скорости, заданная как разделенная разделенными запятой парами, состоящая из 'ResetOffset' и скалярным числом.

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

Последняя плавающая ставка для FloatBond объект, заданный как разделенная разделенными запятой парами, состоящая из 'LatestFloatingRate' и скалярным десятичным числом.

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

Флаг для корректировки денежных потоков на основе фактического количества дней периода, заданный как разделенная разделенными запятой парами, состоящая из 'DaycountAdjustedCashFlow' и скаляр логический со значением true или false.

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

Соглашения о рабочих днях, заданные как разделенная разделенными запятой парами, состоящая из 'BusinessDayConvention' и скалярную строку или вектор символов. Выбор для соглашения о рабочих днях определяет, как обрабатываются дни небизнеса. Дни небизнеса определяются как выходные дни плюс любая другая дата, когда предприятия не открыты (для примера, уставных праздников). Значения:

  • "actual" - Дни небизнеса эффективно игнорируются. Денежные потоки, которые приходятся на дни небизнеса, считаются распределенными на фактическую дату.

  • "follow" - Денежные потоки, которые приходятся на день небизнеса, принимаются распределенными на следующий рабочий день.

  • "modifiedfollow" - Денежные потоки, которые приходятся на день небизнеса, принимаются распределенными на следующий рабочий день. Однако если следующий рабочий день находится в другом месяце, то вместо этого принимается предыдущий рабочий день.

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

  • "modifiedprevious" - Денежные потоки, которые приходятся на день небизнеса, принимаются распределенными в предыдущий рабочий день. Однако, если предыдущий рабочий день находится в другом месяце, вместо этого принимается следующий рабочий день.

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

Праздничные дни, используемые в вычислении рабочих дней, заданные как разделенная разделенными запятой парами, состоящая из 'Holidays' и дат с использованием datetimes, серийных номеров дат, массива ячеек векторов символов дат или строковых массивов дат. Для примера:

H = holidays(datetime('today'),datetime(2025,12,15));
FloatBondObj = fininstrument("floatbond",'Spread',100,'Maturity',datetime(2025,12,15),'Holidays',H)

Типы данных: double | cell | datetime | string

Флаг правила конца месяца для генерации дат при Maturity - дата конца месяца для месяца с 30 или менее дней, заданная как разделенная разделенными запятой парами, состоящая из 'EndMonthRule' и скаляр логическое значение true или false.

  • Если вы задаете EndMonthRule на falseпрограммное обеспечение игнорирует правило, означающее, что дата платежа всегда является одним и тем же числовым днем месяца.

  • Если вы задаете EndMonthRule на trueпрограммное обеспечение устанавливает правило, означающее, что дата платежа всегда является последним фактическим днем месяца.

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

Дата выпуска облигации, заданная как разделенная разделенными запятой парами, состоящая из 'IssueDate' и скалярное значение datetime, серийный номер даты, вектор символов даты или строка даты.

Если вы используете вектор символов даты или строку даты, формат должен быть распознаваемым datetime потому что IssueDate свойство сохранено как datetime.

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

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

Когда FirstCouponDate и LastCouponDate оба заданы, FirstCouponDate имеет приоритет при определении структуры купонного платежа. Если вы не задаете FirstCouponDateДаты платежа денежного потока определяются из других входов.

Если вы используете вектор символов даты или строку даты, формат должен быть распознаваемым datetime потому что FirstCouponDate свойство сохранено как datetime.

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

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

Если вы задаете LastCouponDate но не FirstCouponDate, LastCouponDate определяет купонную структуру облигации. Купонная структура облигации усечена на LastCouponDate, независимо от того, где он падает, и сопровождается только датой движения денежных средств по облигации со сроком погашения. Если вы не задаете LastCouponDateДаты платежа денежного потока определяются из других входов.

Если вы используете вектор символов даты или строку даты, формат должен быть распознаваемым datetime потому что LastCouponDate свойство сохранено как datetime.

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

Дата начала пересчета платежей, заданная как разделенная разделенными запятой парами, состоящая из 'StartDate' и скалярное значение datetime, серийный номер даты, вектор символов или строка даты.

Если вы используете вектор символов даты или строку даты, формат должен быть распознаваемым datetime потому что StartDate свойство сохранено как datetime.

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

Определяемое пользователем имя инструмента, заданное как разделенная разделенными запятой парами, состоящая из 'Name' и скалярную строку или вектор символов.

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

Свойства

расширить все

Количество базисных точек над частотой ссылки, возвращаемое как скаляр неотрицательная цифра.

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

Дата погашения, возвращенная как datetime.

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

Купоны в год, возвращаются в виде скалярного целого числа.

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

Базис отсчета дней, возвращенный как скалярное целое число.

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

Условная основная сумма или расписания основных значений, возвращенные в виде скалярного числа или расписания.

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

Кривая ставки для использования при прогнозировании будущих денежных потоков, возвращаемая как ratecurve объект.

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

Задержка в настройке скорости, возвращенная в виде скалярного числа.

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

Последняя плавающая ставка для FloatBond, возвращенный как скалярный десятичный.

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

Флаг для корректировки денежных потоков на основе фактического количества дней периода, возвращаемый как скалярный логический со значением true или false.

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

Соглашения о рабочих днях, возвращенные как строка

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

Праздничные дни, используемые в вычислении рабочих дней, возвращенные как datetimes.

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

Флаг правила конца месяца для генерации дат при Maturity - дата конца месяца для месяца с 30 или менее дней, возвращаемая как скаляр логическая.

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

Дата выпуска облигаций, возвращенная как datetime.

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

Нерегулярная дата первого купона, возвращенная как datetime.

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

Нерегулярная дата последнего купона, возвращенная как datetime.

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

Форвардная дата начала платежей, возвращенная как datetime.

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

Определяемое пользователем имя инструмента, возвращаемое как строка.

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

Функции объекта

cashflowsВычисляет денежный поток для FixedBond, FloatBond, Swap, FRA, или Deposit инструмент

Примеры

свернуть все

Этот пример показывает рабочий процесс, чтобы оценить ваниль FloatBond инструмент, когда вы используете ratecurve и a Discount метод ценообразования.

Создание FloatBond Объект прибора

Использование fininstrument создать ванильную FloatBond объект прибора.

FloatB = fininstrument("FloatBond",'Maturity',datetime(2022,9,15),'Spread',0.025,'Reset',2,'Basis',1,'Principal',100,'EndMonthRule',false,'Name',"float_bond_instrument")
FloatB = 
  FloatBond with properties:

                      Spread: 0.0250
             ProjectionCurve: [0x0 ratecurve]
                 ResetOffset: 0
                       Reset: 2
                       Basis: 1
                EndMonthRule: 0
                   Principal: 100
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
          LatestFloatingRate: NaN
                    Holidays: NaT
                   IssueDate: NaT
             FirstCouponDate: NaT
              LastCouponDate: NaT
                   StartDate: NaT
                    Maturity: 15-Sep-2022
                        Name: "float_bond_instrument"

Создание ratecurve Объект

Создайте ratecurve объект, использующий ratecurve.

Settle = datetime(2018,9,15);
Type = 'zero';
ZeroTimes = [calmonths(6) calyears([1 2 3 4 5 7 10 20 30])]';
ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307]';
ZeroDates = Settle + ZeroTimes;
 
myRC = ratecurve('zero',Settle,ZeroDates,ZeroRates)
myRC = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 0
                Dates: [10x1 datetime]
                Rates: [10x1 double]
               Settle: 15-Sep-2018
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создание Discount Объект прейскуранта

Использование finpricer для создания Discount и используйте объект pricer ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".

outPricer = finpricer("Discount",'DiscountCurve',myRC)
outPricer = 
  Discount with properties:

    DiscountCurve: [1x1 ratecurve]

Ценовые FloatBond Инструмент

Использование price вычислить цену и чувствительность для ванильного FloatBond прибора.

[Price, outPR] = price(outPricer, FloatB,["all"])
Price = 109.8322
outPR = 
  priceresult with properties:

       Results: [1x2 table]
    PricerData: []

outPR.Results
ans=1×2 table
    Price       DV01  
    ______    ________

    109.83    0.021976

Этот пример показывает рабочий процесс для оценки амортизации FloatBond инструмент, когда вы используете ratecurve и a Discount метод ценообразования.

Создание ratecurve Объект

Создайте ratecurve объект, использующий ratecurve.

Settle = datetime(2018,1,1);
ZeroTimes = calyears(1:10)';
ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307]';
ZeroDates = Settle + ZeroTimes;
Compounding = 1;
ZeroCurve = ratecurve("zero",Settle,ZeroDates,ZeroRates, "Compounding",Compounding);

Создание FloatBond Объект прибора

Использование fininstrument для создания амортизирующего FloatdBond объект прибора.

Maturity = datetime(2024,1,1);
Spread = 0.02;
Reset = 1;
ADates = datetime([2020,1,1 ; 2024,1,1]);
APrincipal = [100; 80];
Principal = timetable(ADates,APrincipal);
Floatamort = fininstrument("FloatBond",'Maturity',Maturity,'Spread',Spread,'Reset',Reset,'ProjectionCurve',ZeroCurve,'Principal',Principal)
Floatamort = 
  FloatBond with properties:

                      Spread: 0.0200
             ProjectionCurve: [1x1 ratecurve]
                 ResetOffset: 0
                       Reset: 1
                       Basis: 0
                EndMonthRule: 1
                   Principal: [2x1 timetable]
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
          LatestFloatingRate: NaN
                    Holidays: NaT
                   IssueDate: NaT
             FirstCouponDate: NaT
              LastCouponDate: NaT
                   StartDate: NaT
                    Maturity: 01-Jan-2024
                        Name: ""

Создание Discount Объект прейскуранта

Использование finpricer для создания Discount и используйте объект pricer ratecurve объект со 'DiscountCurve' аргумент пары "имя-значение".

outPricer = finpricer("Discount",'DiscountCurve',ZeroCurve)
outPricer = 
  Discount with properties:

    DiscountCurve: [1x1 ratecurve]

Ценовые FloatBond Инструмент

Использование price вычислить цену и чувствительность для ванильного FloatBond прибора.

[Price, outPR] = price(outPricer,Floatamort,["all"])
Price = 110.1101
outPR = 
  priceresult with properties:

       Results: [1x2 table]
    PricerData: []

outPR.Results
ans=1×2 table
    Price       DV01  
    ______    ________

    110.11    0.028613

Подробнее о

расширить все

Введенный в R2020a