Симулируйте приблизительное решение процесса диффузии перехода Мертона с диагональным дрейфом
[ моделирует 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 (пути проб)1 (один путь коррелированных переменных состояния) (по умолчанию) | положительным целым числомМоделируемые NTrials (пути дискретизации) NPeriods каждый из наблюдений, заданный как разделенная разделенными запятой парами, состоящая из 'NNTrials' и положительное скалярное целое число.
Типы данных: double
'DeltaTimes' - Положительные шаги времени между наблюдениями1 (по умолчанию) | скалярный вектор | столбецПоложительные шаги времени между наблюдениями, заданные как разделенная разделенными запятой парами, состоящая из 'DeltaTimes' и скаляр или NPeriods-by- 1 Вектор-столбец.
DeltaTimes представляет собой знакомые dt, найденные в стохастических дифференциальных уравнениях, и определяет время, в которое сообщаются моделируемые пути переменных выходного состояния.
Типы данных: double
'NSteps' - Количество промежуточных временных шагов в каждом временном шаге1 (без промежуточной оценки) (по умолчанию) | положительным целым числомКоличество промежуточных временных шагов в каждом временном шаге dt (задается как DeltaTimes), заданная как разделенная разделенными запятой парами, состоящая из 'NSteps' и положительное скалярное целое число.
The simBySolution функциональные разделы каждый временной шаг dt в NSteps Подынтервалы длины dt/ NSteps, и уточняет симуляцию путем оценки вектора моделируемого состояния в NSteps − 1 промежуточные точки. Хотя simBySolution не сообщает вектор выходного состояния в этих промежуточных точках, уточнение улучшает точность, позволяя симуляции более точно аппроксимировать базовый процесс непрерывного времени.
Типы данных: double
'Antithetic' - Флаг для использования антитетической выборки для генерации Гауссовых случайных вариацийfalse (без антитетической выборки) (по умолчанию) | логическим со значениями true или falseФлаг для использования антитетической дискретизации, чтобы сгенерировать Гауссовы случайные вариации, которые управляют брауновским вектором движения (процессы Винера), заданным как разделенная запятыми пара, состоящая из 'Antithetic' и скаляр числовой или логический 1 (true) или 0 (false).
Когда вы задаете true, simBySolution выполняет выборку таким образом, чтобы все первичные и антитетические пути моделировались и сохранялись в последовательных совпадающих парах:
Нечетные (1,3,5,...) NTrials соответствуют первичным Гауссовым путям.
Даже NTrials (2,4,6,...) являются совпадающими антитетическими путями каждой пары, выведенными путем отрицания Гауссовских рисунков соответствующего первичного (нечетного) исследования.
Примечание
Если вы задаете входной процесс шума (см Z), simBySolution игнорирует значение Antithetic.
Типы данных: logical
'Z' - Прямая спецификация зависимого процесса случайного шума для генерации вектора броуновского движения Correlation представитель SDE объект (по умолчанию) | функцию | трехмерном массиве зависимых случайных вариацийПрямая спецификация зависимого процесса случайного шума для генерации вектора Броуна (процесс Винера), который управляет симуляцией, заданная как разделенная разделенными запятой парами, состоящая из 'Z' и функцию или (NPeriods * NSteps)-by- NBrowns-by- NNTrials трехмерный массив зависимых случайных вариаций.
Входной параметр Z позволяет вам непосредственно задать процесс генерации шума. Этот процесс имеет приоритет над Correlation параметр входного merton объект и значение Antithetic входной флаг.
В частности, когда Z задан, Correlation не используется явно для генерации Гауссовых вариаций, которые управляют броуновским движением. Однако Correlation по-прежнему используется в выражении, которое появляется в экспоненциальном выражении схемы журнала [X t] Эйлера. Таким образом, вы должны задать Z как коррелированный процесс Гауссова шума, корреляционная структура которого последовательно фиксируется Correlation.
Примечание
Если вы задаете Z как функция, она должна вернуть NBrowns-by- 1 Вектор-столбец, и вы должны вызвать его с двумя входами:
Реальное скалярное время наблюдения t
Система координат NVars-by- 1 вектор состояния Xt
Типы данных: double | function
'N' - Зависимый процесс случайного подсчета для генерации количества переходов merton параметр объекта JumpFreq
(по умолчанию) | трехмерный массив | функциюЗависимый процесс случайного подсчета для генерации количества переходов, заданный как разделенная разделенными запятой парами, состоящая из 'N' и функцию или (NPeriods ⨉ NSteps) -by- NJumps-by- NNTrials трехмерный массив зависимых случайных вариаций. Если вы задаете функцию, N необходимо вернуть NJumps-by- 1 Вектор-столбец, и вы должны вызвать его с двумя входами: реальное скалярное время наблюдения t за которым следует NVars-by- 1 вектор состояния Xt.
Типы данных: double | function
'StorePaths' - Флаг, который указывает, как Paths хранится и возвращаетсяtrue
(по умолчанию) | логическим со значениями true или falseФлаг, который указывает, как выходной массив Paths сохранен и возвращен, заданный как разделенная разделенными запятой парами, состоящая из 'StorePaths' и скаляр числовой или логический 1 (true) или 0 (false).
Если StorePaths является true (значение по умолчанию) или не задано, simBySolution возвращает Paths как трехмерный массив временных рядов.
Если StorePaths является false (логический 0), simBySolution возвращает Paths как пустая матрица.
Типы данных: logical
'Processes' - Последовательность процессов в конце периода или корректировка вектора состояния вида simBySolution не вносит никаких корректировок и не выполняет обработку (по умолчанию) | функцию | массив ячеек функцийПоследовательность процессов в конце периода или корректировок вектора состояния, заданная как разделенная разделенными запятой парами, состоящая из 'Processes' и функция или массив ячеек функций вида
simBySolution применяет функции обработки в конце каждого периода наблюдения. Эти функции должны принять текущее время наблюдения t а вектор текущего состояния X t и вернуть вектор состояния, который может быть корректировкой входа состояния.
Система на конец периода Processes аргумент позволяет вам завершить указанное испытание раньше. В конце каждого временного шага simBySolution проверяет векторное Xt состояния на все NaN состояние. Таким образом, чтобы сигнализировать о раннем прекращении данного исследования, все элементы векторной Xt состояния должны быть NaN. Этот тест включает пользовательскую Processes функция, чтобы сигнализировать о раннем прекращении испытания и предлагает значительную эффективность преимущества в некоторых ситуациях (для примера, ценообразования снижающихся и выходящих барьерных вариантов).
Если вы задаете несколько функций обработки, simBySolution вызывает функции в том порядке, в котором они появляются в массиве ячеек. Можно использовать этот аргумент, чтобы задать граничные условия, предотвратить отрицательные цены, накопить статистику, построить графики и многое другое.
Типы данных: cell | function
Paths - Моделируемые пути коррелированных переменных состоянияМоделируемые пути коррелированных переменных состояния, возвращенные как (NPeriods + 1)-by- NVars-by- NNTrials трехмерный массив timeseries.
Для данного испытания каждая строка Paths - транспонирование вектора состояния, X t в момент t времени. Когда StorePaths установлено в false, simBySolution возвращает Paths как пустая матрица.
Times - Время наблюдения, сопоставленное с моделируемыми путямиВремя наблюдения, сопоставленное с моделируемыми путями, возвращается как (NPeriods + 1)-by- 1 Вектор-столбец. Каждый элемент Times связана с соответствующей строкой Paths.
Z - Зависимые случайные изменения для генерации брауновского вектора движенияЗависимые случайные изменения для генерации брауновского вектора движения (процессы Винера), которые управляют симуляцией, возвращенной как (NPeriods * NSteps)-by- NBrowns-by- NNTrials трехмерный массив timeseries.
N - Зависимые случайные изменения для генерации вектора процесса подсчета переходовЗависимые случайные изменения для генерации вектора процесса подсчета переходов, возвращенные как (NPeriods ⨉ NSteps)-by- NJumps-by- NNTrials трехмерный массив timeseries.
Методы симуляции позволяют вам задать популярный метод уменьшения отклонения, называемый антитетической выборкой.
Этот метод пытается заменить одну последовательность случайных наблюдений на другую, которая имеет то же ожидаемое значение, но меньшее отклонение. В типичной симуляции Монте-Карло каждый путь выборки является независимым и представляет собой независимое исследование. Однако антитетическая выборка генерирует пути дискретизации в парах. Первый путь пары упоминается как основной путь, а второй как антитетический путь. Любая заданная пара является независимой другими парами, но два пути внутри каждой пары сильно коррелируются. Антитетическая литература часто рекомендует усреднение дисконтированных выплат каждой пары, фактически вдвое сокращая количество NTrials Монте-Карло.
Этот метод пытается уменьшить отклонение путем индуцирования отрицательной зависимости между парными входными выборками, в идеале приводя к отрицательной зависимости между парными выходными выборками. Чем больше степень отрицательной зависимости, тем более эффективен антитетический отбор проб.
The simBySolution функция симулирует вектор состояния, Xt приближения решения диагонального дрейфа диффузионных моделей Мертона перехода закрытой формы. В частности, он применяет подход Эйлера к преобразованной log[Xt] процесс (по формуле Ито). В целом это не является точным решением модели диффузии Мертона перехода, потому что распределения вероятностей моделируемого и истинного векторов состояния идентичны только для кусочно-постоянных параметров.
Эта функция моделирует любые векторные merton процесс формы
Здесь:
Xt является NVars-by- 1 вектор состояний переменных процесса.
B (t, X t) является NVars-by- NVars матрица обобщенных ожидаемых мгновенных показателей возврата.
D(t,Xt) является NVars-by- NVars диагональная матрица, в которой каждый элемент вдоль основной диагонали является соответствующим элементом вектора состояний.
V(t,Xt) является NVars-by- NVars матрица мгновенных уровней волатильности.
dW t является NBrowns-by- 1 Брауновский вектор движения.
Y(t,Xt,Nt) является NVars-by- NJumps матричная функция размера перехода.
dN t является NJumps-by- 1 вектор процесса подсчета.
[1] Аит-Сахалия, Яцин. «Проверка моделей спотового процента в непрерывном времени». Обзор финансовых исследований 9, № 2 (апрель 1996 года): 385-426.
[2] Аит-Сахалия, Яцин. «Плотности переходов для процентной ставки и других нелинейных диффузий». Журнал финансов 54, № 4 (август 1999): 1361-95.
[3] Глассерман, Пол. Методы Монте-Карло в финансовой инженерии. Нью-Йорк: Springer-Verlag, 2004.
[4] Hull, John C. Опции, фьючерсы и другие производные. 7-е изд, Prentice Hall, 2009.
[5] Джонсон, Норман Ллойд, Самуэль Коц и Нараянасвами Балакришнан. Непрерывные одномерные распределения. 2nd ed. Серия Уайли в вероятностной и математической статистике. Нью-Йорк: Уайли, 1995.
[6] Shreve, Steven E. Stochastic Calculus for Finance. Нью-Йорк: Springer-Verlag, 2004.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.