Симулируйте приближенное решение диагонального дрейфа диффузионный процесс скачка Мертона
[ симулирует 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.