Main Content

setPutExercisePolicy

Set put exercise policy for OptionEmbeddedFixedBond, OptionEmbeddedFloatBond, or ConvertibleBond instrument

Since R2020b

Description

Examples

collapse all

This example shows how to use setPutExercisePolicy to maintain consistency between the exercise schedule and exercise style when using a OptionEmbeddedFixedBond instrument object.

Create OptionEmbeddedFixedBond Instrument Object

Use fininstrument to create an OptionEmbeddedFixedBond instrument object with different exercise styles.

Maturity = datetime(2024,1,1);
Strike = [100;100];
ExerciseDates = [datetime(2020,1,1); datetime(2024,1,1)];
Period = 1;
PutSchedule =  timetable(ExerciseDates,Strike,'VariableNames',{'Strike Schedule'}); 

PuttableBond = fininstrument("OptionEmbeddedFixedBond",'Maturity',Maturity,...
                              'CouponRate',0.025,'Period',Period, ...
                              'PutSchedule',PutSchedule)
PuttableBond = 
  OptionEmbeddedFixedBond with properties:

                  CouponRate: 0.0250
                      Period: 1
                       Basis: 0
                EndMonthRule: 1
                   Principal: 100
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
                    Holidays: NaT
                   IssueDate: NaT
             FirstCouponDate: NaT
              LastCouponDate: NaT
                   StartDate: NaT
                    Maturity: 01-Jan-2024
                   CallDates: [0x1 datetime]
                    PutDates: [2x1 datetime]
                CallSchedule: [0x0 timetable]
                 PutSchedule: [2x1 timetable]
           CallExerciseStyle: [0x0 string]
            PutExerciseStyle: "american"
                        Name: ""

Set Exercise Style to Bermudan

Use setPutExercisePolicy to define PutExerciseStyle as Bermudan.

PuttableBond = setPutExercisePolicy(PuttableBond, PutSchedule, "Bermudan") 
PuttableBond = 
  OptionEmbeddedFixedBond with properties:

                  CouponRate: 0.0250
                      Period: 1
                       Basis: 0
                EndMonthRule: 1
                   Principal: 100
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
                    Holidays: NaT
                   IssueDate: NaT
             FirstCouponDate: NaT
              LastCouponDate: NaT
                   StartDate: NaT
                    Maturity: 01-Jan-2024
                   CallDates: [0x1 datetime]
                    PutDates: [2x1 datetime]
                CallSchedule: [0x0 timetable]
                 PutSchedule: [2x1 timetable]
           CallExerciseStyle: [0x0 string]
            PutExerciseStyle: "bermudan"
                        Name: ""

Use setPutExercisePolicy to modify PutSchedule and continue using a Bermudan exercise style.

Strike = [100; 101;102;103];
ExerciseDates = [datetime(2018,1,1);datetime(2020,1,1);datetime(2022,1,1);datetime(2024,1,1)];

PutSchedule =  timetable(ExerciseDates,Strike,'VariableNames',{'Strike Schedule'}); 

PuttableBond = setPutExercisePolicy(PuttableBond, PutSchedule)   
PuttableBond = 
  OptionEmbeddedFixedBond with properties:

                  CouponRate: 0.0250
                      Period: 1
                       Basis: 0
                EndMonthRule: 1
                   Principal: 100
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
                    Holidays: NaT
                   IssueDate: NaT
             FirstCouponDate: NaT
              LastCouponDate: NaT
                   StartDate: NaT
                    Maturity: 01-Jan-2024
                   CallDates: [0x1 datetime]
                    PutDates: [4x1 datetime]
                CallSchedule: [0x0 timetable]
                 PutSchedule: [4x1 timetable]
           CallExerciseStyle: [0x0 string]
            PutExerciseStyle: "bermudan"
                        Name: ""

This example shows how to use setPutExercisePolicy to maintain consistency between the exercise schedule and exercise style when using a OptionEmbeddedFixedBond instrument object with three OptionEmbeddedFixedBond instruments.

Create OptionEmbeddedFixedBond Instrument Object

Use fininstrument to create an OptionEmbeddedFixedBond instrument object for three Option Embedded Fixed Bond instruments with American exercise styles.

Maturity = datetime([2024,1,1 ; 2024,4,1 ; 2024,8,1]);
Strike = [100;100];
ExerciseDates = [datetime(2020,1,1); datetime(2024,1,1)];
Period = 1;
PutSchedule =  timetable(ExerciseDates,Strike,'VariableNames',{'Strike Schedule'}); 

PuttableBond = fininstrument("OptionEmbeddedFixedBond",'Maturity',Maturity,...
                              'CouponRate',0.025,'Period',Period, ...
                              'PutSchedule',PutSchedule)
PuttableBond=3×1 OptionEmbeddedFixedBond array with properties:
    CouponRate
    Period
    Basis
    EndMonthRule
    Principal
    DaycountAdjustedCashFlow
    BusinessDayConvention
    Holidays
    IssueDate
    FirstCouponDate
    LastCouponDate
    StartDate
    Maturity
    CallDates
    PutDates
    CallSchedule
    PutSchedule
    CallExerciseStyle
    PutExerciseStyle
    Name

PuttableBond.PutExerciseStyle
ans = 
"american"
ans = 
"american"
ans = 
"american"

The PutExerciseStyle is "American" because the fininstrument syntax does not contain a PutExercideStyle specification and there are two exercise dates defined in the PutSchedule.

Set Exercise Style to Bermudan

Use setPutExercisePolicy to define PutExerciseStyle as Bermudan for the second (PuttableBond(2)) instrument.

PuttableBond(2) = setPutExercisePolicy(PuttableBond(2), PutSchedule, "Bermudan") 
PuttableBond=3×1 OptionEmbeddedFixedBond array with properties:
    CouponRate
    Period
    Basis
    EndMonthRule
    Principal
    DaycountAdjustedCashFlow
    BusinessDayConvention
    Holidays
    IssueDate
    FirstCouponDate
    LastCouponDate
    StartDate
    Maturity
    CallDates
    PutDates
    CallSchedule
    PutSchedule
    CallExerciseStyle
    PutExerciseStyle
    Name

PuttableBond.PutExerciseStyle
ans = 
"american"
ans = 
"bermudan"
ans = 
"american"

Use setPutExercisePolicy to modify PutSchedule and continue using a Bermudan exercise style.

Strike = [100; 101;102;103];
ExerciseDates = [datetime(2018,1,1);datetime(2020,1,1);datetime(2022,1,1);datetime(2024,1,1)];

PutSchedule =  timetable(ExerciseDates,Strike,'VariableNames',{'Strike Schedule'}); 

PuttableBond(2) = setPutExercisePolicy(PuttableBond(2), PutSchedule)   
PuttableBond=3×1 OptionEmbeddedFixedBond array with properties:
    CouponRate
    Period
    Basis
    EndMonthRule
    Principal
    DaycountAdjustedCashFlow
    BusinessDayConvention
    Holidays
    IssueDate
    FirstCouponDate
    LastCouponDate
    StartDate
    Maturity
    CallDates
    PutDates
    CallSchedule
    PutSchedule
    CallExerciseStyle
    PutExerciseStyle
    Name

PuttableBond.PutExerciseStyle
ans = 
"american"
ans = 
"bermudan"
ans = 
"american"

Input Arguments

collapse all

Instrument object, specified using a previously created OptionEmbeddedFixedBond, OptionEmbeddedFloatBond, or ConvertibleBond instrument object.

Note

If the OptionEmbeddedFixedBond, OptionEmbeddedFloatBond, or ConvertibleBond instrument object is a vector of instruments, you must use setCallExercisePolicy separately with each instrument.

Data Types: object

Put exercise schedule, specified as a timetable. The timetable must contain both the exerciseDate value and Strike information.

Data Types: timetable

Put option exercise style, specified as a scalar string or character vector.

Data Types: string | char

Output Arguments

collapse all

Updated instrument, returned as an object.

Version History

Introduced in R2020b