Симулируйте приближенное решение диагонального дрейфа диффузионный процесс скачка Мертона
[
симулирует Paths
,Times
,Z
,N
] = simBySolution(MDL
,NPeriods
)NNTrials
демонстрационные пути NVars
коррелированые переменные состояния управляются NBrowns
Источники броуновского движения риска и NJumps
соедините Пуассоновские процессы, представляющие прибытие важных событий по NPeriods
последовательные периоды наблюдения. Симуляция аппроксимирует непрерывное время диффузионный процесс скачка Мертона приближением решения закрытой формы.
merton
ОбъектСимулируйте приближенное решение диагонального дрейфа процесс Мертона.
Создайте merton
объект.
AssetPrice = 80; Return = 0.03; Sigma = 0.16; JumpMean = 0.02; JumpVol = 0.08; JumpFreq = 2; mertonObj = merton(Return,Sigma,JumpFreq,JumpMean,JumpVol,... 'startstat',AssetPrice)
mertonObj = Class MERTON: Merton Jump Diffusion ---------------------------------------- Dimensions: State = 1, Brownian = 1 ---------------------------------------- StartTime: 0 StartState: 80 Correlation: 1 Drift: drift rate function F(t,X(t)) Diffusion: diffusion rate function G(t,X(t)) Simulation: simulation method/function simByEuler Sigma: 0.16 Return: 0.03 JumpFreq: 2 JumpMean: 0.02 JumpVol: 0.08
Используйте simBySolution
симулировать NTrials
демонстрационные пути NVARS
коррелированые переменные состояния управляются NBrowns
Источники броуновского движения риска и NJumps
соедините Пуассоновские процессы, представляющие прибытие важных событий по NPeriods
последовательные периоды наблюдения. Функция аппроксимирует непрерывное время диффузионный процесс скачка Мертона приближением решения закрытой формы.
nPeriods = 100;
[Paths,Times,Z,N] = simBySolution(mertonObj, nPeriods,'nTrials', 3)
Paths = Paths(:,:,1) = 1.0e+03 * 0.0800 0.0662 0.1257 0.1863 0.2042 0.2210 0.2405 0.3143 0.4980 0.4753 0.4088 0.5627 0.6849 0.6662 0.7172 0.7710 0.6758 0.5528 0.4777 0.6314 0.7290 0.7265 0.6018 0.6630 0.5531 0.5919 0.5580 0.7209 0.8122 0.6494 0.8194 0.7434 0.6887 0.6873 0.7052 0.8532 0.5498 0.4686 0.5445 0.4291 0.5118 0.4138 0.4986 0.4331 0.4687 0.5235 0.4944 0.4616 0.3621 0.4860 0.4461 0.4268 0.4179 0.3913 0.5225 0.4346 0.3433 0.3635 0.3604 0.3736 0.3771 0.4883 0.4785 0.4859 0.5719 0.6593 0.7232 0.8269 0.7894 0.8895 0.9131 0.7396 0.9902 1.4258 1.1410 1.1657 1.2759 1.2797 1.2587 1.5073 1.5914 1.2676 1.5111 1.4698 1.5310 1.0471 1.3415 1.2142 1.3649 1.9905 1.9329 1.5042 1.7000 2.2315 2.6107 2.2992 2.6765 2.7024 1.6837 1.0520 1.1556 Paths(:,:,2) = 80.0000 67.0894 98.3231 108.1133 102.2668 116.5130 92.6337 94.7715 110.7864 125.7798 120.6730 116.9214 106.8356 118.3119 190.3385 228.3806 271.8072 272.0175 306.3696 249.6461 427.2599 310.1494 471.7915 370.6712 426.4875 393.6037 423.9768 436.6450 423.3666 415.2689 578.7237 448.8291 358.5539 314.4588 284.7537 345.2281 379.3241 432.3968 284.6978 428.3203 314.5781 326.2297 236.1605 178.9878 175.8927 177.5584 140.5670 124.3399 111.5921 114.6988 101.7877 72.8823 61.0876 54.7438 53.9104 44.3239 32.8282 35.8978 44.7213 37.6385 34.8707 33.4812 35.0828 37.3844 50.3077 49.7005 41.2006 58.0578 51.8254 42.3636 38.3241 40.1687 35.9465 44.4746 36.3203 31.4723 25.3097 23.4042 14.5024 11.9513 11.7996 13.2874 14.9033 14.9986 14.9639 18.8188 16.5700 17.8684 13.5567 13.5978 11.3215 10.6453 9.9437 10.9639 14.0077 16.5691 12.1943 10.7238 11.5439 9.3313 10.3501 Paths(:,:,3) = 80.0000 79.6896 69.0705 57.4353 54.6468 61.1361 78.0797 104.5536 107.1168 87.1463 54.5801 59.8430 67.0858 74.7163 65.0742 90.0205 70.0329 94.1883 88.2437 100.7302 127.2244 111.4070 81.0410 93.1479 72.5876 74.3940 71.8182 78.4764 90.1952 89.6539 70.3198 50.4493 58.2573 52.1928 67.7723 81.1286 112.6400 108.8060 103.0418 104.3689 120.8792 89.2307 66.3967 76.2541 57.1963 56.8041 40.4475 34.5959 45.2467 44.6159 52.2680 63.3114 69.8554 102.0669 76.8265 84.8615 62.4934 70.3915 54.4665 60.1859 68.3690 73.3205 87.8904 82.7777 94.8760 88.8936 103.9546 103.4198 99.0468 135.2132 117.9348 120.8927 126.9568 120.5084 119.4830 154.8170 165.2276 180.3558 150.8172 155.2828 138.6475 179.8007 158.8069 166.0540 229.0607 253.4962 240.1957 192.3787 225.7069 311.1060 353.6839 463.5303 515.0606 569.4017 488.1785 331.1247 392.7017 379.5234 238.3932 186.9090 209.5703
Times = 101×1
0
1
2
3
4
5
6
7
8
9
⋮
Z = Z(:,:,1) = -1.3077 3.5784 3.0349 0.7147 1.4897 0.6715 1.6302 0.7269 -0.7873 -1.0689 1.4384 1.3703 -0.2414 -0.8649 0.6277 -0.8637 -1.1135 -0.7697 1.1174 0.5525 0.0859 -1.0616 0.7481 -0.7648 0.4882 1.4193 1.5877 0.8351 -1.1658 0.7223 0.1873 -0.4390 -0.8880 0.3035 0.7394 -2.1384 -1.0722 1.4367 -1.2078 1.3790 -0.2725 0.7015 -0.8236 0.2820 1.1275 0.0229 -0.2857 -1.1564 0.9642 -0.0348 -0.1332 -0.2248 -0.8479 1.6555 -0.8655 -1.3320 0.3335 -0.1303 0.8620 -0.8487 1.0391 0.6601 -0.2176 0.0513 0.4669 0.1832 0.3071 0.2614 -0.1461 -0.8757 -1.1742 1.5301 1.6035 -1.5062 0.2761 0.3919 -0.7411 0.0125 1.2424 0.3503 -1.5651 0.0983 -0.0308 -0.3728 -2.2584 1.0001 -0.2781 0.4716 0.6524 1.0061 -0.9444 0.0000 0.5946 0.9298 -0.6516 -0.0245 0.8617 -2.4863 -2.3193 0.4115 Z(:,:,2) = -0.4336 2.7694 0.7254 -0.2050 1.4090 -1.2075 0.4889 -0.3034 0.8884 -0.8095 0.3252 -1.7115 0.3192 -0.0301 1.0933 0.0774 -0.0068 0.3714 -1.0891 1.1006 -1.4916 2.3505 -0.1924 -1.4023 -0.1774 0.2916 -0.8045 -0.2437 -1.1480 2.5855 -0.0825 -1.7947 0.1001 -0.6003 1.7119 -0.8396 0.9610 -1.9609 2.9080 -1.0582 1.0984 -2.0518 -1.5771 0.0335 0.3502 -0.2620 -0.8314 -0.5336 0.5201 -0.7982 -0.7145 -0.5890 -1.1201 0.3075 -0.1765 -2.3299 0.3914 0.1837 -1.3617 -0.3349 -1.1176 -0.0679 -0.3031 0.8261 -0.2097 -1.0298 0.1352 -0.9415 -0.5320 -0.4838 -0.1922 -0.2490 1.2347 -0.4446 -0.2612 -1.2507 -0.5078 -3.0292 -1.0667 -0.0290 -0.0845 0.0414 0.2323 -0.2365 2.2294 -1.6642 0.4227 -1.2128 0.3271 -0.6509 -1.3218 -0.0549 0.3502 0.2398 1.1921 -1.9488 0.0012 0.5812 0.0799 0.6770 Z(:,:,3) = 0.3426 -1.3499 -0.0631 -0.1241 1.4172 0.7172 1.0347 0.2939 -1.1471 -2.9443 -0.7549 -0.1022 0.3129 -0.1649 1.1093 -1.2141 1.5326 -0.2256 0.0326 1.5442 -0.7423 -0.6156 0.8886 -1.4224 -0.1961 0.1978 0.6966 0.2157 0.1049 -0.6669 -1.9330 0.8404 -0.5445 0.4900 -0.1941 1.3546 0.1240 -0.1977 0.8252 -0.4686 -0.2779 -0.3538 0.5080 -1.3337 -0.2991 -1.7502 -0.9792 -2.0026 -0.0200 1.0187 1.3514 -0.2938 2.5260 -1.2571 0.7914 -1.4491 0.4517 -0.4762 0.4550 0.5528 1.2607 -0.1952 0.0230 1.5270 0.6252 0.9492 0.5152 -0.1623 1.6821 -0.7120 -0.2741 -1.0642 -0.2296 -0.1559 0.4434 -0.9480 -0.3206 -0.4570 0.9337 0.1825 1.6039 -0.7342 0.4264 2.0237 0.3376 -0.5900 -1.6702 0.0662 1.0826 0.2571 0.9248 0.9111 1.2503 -0.6904 -1.6118 1.0205 -0.0708 -2.1924 -0.9485 0.8577
N = N(:,:,1) = 1 2 1 0 2 0 1 3 4 2 1 0 1 1 1 1 0 0 3 2 2 1 0 1 1 3 3 4 2 4 1 1 2 0 2 2 3 2 1 3 2 2 1 1 1 3 0 2 2 1 0 1 1 1 1 0 2 2 1 1 6 7 3 2 2 1 3 3 4 3 0 1 7 2 0 5 2 2 1 2 1 3 0 2 5 2 2 4 2 3 1 2 6 1 0 3 3 1 1 3 N(:,:,2) = 2 2 2 0 4 1 2 3 1 2 1 4 2 4 2 2 2 2 1 5 3 1 3 3 1 3 5 1 4 2 2 1 2 1 1 6 0 2 2 3 2 2 1 0 1 5 5 0 1 1 2 1 2 3 2 2 1 2 2 0 3 1 5 3 3 0 2 1 2 0 4 1 3 1 2 2 2 1 0 2 2 2 2 1 1 3 1 2 2 1 4 1 3 3 0 1 1 1 2 3 N(:,:,3) = 3 2 2 1 4 2 3 0 0 4 3 2 3 1 1 1 1 3 4 1 2 3 1 1 1 1 0 3 0 1 0 5 0 2 4 3 1 0 1 4 3 3 2 1 2 3 1 4 4 1 1 2 2 1 1 1 2 1 6 1 2 1 3 2 2 1 3 1 7 0 1 5 1 1 3 4 3 1 2 2 1 2 1 1 1 1 1 2 3 4 2 1 3 2 1 1 0 1 3 0
MDL
— Модель Мертонаmerton
объектМодель Мертона в виде merton
объект. Можно создать merton
объект с помощью merton
.
Типы данных: object
NPeriods
— Количество периодов симуляцииКоличество периодов симуляции в виде положительного скалярного целого числа. Значение NPeriods
определяет количество строк симулированного выходного ряда.
Типы данных: double
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
[Paths,Times,Z,N] = simBySolution(merton,NPeriods,'DeltaTimes',dt,'NNTrials',10)
'NNTrials'
— Симулированный NTrials (демонстрационные пути)
(один путь коррелированых переменных состояния) (значение по умолчанию) | положительное целое числоСимулированный NTrials (демонстрационные пути) NPeriods
наблюдения каждый в виде разделенной запятой пары, состоящей из 'NNTrials'
и положительное скалярное целое число.
Типы данных: double
'DeltaTimes'
— Положительное время постепенно увеличивается между наблюдениями
(значение по умолчанию) | скаляр | вектор-столбецПоложительное время постепенно увеличивается между наблюдениями в виде разделенной запятой пары, состоящей из 'DeltaTimes'
и скаляр или NPeriods
- 1
вектор-столбец.
DeltaTimes
представляет знакомый dt, найденный в стохастических дифференциальных уравнениях, и определяет времена, в которые сообщают о симулированных путях переменных состояния вывода.
Типы данных: double
'NSteps'
— Количество промежуточных временных шагов в течение каждого раза шаг
(указание ни на какую промежуточную оценку) (значение по умолчанию) | положительное целое числоКоличество промежуточных временных шагов в течение каждого раза постепенно увеличивает dt (заданный как DeltaTimes
) в виде разделенной запятой пары, состоящей из 'NSteps'
и положительное скалярное целое число.
simBySolution
функциональные разделы каждый раз постепенно увеличивают dt в NSteps
подынтервалы длины dt/NSteps
, и совершенствовал симуляцию путем оценки симулированного вектора состояния в NSteps − 1
промежуточные точки. Несмотря на то, что simBySolution
не сообщает вектор состояния вывода в этих промежуточных точках, улучшение улучшает точность, позволяя симуляции более тесно аппроксимировать базовый процесс непрерывного времени.
Типы данных: double
'Antithetic'
— Отметьте, чтобы использовать прямо противоположную выборку, чтобы сгенерировать Гауссовы случайные варьируемые величиныfalse
(никакая прямо противоположная выборка) (значение по умолчанию) | логический со значениями true
или false
Отметьте, чтобы использовать прямо противоположную выборку, чтобы сгенерировать Гауссовы случайные варьируемые величины, которые управляют вектором Броуновского движения (винеровские процессы) в виде разделенной запятой пары, состоящей из 'Antithetic'
и скалярный числовой или логический 1
TRUE
) или 0
ложь
).
Когда вы задаете true
, simBySolution
выполняет выборку таким образом, что все первичные и прямо противоположные пути симулированы и сохранены в последовательных парах соответствия:
Нечетный (1,3,5,...)
NTrials соответствуйте первичным Гауссовым путям.
Даже NTrials (2,4,6,...)
соответствующие прямо противоположные пути каждой пары, выведенной путем отрицания Гауссовых ничьих соответствующего первичного (нечетного) испытания.
Примечание
Если вы задаете входной процесс шума (см. Z
), simBySolution
игнорирует значение Antithetic
.
Типы данных: логический
'Z'
— Прямая спецификация зависимого случайного шумового процесса для генерации вектора Броуновского движения Correlation
член SDE
объект (значение по умолчанию) | функционирует | 3D массив зависимых случайных варьируемых величинПрямая спецификация зависимого случайного шумового процесса для генерации вектора Броуновского движения (винеровский процесс), который управляет симуляцией в виде разделенной запятой пары, состоящей из 'Z'
и функция или (NPeriods * NSteps)
- NBrowns
- NNTrials
3D массив зависимых случайных варьируемых величин.
Входной параметр Z
позволяет вам непосредственно задавать шумовой процесс генерации. Этот процесс более приоритетен по сравнению с Correlation
параметр входа merton
возразите и значение Antithetic
введите флаг.
А именно, когда Z
задан, Correlation
явным образом не используется, чтобы сгенерировать Гауссовы варьируемые величины, которые управляют Броуновским движением. Однако Correlation
все еще используется в выражении, которое появляется в экспоненциальном сроке журнала [X t] схема Эйлера. Таким образом необходимо задать Z
как коррелированый Гауссов шумовой процесс, структура корреляции которого последовательно получается Correlation
.
Примечание
Если вы задаете Z
как функция, это должно возвратить NBrowns
- 1
вектор-столбец, и необходимо вызвать его с двумя входными параметрами:
Скалярное время наблюдения с действительным знаком t
NVars
- 1
вектор состояния Xt
Типы данных: double |
function
'N'
— Зависимый случайный процесс подсчета для генерации количества скачков merton
параметр объекта JumpFreq
(значение по умолчанию) | 3D массив | функцияЗависимый случайный процесс подсчета для генерации количества скачков в виде разделенной запятой пары, состоящей из 'N'
и функция или (NPeriods
⨉ NSteps
)-by-NJumps
- NNTrials
3D массив зависимых случайных варьируемых величин. Если вы задаете функцию, N
должен возвратить NJumps
- 1
вектор-столбец, и необходимо вызвать его с двумя входными параметрами: скалярное время наблюдения с действительным знаком t, сопровождаемый NVars
- 1
вектор состояния Xt.
Типы данных: double |
function
'StorePaths'
— Отметьте, который указывает как Paths
хранится и возвратилсяtrue
(значение по умолчанию) | логический со значениями true
или false
Отметьте, который указывает как выходной массив Paths
хранится и возвратился в виде разделенной запятой пары, состоящей из 'StorePaths'
и скалярный числовой или логический 1
TRUE
) или 0
ложь
).
Если StorePaths
true
(значение по умолчанию), или не задано, simBySolution
возвращает Paths
как 3D массив временных рядов.
Если StorePaths
false
(логический 0
), simBySolution
возвращает Paths
как пустая матрица.
Типы данных: логический
'Processes'
— Последовательность процессов конца периода или корректировок вектора состояния формы simBySolution
не вносит корректировок и не выполняет обработки (значение по умолчанию) | функция | массив ячеек функцийПоследовательность процессов конца периода или корректировок вектора состояния в виде разделенной запятой пары, состоящей из 'Processes'
и функциональный или массив ячеек функций формы
simBySolution
применяет функции обработки в конце каждого периода наблюдения. Эти функции должны принять текущее время наблюдения t и вектор текущего состояния X t, и возвратить вектор состояния, который может быть корректировкой состояния ввода.
Конец периода Processes
аргумент позволяет вам отключать данное испытание рано. В конце каждого временного шага, simBySolution
тестирует вектор состояния Xt на все-NaN
условие. Таким образом, чтобы сигнализировать о раннем завершении данного испытания, всех элементах вектора состояния Xt должен быть NaN
. Этот тест включает пользовательский Processes
функционируйте, чтобы сигнализировать о раннем завершении испытания и предложениях значительные выигрыши в производительности в некоторых ситуациях (например, оценивая разоренные барьерные опционы).
Если вы задаете больше чем одну функцию обработки, simBySolution
вызывает функции в порядке, в котором они появляются в массиве ячеек. Можно использовать этот аргумент, чтобы задать граничные условия, предотвратить отрицательные цены, накопить статистику, графики графика и т.д.
Типы данных: cell
| function
Paths
— Симулированные пути коррелированых переменных состоянияСимулированные пути коррелированых переменных состояния, возвращенных как (NPeriods + 1)
- NVars
- NNTrials
3D массив timeseries.
Для данного испытания, каждой строки Paths
транспонирование вектора состояния X t во время t. Когда StorePaths
установлен в false
, simBySolution
возвращает Paths
как пустая матрица.
Times
— Времена наблюдения сопоставлены с симулированными путямиВремена наблюдения сопоставлены с симулированными путями, возвращенными как (NPeriods + 1)
- 1
вектор-столбец. Каждый элемент Times
сопоставлен с соответствующей строкой Paths
.
Z
— Зависимые случайные варьируемые величины для генерации вектора Броуновского движенияЗависимые случайные варьируемые величины для генерации вектора Броуновского движения (винеровские процессы), которые управляют симуляцией, возвратились как (NPeriods * NSteps)
- NBrowns
- NNTrials
3D массив timeseries.
N
— Зависимые случайные варьируемые величины для генерации вектора процесса подсчета скачкаЗависимые случайные варьируемые величины для генерации вектора процесса подсчета скачка, возвращенного как (NPeriods ⨉ NSteps)
- NJumps
- NNTrials
3D массив timeseries.
Методы симуляции позволяют вам указывать, что популярный метод сокращения отклонения вызвал прямо противоположную выборку.
Этот метод пытается заменить одну последовательность случайных наблюдений с другим, который имеет то же ожидаемое значение, но меньшее отклонение. В типичной симуляции Монте-Карло каждый демонстрационный путь независим и представляет независимое испытание. Однако прямо противоположная выборка генерирует демонстрационные пути в парах. Первый путь пары упоминается как первичный путь и второе как прямо противоположный путь. Любая данная пара является независимыми другими парами, но эти два пути в каждой паре высоко коррелируются. Прямо противоположная литература выборки часто рекомендует составить в среднем обесцененные выплаты каждой пары, эффективно деля на два количество Монте-Карло NTrials.
Этот метод пытается уменьшать отклонение путем стимулирования отрицательной зависимости между парными входными выборками, идеально приведения к отрицательной зависимости между парными выходными выборками. Чем больше степень отрицательной зависимости, тем более эффективная прямо противоположная выборка.
simBySolution
функция симулирует вектор состояния Xt приближением решения закрытой формы диагонального дрейфа модели диффузии скачка Мертона. А именно, это применяет Эйлеров подход к преобразованному log
[Xt] процесс (использующий формулу ITO). В общем случае это не точное решение модели диффузии скачка Мертона, потому что вероятностные распределения симулированных и истинных векторов состояния идентичны только для кусочных постоянных параметров.
Эта функция симулирует любой merton
с векторным знаком процесс формы
Здесь:
Xt является NVars
- 1
вектор состояния переменных процесса.
B (t, X t) является NVars
- NVars
матрица обобщенных ожидаемых мгновенных норм прибыли.
D(t,Xt)
NVars
- NVars
диагональная матрица, в которой каждым элементом по основной диагонали является соответствующий элемент вектора состояния.
V(t,Xt)
NVars
- NVars
матрица мгновенных уровней энергозависимости.
dW t является NBrowns
- 1
Вектор броуновского движения.
Y(t,Xt,Nt)
NVars
- NJumps
функция размера скачка с матричным знаком.
dN t является NJumps
- 1
подсчет вектора процесса.
[1] Aït-Sahalia, Yacine. “Тестируя Модели Непрерывного времени Точечной Процентной ставки”. Анализ Финансовых Исследований 9, № 2 (апрель 1996): 385–426.
[2] Aït-Sahalia, Yacine. “Плотность перехода для Процентной ставки и Другой Нелинейной Диффузии”. Журнал Финансов 54, № 4 (август 1999): 1361–95.
[3] Глассермен, Пол. Методы Монте-Карло в финансовой разработке. Нью-Йорк: Springer-Verlag, 2004.
[4] Оболочка, Джон К. Опции, фьючерсы и Другие Производные. 7-й редактор, Prentice Hall, 2009.
[5] Джонсон, Норман Ллойд, Сэмюэль Коц и Нэраянэсвами Бэлэкришнэн. Непрерывные Одномерные распределения. 2-й редактор Вайли Серис в Вероятности и Математической Статистике. Нью-Йорк: Вайли, 1995.
[6] Shreve, Стивен Э. Стохастическое исчисление для финансов. Нью-Йорк: Springer-Verlag, 2004.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.