Main Content

setCallExercisePolicy

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

Description

example

UpdatedInstrumentObject = setCallExercisePolicy(InstrumentObject,exerciseSchedule,exerciseStyle) sets the call exercise policy for a OptionEmbeddedFixedBond, OptionEmbeddedFloatBond, or ConvertibleBond instrument object.

Examples

collapse all

This example shows how to use setCallExercisePolicy 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;
CallSchedule =  timetable(ExerciseDates,Strike,'VariableNames',{'Strike Schedule'}); 

CallableBond = fininstrument("OptionEmbeddedFixedBond",'Maturity',Maturity,...
                              'CouponRate',0.025,'Period',Period, ...
                              'CallSchedule',CallSchedule)
CallableBond = 
  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: [2x1 datetime]
                    PutDates: [0x1 datetime]
                CallSchedule: [2x1 timetable]
                 PutSchedule: [0x0 timetable]
           CallExerciseStyle: "american"
            PutExerciseStyle: [0x0 string]
                        Name: ""

Set the Exercise Style to Bermudan

Use setCallExercisePolicy to define the CallExerciseStyle as Bermudan.

CallableBond = setCallExercisePolicy(CallableBond, CallSchedule, "Bermudan") 
CallableBond = 
  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: [2x1 datetime]
                    PutDates: [0x1 datetime]
                CallSchedule: [2x1 timetable]
                 PutSchedule: [0x0 timetable]
           CallExerciseStyle: "bermudan"
            PutExerciseStyle: [0x0 string]
                        Name: ""

Use setCallExercisePolicy to modify CallSchedule 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)];

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

CallableBond = setCallExercisePolicy(CallableBond, CallSchedule)   
CallableBond = 
  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: [4x1 datetime]
                    PutDates: [0x1 datetime]
                CallSchedule: [4x1 timetable]
                 PutSchedule: [0x0 timetable]
           CallExerciseStyle: "bermudan"
            PutExerciseStyle: [0x0 string]
                        Name: ""

This example shows how to use setCallExercisePolicy 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;
CallSchedule =  timetable(ExerciseDates,Strike,'VariableNames',{'Strike Schedule'}); 

CallableBond = fininstrument("OptionEmbeddedFixedBond",'Maturity',Maturity,...
                              'CouponRate',0.025,'Period',Period, ...
                              'CallSchedule',CallSchedule)
CallableBond=3×1 object
  3x1 OptionEmbeddedFixedBond array with properties:

    CouponRate
    Period
    Basis
    EndMonthRule
    Principal
    DaycountAdjustedCashFlow
    BusinessDayConvention
    Holidays
    IssueDate
    FirstCouponDate
    LastCouponDate
    StartDate
    Maturity
    CallDates
    PutDates
    CallSchedule
    PutSchedule
    CallExerciseStyle
    PutExerciseStyle
    Name

CallableBond.CallExerciseStyle
ans = 
"american"
ans = 
"american"
ans = 
"american"

The CallExerciseStyle is "American" because the fininstrument syntax does not contain a CallExercideStyle specification and there are two exercise dates defined in the CallSchedule.

Set the Exercise Style to Bermudan

Use setCallExercisePolicy to define the CallExerciseStyle as Bermudan for the second (CallableBond(2)) instrument.

CallableBond(2) = setCallExercisePolicy(CallableBond(2), CallSchedule, "Bermudan") 
CallableBond=3×1 object
  3x1 OptionEmbeddedFixedBond array with properties:

    CouponRate
    Period
    Basis
    EndMonthRule
    Principal
    DaycountAdjustedCashFlow
    BusinessDayConvention
    Holidays
    IssueDate
    FirstCouponDate
    LastCouponDate
    StartDate
    Maturity
    CallDates
    PutDates
    CallSchedule
    PutSchedule
    CallExerciseStyle
    PutExerciseStyle
    Name

CallableBond.CallExerciseStyle
ans = 
"american"
ans = 
"bermudan"
ans = 
"american"

Use setCallExercisePolicy to modify CallSchedule 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)];

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

CallableBond(2) = setCallExercisePolicy(CallableBond(2), CallSchedule)
CallableBond=3×1 object
  3x1 OptionEmbeddedFixedBond array with properties:

    CouponRate
    Period
    Basis
    EndMonthRule
    Principal
    DaycountAdjustedCashFlow
    BusinessDayConvention
    Holidays
    IssueDate
    FirstCouponDate
    LastCouponDate
    StartDate
    Maturity
    CallDates
    PutDates
    CallSchedule
    PutSchedule
    CallExerciseStyle
    PutExerciseStyle
    Name

CallableBond.CallExerciseStyle
ans = 
"american"
ans = 
"bermudan"
ans = 
"american"

Input Arguments

collapse all

Instrument object, specified as a previously created OptionEmbeddedFixedBond, OptionEmbeddedFloatBond, or ConvertibleBond object 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

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

Data Types: timetable

Call 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.

Introduced in R2020b