Obliczanie skumulowanego rozkładu maksymalnego wykorzystania losowego marszu z dryfowaniem

9

Interesuje mnie rozkład maksymalnego wykorzystania losowego marszu: Niech gdzie . Maksymalna po okresach wynosi . Artykuł Magdona-Ismaila i in. glin. daje rozkład maksymalnego wyciągnięcia ruchu Browna z dryfowaniem. Wyrażenie obejmuje nieskończoną sumę, która obejmuje niektóre terminy zdefiniowane tylko pośrednio. Mam problemy z napisaniem implementacji, która jest zbieżna. Czy ktoś jest świadomy alternatywnego wyrażenia CDF lub referencyjnej implementacji w kodzie?X0=0,Xi+1=Xi+Yi+1YiN(μ,1)nmax0ijn(XiXj)

shabbychef
źródło
Jak dokładny tego potrzebujesz? Czy możesz po prostu zasymulować spacer i uniknąć w pełni funkcjonalnych rozwiązań?
kyle
Słuszna uwaga. Nie potrzebuję dokładności na poziomie fizyki atomowej. w rzeczywistości 3 sigfigs są prawdopodobnie w porządku ....
shabbychef
Wymagałoby to około miliona symulowanych losowych spacerów ...
whuber

Odpowiedzi:

4

To jest naprzemienna suma. Każda kolejna para prawie anuluje; takie pary sum ostatecznie zmniejszają się monotonicznie.

Jednym z podejść jest zatem obliczenie sumy parami, gdzie = {1,2}, {3,4}, {5,6} itp. (Takie postępowanie eliminuje również wiele błędów zmiennoprzecinkowych.) Niektóre więcej sztuczek może pomóc:n

(1) Aby rozwiązać dla dodatniej stałej , dobrą początkową wartością do przeszukania - i doskonałym przybliżeniem dla największego pierwiastka - jest . Podejrzewam, że Newton-Raphson powinien działać naprawdę dobrze.tan(t)=t/ααntht=(n+1/2)πα(n+1/2)π

(2) Po niewielkiej liczbie początkowych warunków sumy par zaczynają się bardzo, bardzo konsekwentnie zmniejszać. Logarytmy wartości bezwzględnych par rozmieszczonych wykładniczo szybko zmniejszają się prawie liniowo. Oznacza to, że można interpolować między bardzo małą liczbą obliczonych sum par, aby oszacować wszystkie sumy, których nie obliczono. Na przykład, obliczając wartości tylko dla par (2,3), (4,5), (8,9), (16,17), ..., (16384, 16385) i konstruując dla nich wielomian interpolujący (uważane za wartości funkcji w 1, 2, ..., 14) i przy użyciu argumentówh=μ=σ=1, Udało mi się osiągnąć sześciocyfrową precyzję w przypadku najgorszych błędów. (Jeszcze ładniej, błędy oscylują w znaku, co sugeruje, że dokładność sumowanych interpolowanych wartości może być nieco lepsza niż sześć cyfr.) Prawdopodobnie można oszacować sumę ograniczającą do dobrej precyzji, ekstrapolując liniowo poza koniec tych wartości (co przekłada się na prawo mocy) i integrowanie funkcji ekstrapolacji do nieskończoności. Do wykonania tego przykładowego obliczenia potrzebny jest również pierwszy termin. Daje to sześciocyfrową precyzję za pomocą tylko 29 wyliczeń w podsumowaniu.

(3) Zauważ, że funkcja naprawdę zależy od i , a nie od wszystkich trzech z tych zmiennych niezależnie. Zależność od jest słaba (jak powinna być); możesz być zadowolony, aby ustalić jego wartość we wszystkich swoich obliczeniach.h/σμ/σT

(4) Oprócz tego rozważ zastosowanie niektórych metod przyspieszania szeregu , takich jak metoda Aitkena . Dobre rozliczenie tego pojawia się w Przepisach numerycznych .

Dodany

(5) Możesz oszacować ogon sumy za pomocą całki. Po napisaniu , równanie (z ) dla , który jest mały, a następnie dla przez podstawienie z powrotem. Rozszerzenie stycznej do szeregu Taylora w daje przybliżone rozwiązanieθn=(n+1/2)π1/tntan(θn)=θn/αα=μh/σ2tnθntn

θn=zαzα2α3/3z3+O((αn)5)

gdzie .z=(n+1/2)π

Pod warunkiem, że jest wystarczająco duży, wykładnicze czynniki postaci stają się bardzo bliskie 1, więc możesz je zaniedbać. Zazwyczaj te terminy można pominąć nawet dla małych ponieważ to , co powoduje, że pierwsza wykładnicza wartość bardzo szybko do zera. (Dzieje się tak, gdy znacznie przekracza . Wykonaj obliczenia dla dużej jeśli możesz!)n1exp(σ2θn2T2h2)exp(μ2T2σ2)nθn2Θ(n2)nα/T1/2T

Użycie tego wyrażenia dla celu zsumowania warunków dla oraz pozwala nam je przybliżyć (gdy wszystkie dymy znikną), ponieważθnnn+1

2πn24πn3+13π2+6(43α)α2π3n4+O(1n5).

Zastąpienie sumy rozpoczynającej się od całką przez rozpoczynającą się od przybliża ogon. (Całka musi zostać pomnożona przez wspólny współczynnik .) Błąd w całce wynosi . Tak więc, aby osiągnąć trzy znaczące liczby, zwykle trzeba obliczyć około ośmiu warunków w sumie, a następnie dodać to przybliżenie ogona.n=2NNN1/4exp(α)O(1/n4)

Whuber
źródło
1
to jest naprawdę świetne i powinno przejść długą drogę w kierunku CDF. Materiał na znaczek „Above and Beyond”.
shabbychef
2

Możesz zacząć od spojrzenia na funkcje dystrybucji wypłat w fBasics . Możesz więc łatwo symulować ruch Browna z dryfowaniem i zastosować te funkcje na początek.

Shane
źródło
+1 To dość bezpośrednia odpowiedź, biorąc pod uwagę, że te funkcje implementują formuły w gazecie!
whuber
Wygląda na to, że ten pakiet oblicza oczekiwaną maksymalną wypłatę na podstawie papieru, ale nie oblicza CDF. Artykuł podaje wyniki „skrótu”, IIRC, w celu obliczenia tego oczekiwania.
shabbychef
@shabbychef Przepraszamy, tęskniłem za tą subtelnością. Widzę, jak uzyskanie całego CDF może być bardziej przydatne niż znajomość oczekiwań. (Ryzyko finansowe to znacznie więcej niż tylko oczekiwane straty ...) Ale teraz czuję się trochę lepiej w pracy, którą wykonałem, aby przybliżyć CDF!
whuber