addInstrument

Добавьте инструмент в портфель инструментов

Описание

пример

outPort = addInstrument(inPort,inInst) добавляет инструмент inInst к портфелю inPort из инструментов ранее созданное использование finportfolio.

пример

outPort = addInstrument(inPort,inInst,inPricer) добавляет инструмент inInst и связанный калькулятор цен inPricer к портфелю inPort из инструментов ранее созданное использование finportfolio.

пример

outPort = addInstrument(___,inQuant) опционально задает номер (inQuant) из добавленных инструментов. Используйте этот синтаксис с любой из комбинаций входных аргументов в предыдущих синтаксисах.

Примеры

свернуть все

Используйте finportfolio создать пустой портфель и затем использовать addInstrument добавить инструменты в портфель.

Создайте FixedBond Инструментальные объекты

Используйте fininstrument создать два FixedBond инструментальные объекты.

FixB1 = fininstrument("FixedBond", 'Maturity',datetime(2022,9,15),'CouponRate',0.045,'Name',"fixed_bond1")
FixB1 = 
  FixedBond with properties:

                  CouponRate: 0.0450
                      Period: 2
                       Basis: 0
                EndMonthRule: 1
                   Principal: 100
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
                    Holidays: NaT
                   IssueDate: NaT
             FirstCouponDate: NaT
              LastCouponDate: NaT
                   StartDate: NaT
                    Maturity: 15-Sep-2022
                        Name: "fixed_bond1"

FixB2 = fininstrument("FixedBond", 'Maturity',datetime(2022,9,15),'CouponRate',0.035,'Name',"fixed_bond2")
FixB2 = 
  FixedBond with properties:

                  CouponRate: 0.0350
                      Period: 2
                       Basis: 0
                EndMonthRule: 1
                   Principal: 100
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
                    Holidays: NaT
                   IssueDate: NaT
             FirstCouponDate: NaT
              LastCouponDate: NaT
                   StartDate: NaT
                    Maturity: 15-Sep-2022
                        Name: "fixed_bond2"

Создайте 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 Объект калькулятора цен для FixedBond Инструменты

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

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

    DiscountCurve: [1x1 ratecurve]

Добавьте инструменты в finportfolio Объект

Создайте пустой finportfolio объект с помощью finportfolio и затем используйте addInstrument помещать FixedBond инструменты в портфель.

f1 = finportfolio;
f1 = addInstrument(f1,FixB1)
f1 = 
  finportfolio with properties:

    Instruments: [1x1 fininstrument.FixedBond]
        Pricers: [0x1 finpricer.FinPricer]
    PricerIndex: NaN
       Quantity: 1

f1 = addInstrument(f1,FixB2)
f1 = 
  finportfolio with properties:

    Instruments: [2x1 fininstrument.FixedBond]
        Pricers: [0x1 finpricer.FinPricer]
    PricerIndex: [2x1 double]
       Quantity: [2x1 double]

Установите калькулятор цен для портфеля

Используйте setPricer установить калькулятор цен для портфеля и затем использовать pricePortfolio вычислить цену и чувствительность для инструментов в портфеле.

f1 = setPricer(f1,DiscountPricer,[1,2])
f1 = 
  finportfolio with properties:

    Instruments: [2x1 fininstrument.FixedBond]
        Pricers: [1x1 finpricer.Discount]
    PricerIndex: [2x1 double]
       Quantity: [2x1 double]

[PortPrice,InstPrice,PortSens,InstSens] = pricePortfolio(f1)
PortPrice = 224.0834
InstPrice = 2×1

  114.0085
  110.0749

PortSens=1×2 table
    Price       DV01  
    ______    ________

    224.08    0.084139

InstSens=2×2 table
                   Price       DV01  
                   ______    ________

    fixed_bond1    114.01     0.04251
    fixed_bond2    110.07    0.041629

Используйте finportfolio создать пустой портфель и затем использовать addInstrument добавить несколько инструментов в портфель.

Создайте FixedBond Инструментальные объекты

Используйте fininstrument создать два FixedBond инструмент возражает каждому с двумя инструментами.

FixB1 = fininstrument("FixedBond", 'Maturity',datetime([2022,9,15 ; 2022,10,15]),'CouponRate',0.045,'Name',"fixed_bond1")
FixB1=2×1 object
  2x1 FixedBond array with properties:

    CouponRate
    Period
    Basis
    EndMonthRule
    Principal
    DaycountAdjustedCashFlow
    BusinessDayConvention
    Holidays
    IssueDate
    FirstCouponDate
    LastCouponDate
    StartDate
    Maturity
    Name

FixB2 = fininstrument("FixedBond", 'Maturity',datetime([2022,11,15 ; 2022,12,15]),'CouponRate',0.035,'Name',"fixed_bond2")
FixB2=2×1 object
  2x1 FixedBond array with properties:

    CouponRate
    Period
    Basis
    EndMonthRule
    Principal
    DaycountAdjustedCashFlow
    BusinessDayConvention
    Holidays
    IssueDate
    FirstCouponDate
    LastCouponDate
    StartDate
    Maturity
    Name

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

Создайте ratecurve объект с помощью ratecurve.

Settle = datetime(2020,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-2020
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создайте Discount Объект калькулятора цен для FixedBond Инструменты

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

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

    DiscountCurve: [1x1 ratecurve]

Добавьте инструменты в finportfolio Объект

Создайте пустой finportfolio объект с помощью finportfolio и затем используйте addInstrument помещать FixedBond инструменты в портфель.

f1 = finportfolio;
f1 = addInstrument(f1,FixB1(1))
f1 = 
  finportfolio with properties:

    Instruments: [1x1 fininstrument.FixedBond]
        Pricers: [0x1 finpricer.FinPricer]
    PricerIndex: NaN
       Quantity: 1

f1 = addInstrument(f1,FixB1(2))
f1 = 
  finportfolio with properties:

    Instruments: [2x1 fininstrument.FixedBond]
        Pricers: [0x1 finpricer.FinPricer]
    PricerIndex: [2x1 double]
       Quantity: [2x1 double]

f1 = addInstrument(f1,FixB2(1))
f1 = 
  finportfolio with properties:

    Instruments: [3x1 fininstrument.FixedBond]
        Pricers: [0x1 finpricer.FinPricer]
    PricerIndex: [3x1 double]
       Quantity: [3x1 double]

f1 = addInstrument(f1,FixB2(2))
f1 = 
  finportfolio with properties:

    Instruments: [4x1 fininstrument.FixedBond]
        Pricers: [0x1 finpricer.FinPricer]
    PricerIndex: [4x1 double]
       Quantity: [4x1 double]

Установите калькулятор цен для портфеля

Используйте setPricer установить калькулятор цен для портфеля и затем использовать pricePortfolio вычислить цены и чувствительность для инструментов в портфеле.

f1 = setPricer(f1,DiscountPricer,[1,2,3,4])
f1 = 
  finportfolio with properties:

    Instruments: [4x1 fininstrument.FixedBond]
        Pricers: [1x1 finpricer.Discount]
    PricerIndex: [4x1 double]
       Quantity: [4x1 double]

[PortPrice,InstPrice,PortSens,InstSens] = pricePortfolio(f1)
PortPrice = 428.2788
InstPrice = 4×1

  107.7226
  108.0156
  106.1642
  106.3765

PortSens=1×2 table
    Price       DV01  
    ______    ________

    428.28    0.088272

InstSens=4×2 table
                     Price       DV01  
                     ______    ________

    fixed_bond1      107.72    0.020871
    fixed_bond1_1    108.02    0.021761
    fixed_bond2      106.16    0.022387
    fixed_bond2_1    106.38    0.023253

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

свернуть все

finportfolio объект в виде скалярного finportfolio объект.

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

Объект Instrument добавить к портфелю в виде скалярного инструментального объекта, который ранее создается с помощью fininstrument.

Примечание

Если инструмент возражает для inInst вектор из инструментов, необходимо использовать addInstrument добавить каждый инструмент отдельно.

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

Объект Pricer сопоставил с добавленным инструментальным объектом в виде скалярного объекта калькулятора цен или массива объектов калькулятора цен, которые ранее создаются с помощью finpricer.

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

Количество инструментов в виде числового скаляра. Используйте положительное значение для длинной позиции и отрицательную величину для короткой позиции.

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

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

свернуть все

Обновленный finportfolio, возвращенный как finportfolio объект.

Введенный в R2020a