Вычислите цену за инструмент акции с ReplicatingVarianceSwap калькулятор цен
[ вычисляет инструментальную цену и связанную информацию о ценах на основе объекта Price,PriceResult] = price(inpPricer,inpInstrument)inpPricer оценки и инструментальный объект inpInstrument.
[ добавляет дополнительный аргумент, чтобы задать чувствительность.Price,PriceResult] = price(___,inpSensitivity)
ratecurve к ценовому инструменту подкачки отклоненияЭтот пример показывает рабочий процесс, чтобы оценить VarianceSwap инструмент, когда вы используете ratecurve и ReplicatingVarianceSwap метод ценообразования.
Создайте VarianceSwap Инструментальный объект
Используйте fininstrument создать VarianceSwap инструментальный объект.
VarianceSwapInst = fininstrument("VarianceSwap",'Maturity',datetime(2021,5,1),'Notional',150,'StartDate',datetime(2020,5,1),'RealizedVariance',0.05,'Strike',0.1,'Name',"variance_swap_instrument")
VarianceSwapInst =
VarianceSwap with properties:
Notional: 150
RealizedVariance: 0.0500
Strike: 0.1000
StartDate: 01-May-2020
Maturity: 01-May-2021
Name: "variance_swap_instrument"
Создайте ratecurve Объект
Создайте плоский ratecurve объект с помощью ratecurve.
Settle = datetime(2020, 9, 15); 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; Basis = 1; ZeroCurve = ratecurve("zero",Settle,ZeroDates,ZeroRates,'Basis',Basis)
ZeroCurve =
ratecurve with properties:
Type: "zero"
Compounding: -1
Basis: 1
Dates: [10x1 datetime]
Rates: [10x1 double]
Settle: 15-Sep-2020
InterpMethod: "linear"
ShortExtrapMethod: "next"
LongExtrapMethod: "previous"
Создайте ReplicatingVarianceSwap Объект калькулятора цен
Используйте finpricer создать ReplicatingVarianceSwap объект калькулятора цен и использование ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".
Strike = (50:5:135)'; Volatility = [.49;.45;.42;.38;.34;.31;.28;.25;.23;.21;.2;.21;.21;.22;.23;.24;.25;.26]; VolatilitySmile = table(Strike, Volatility); SpotPrice = 100; CallPutBoundary = 100; outPricer = finpricer("ReplicatingVarianceSwap",'DiscountCurve', ZeroCurve, 'VolatilitySmile', VolatilitySmile, ... 'SpotPrice', SpotPrice, 'CallPutBoundary', CallPutBoundary)
outPricer =
ReplicatingVarianceSwap with properties:
DiscountCurve: [1x1 ratecurve]
InterpMethod: "linear"
VolatilitySmile: [18x2 table]
SpotPrice: 100
CallPutBoundary: 100
Цена VarianceSwap Инструмент
Используйте price вычислить цену и справедливое отклонение для VarianceSwap инструмент.
[Price, outPR] = price(outPricer,VarianceSwapInst,["all"])Price = 8.1997
outPR =
priceresult with properties:
Results: [1x2 table]
PricerData: [1x1 struct]
outPR.Results
ans=1×2 table
Price FairVariance
______ ____________
8.1997 0.21701
outPR.PricerData.ReplicatingPortfolio
ans=19×6 table
CallPut Strike Volatility Weight Value Contribution
_______ ______ __________ __________ _______ ____________
"put" 50 0.49 0.0064038 0.39164 0.002508
"put" 55 0.45 0.0052877 0.49353 0.0026097
"put" 60 0.42 0.0044402 0.67329 0.0029895
"put" 65 0.38 0.0037814 0.80343 0.0030381
"put" 70 0.34 0.0032592 0.9419 0.0030698
"put" 75 0.31 0.0028382 1.223 0.0034711
"put" 80 0.28 0.0024938 1.58 0.0039403
"put" 85 0.25 0.0022086 2.0456 0.0045177
"put" 90 0.23 0.0019696 2.9221 0.0057554
"put" 95 0.21 0.0017675 4.1406 0.0073183
"put" 100 0.2 0.00082405 6.1408 0.0050603
"call" 100 0.2 0.00077087 6.4715 0.0049887
"call" 105 0.21 0.0014465 4.7094 0.0068119
"call" 110 0.21 0.0013178 3.1644 0.0041701
"call" 115 0.22 0.0012056 2.307 0.0027814
"call" 120 0.23 0.0011072 1.7127 0.0018962
⋮
inpPricer — Объект PricerReplicatingVarianceSwap объектОбъект Pricer в виде скалярного ReplicatingVarianceSwap объект калькулятора цен. Использование finpricer создать ReplicatingVarianceSwap объект калькулятора цен.
Типы данных: object
inpInstrument — Объект InstrumentVarianceSwap объектОбъект Instrument в виде VarianceSwap инструментальный объект. Использование fininstrument создать VarianceSwap инструментальный объект.
Типы данных: object
inpSensitivity — Список чувствительности, чтобы вычислить[ ]
(значение по умолчанию) | массив строк со значениями "Price" и 'All' | массив ячеек из символьных векторов со значениями 'Price' и 'All'(Необязательно) Список чувствительности, чтобы вычислить в виде NOUT- 1 или 1- NOUT массив ячеек из символьных векторов или массив строк с возможными значениями 'Price' и 'All'.
inpSensitivity = {'All'} или inpSensitivity = ["All"] указывает, что выходом является Price. Это совпадает с определением inpSensitivity включать каждую чувствительность.
Пример: inpSensitivity = {'price'}
Типы данных: string | cell
Price — Инструментальная ценаИнструментальная цена, возвращенная как числовое.
PriceResult — Ценовой результатPriceResult объектЦеновой результат, возвращенный как PriceResult объект. Объект имеет следующие поля:
PriceResult.Results — Таблица результатов, которая включает:
Price — Значение цены подкачки числового скаляра
FairVariance — Числовое справедливое отклонение в десятичных числах
PriceResult.PricerData.ReplicatingPortfolio — Таблица, содержащая данные о калькуляторе цен
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.