Wykład

Transkrypt

Wykład
Matematyka finansowa w pakiecie Matlab
Wykład 2. Wizualizacja danych giełdowych
Bartosz Ziemkiewicz
Wydział Matematyki i Informatyki UMK
Kurs letni dla studentów studiów zamawianych
na kierunku „Matematyka w ekonomii i finansach”
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
1/44
Akcje — wprowadzenie
Papiery wartościowe (ang. securities) — dokumenty
potwierdzające istnienie określonego prawa majątkowego.
Do najważniejszych papierów wartościowych zaliczane są obligacje
i akcje.
Akcja (ang. stock, share) — dokument stwierdzający udział
posiadacza akcji — akcjonariusza (ang. stockholder, shareholder),
w majątku spółki akcyjnej.
Akcjonariusz ma prawo do uczestniczenia w podziale zysku spółki
oraz ewentualnie w kierowaniu spółką.
Przypadającą na każdą akcję część zysku przeznaczoną do
podziału nazywamy dywidendą (ang. dividend). Wypłata
dywidendy ani jej wysokość nie są gwarantowane. Zależy to od
kondycji finansowej spółki oraz polityki prowadzonej przez jej
władze.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
2/44
Giełda papierów wartościowych
Obrót akcjami odbywa się głównie na giełdach papierów
wartościowych (ang. stock exchange).
Najważniejsze giełdy światowe: amerykańskie NYSE i NASDAQ,
giełda tokijska oraz londyńska.
W Polsce od 1991 roku funkcjonuje Giełda Papierów
Wartościowych w Warszawie (GPW).
Ceny akcji mają tendencje do wspólnych ruchów w górę (hossa)
lub w dół (bessa).
Wygodnym wskaźnikiem ogólnej sytuacji na rynku są indeksy
giełdowe.
Są to średnie arytmetyczne lub ważone wszystkich akcji będących
w obrocie bądź ich reprezentatywnej części.
Najbardziej znane światowe indeksy to: amerykańskie Dow Jones
Industrial Average (DJIA), Nasdaq Composite oraz Standard and
Poor’s 500 (S&P 500), japoński Nikkei 225, brytyjski FTSE 100.
W Polsce najważniejszymi indeksami są WIG i WIG20.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
3/44
Dane giełdowe
STANDARD & POORS 500
O
17-Feb-94
472.79
18-Feb-94
470.29
22-Feb-94
467.69
23-Feb-94
471.48
24-Feb-94
470.65
25-Feb-94
464.33
28-Feb-94
466.07
1-Mar-94
467.19
2-Mar-94
464.4
3-Mar-94
464.81
4-Mar-94
463.03
7-Mar-94
464.74
8-Mar-94
466.92
9-Mar-94
465.94
Bartosz Ziemkiewicz
H
475.13
471.09
471.65
472.41
470.69
466.48
469.16
467.43
464.88
464.83
466.16
468.07
467.79
467.42
L
468.26
466.07
467.58
469.47
464.26
464.26
466.07
462.02
457.67
462.5
462.41
464.74
465.02
463.4
C
470.34
467.69
471.46
470.69
464.26
466.07
467.14
464.44
464.81
463.01
464.74
466.91
465.88
467.06
Matematyka finansowa w pakiecie Matlab
4/44
Dane giełdowe
<TICKER>,<DTYYYYMMDD>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>
APATOR,19970424,3.41,3.41,3.41,3.41,930600
APATOR,19970425,3.27,3.27,3.27,3.27,437250
APATOR,19970428,2.96,2.96,2.96,2.96,210386
APATOR,19970429,2.73,2.73,2.73,2.73,868263
APATOR,19970430,2.88,2.88,2.88,2.88,368346
APATOR,19970505,2.86,2.86,2.86,2.86,716221
APATOR,19970506,3.05,3.05,3.05,3.05,871794
APATOR,19970507,3.03,3.03,3.03,3.03,433389
APATOR,19970508,3.13,3.13,3.13,3.13,385330
APATOR,19970509,3.29,3.29,3.29,3.29,375122
APATOR,19970512,3.38,3.38,3.38,3.38,518947
APATOR,19970513,3.40,3.40,3.40,3.40,352649
APATOR,19970514,3.18,3.18,3.18,3.18,184327
APATOR,19970515,3.29,3.29,3.29,3.29,169708
APATOR,19970516,3.27,3.27,3.27,3.27,138721
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
5/44
Wizualizacja danych giełdowych
Dane w postaci tekstowej są mało czytelne.
Znacznie łatwiej jest analizować wykresy.
Skupimy się na wizualizacji historycznych danych giełdowych.
Nie będziemy natomiast prognozować przyszłych cen na podstawie
danych historycznych, czyli zajmować się tzw. analizą techniczną.
Pakiet Financial Toolbox zawiera wiele funkcji przeznaczonych do
wizualizacji danych.
Zanim jednak będziemy mogli z nich skorzystać musimy nauczyć
się wczytywać do Matlaba dane umieszczone w zewnętrznych
plikach tekstowych oraz zapoznać się z kwestią obsługi dat
w Matlabie.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
6/44
Daty w postaci tekstowej
Najczęściej używany sposób zapisu daty to przedstawienie jej
w postaci tekstowej jako łańcucha znaków np. 1 czerwca 2010
roku. Niestety tę samą datę możemy przedstawić na wiele różnych
sposobów, na przykład:
01-Jun-2010,
01/06/2010,
01/06/10,
01-06-10,
01.06.10,
2010.06.01,
June 01, 2010.
Różne państwa stosują różne sposoby zapisu dat, np. 12-08-1989
to w Polsce 12 sierpnia 1989 roku, a w USA 8 grudnia 1989 roku.
Napisanie uniwersalnej funkcji operującej na danych
kalendarzowych jest kłopotliwe.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
7/44
Numeryczny format zapisu daty
W Matlabie wprowadzono wewnętrzny numeryczny format zapisu
daty i czasu oraz udostępniono użytkownikowi wygodne funkcje
pozwalające konwertować daty z różnych formatów tekstowych na
format numeryczny i odwrotnie.
W formacie numerycznym data kalendarzowa reprezentowana jest
jako liczba dni, która upłynęła od pewnej ustalonej daty bazowej.
W Matlabie datą bazową jest 1 stycznia 0000 roku naszej ery.
Nie jest to oczywiście rzeczywista data, a pewien sztucznie
ustalony punkt odniesienia.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
8/44
Konwersja dat między formatem tekstowym i numerycznym
Dzisiejszą datę, uzyskujemy za pomocą polecenia today.
> > today
ans =
734323
Do zamiany tej daty na bardziej zrozumiały format tekstowy służy
funkcja datestr
> > datestr(734290)
ans =
01-Jun-2010
Aby wrócić do formatu tekstowego używamy funkcji datenum
> > datenum(’01-Jun-2010’)
ans =
734290
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
9/44
Konwersja dat między formatem tekstowym i numerycznym
Funkcja datestr zwraca datę w postaci dzień-miesiąc-rok,
gdzie miesiąc jest trzyliterowym skrótem angielskiej nazwy
miesiąca, a rok jest podany w postaci czterocyfrowej.
Jeżeli preferujemy inny format zapisu daty, musimy go podać jako
drugi parametr polecenia datestr. za pomocą specyfikatorów
wymienionych w poniższej tabeli.
yyyy
yy
mmmm
mmm
mm
m
dddd
ddd
dd
d
Rok w postaci czterocyfrowej
Rok w postaci dwucyfrowej
Pełna nazwa miesiąca
Trzyliterowy skrót nazwy miesiąca
Miesiąc w postaci dwucyfrowej
Pierwsza litera nazwy miesiąca
Pełna nazwa dnia tygodnia
Trzyliterowy skrót nazwy dnia tygodnia
Dzień miesiąca w postaci dwucyfrowej
Pierwsza litera nazwy dnia tygodnia
Bartosz Ziemkiewicz
2010, 1945
87, 09
June, August
Jun, Aug
06, 08
J, A
Monday
Mon, Fri
05, 31
M, F
Matematyka finansowa w pakiecie Matlab
10/44
Konwersja dat między formatem tekstowym i numerycznym
Przedstawimy w różnej postaci datę 734290 (czyli 1 czerwca
2010).
> > datestr(734290,’dd/mm/yy’)
ans =
01/06/10
> > datestr(734290,’mmmm dd, yyyy’)
ans =
June 01, 2010
> > datestr(734290,’mmm dd, yyyy (dddd)’)
ans =
Jun 01, 2010 (Tuesday)
Jeżeli to możliwe, rok należy podawać w postaci czterocyfrowej.
Forma dwucyfrowa może powodować problemy z interpretacją —
14 może oznaczać 1914 lub 2014.
Matlab zakłada, że podana data leży w 100-letnim przedziale,
którego środek znajduje się w aktualnym roku. Oznacza to, że 14
zostanie zinterpretowane jako 2014, a 80 jako 1980.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
11/44
Konwersja dat między formatem tekstowym i numerycznym
Funkcja datenum potrafi rozpoznać kilkanaście tekstowych
formatów zapisu daty i zamienić je na postać numeryczną.
Dla pewności warto zawsze sprawdzić, czy format daty został
poprawnie rozpoznany, wywołując na wyniku działania polecenia
datenum funkcję odwrotną datestr.
Jeżeli używamy danych z datami zapisanymi w formacie, który nie
jest rozpoznawany poprawnie, musimy sami określić ten format.
> > datenum(’12.09/2010’)
ans =
Error using datenum... Cannot parse date
12.09/2010.
> > datenum(’12.09/2010’,’dd.mm/yyyy’)
ans =
734393
> > datestr(734393)
ans =
12-Sep-2010
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
12/44
Czas
Omówione funkcje pozwalają operować również na danych
czasowych (godziny, minuty, sekundy, milisekundy).
Aktualny czas możemy uzyskać za pomocą funkcji now.
> > now
ans =
7.342906263360648e+005
> > datestr(7.342906263360648e+005)
ans =
01-Jun-2010 15:01:55
> > datestr(now, ’HH:MM:SS.FFF’)
ans =
15:07:50.214
HH
MM
SS
FFF
Godzina w postaci dwucyfrowej
Minuty w postaci dwucyfrowej
Sekundy w postaci dwucyfrowej
Milisekundy w postaci trzycyfrowej
Bartosz Ziemkiewicz
23, 06
15, 58
34, 07
.024, .895
Matematyka finansowa w pakiecie Matlab
13/44
Inne funkcje związane z datą
eomdate(rok,miesiąc) — zwraca datę (w formacie
numerycznym) ostatniego dnia w danym miesiącu i roku,
w szczególności możemy sprawdzić ile dni miał luty w danym roku,
lweekdate(dzień_tygodnia,rok,miesiąc) — zwraca datę
ostatniego wystąpienia danego dnia tygodnia w danym roku
i miesiącu, czyli np. kiedy wypadnie ostatnia sobota w sierpniu
2056 roku, dzień tygodnia podajemy numerycznie: 1 = niedziela,
2 = poniedziałek itd.
nweekdate(n,dzień_tygodnia,rok,miesiąc) — zwraca datę
n-tego wystąpienia danego dnia tygodnia w danym roku i miesiącu,
czyli np. kiedy wypadł trzeci piątek września 1954 roku,
weeknum(data) — zwraca numer tygodnia, w którym występuje
podana data, możemy np. dowiedzieć się, że 1 czerwca 2010 roku
wypada w 23 tygodniu tego roku,
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
14/44
Dni robocze i święta
W matematyce finansowej niezwykle ważne jest pojęcie dnia
roboczego.
Zazwyczaj w weekendy i święta państwowe giełdy są zamykane
i często trzeba to uwzględniać w obliczeniach.
W Matlabie zdefiniowana została lista świąt i innych dni wolnych
od handlu na Nowojorskiej Giełdzie Papierów Wartościowych
(NYSE).
Listę tę można wyświetlić za pomocą polecenia holidays.
Znajdują się tam dni świąteczne z lat 1950–2050.
Listę tę można zmodyfikować za pomocą polecenia
createholidays bądź edytując plik tekstowy holidays.m.
Niektóre polecenia pozwalają na bezpośrednie podanie listy dni
świątecznych jako jednego z argumentów.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
15/44
Dni robocze i święta
Funkcja isbusday(dzień, święta, weekend) pozwala
sprawdzić, czy dany dzień jest dniem roboczym.
Przyjmuje ona trzy argumenty:
data lub tablica dat, które chcemy sprawdzić,
wektor zawierający daty dni świątecznych, jeżeli go nie podamy,
Matlab skorzysta z domyślnej (amerykańskiej) listy świąt.
(opcjonalnie) wektor 7 zer lub jedynek określający, które dni
tygodnia należą do weekendu (0 oznacza dzień pracujący,
1 weekendowy.) Pierwszy element wektora to niedziela, drugi
poniedziałek itd. Domyślnie wektor ten ma wartość
[1 0 0 0 0 0 1] co oznacza, że weekend stanowią sobota
i niedziela.
Funkcja dla każdej badanej daty zwraca jedynkę, jeżeli jest to
dzień roboczy, lub zero w przeciwnym wypadku.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
16/44
Liczba dni między dwiema datami
Często w obliczeniach musimy wyznaczyć liczbę dni pomiędzy
dwiema datami.
Jeżeli korzystamy z numerycznego formatu daty wystarczy od daty
końcowej odjąć datę początkową.
Matlab udostępnia funkcję daysact, która wykonuje to obliczenie.
Często bankowa definicja roku różni się od kalendarzowej.
Niektóre banki nie uwzględniają lat przestępnych — każdy rok ma
365 dni. W tym przypadku korzystamy z funkcji days365
Inne zakładają, że rok ma 360 dni jest to tzw. rok bankowy,
a każdy miesiąc 30 dni (miesiąc bankowy). W tym przypadku
korzystamy z funkcji days360.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
17/44
Liczba dni między dwiema datami
Kolejną często wykonywaną operacja jest ustalenie jaką część roku
stanowi przedział czasu między dwiema datami. Inaczej mówiąc,
zamiana liczby dni na liczbę lat. Stosujemy wzór
czas w dniach
.
liczba dni w roku
Oczywiście wynik zależy od przyjętego sposobu liczenia dni oraz
długości roku.
Załóżmy, że chcemy wyrazić w latach liczbę dni od 14 czerwca
2010 do 20 listopada 2010.
Wyznaczymy najpierw liczbę dni pomiędzy tymi datami.
Kalendarzowa liczba dni wynosi:
> > d1 = ’14-Jun-2010’;
> > d2 = ’20-Nov-2010’;
> > kd = daysact(d1,d2)
kd =
159
n=
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
18/44
Liczba dni między dwiema datami
Jeżeli korzystamy z bankowej definicji miesiąca, to dni tych jest
> > bd = days360(d1,d2)
bd =
156
Otrzymane wyniki możemy podzielić przez długość roku
kalendarzowego bądź bankowego. Możliwe są cztery kombinacje
> > n1 = kd/365
n1 =
0.4356
> > n2 = kd/360
n2 =
0.4417
> > n3 = bd/365
bd =
0.4274
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
19/44
Liczba dni między dwiema datami
> > n4 = bd/360
n4 =
0.4333
Z powyższego przykładu wynika, że dla banku pożyczającego
pieniądze najkorzystniejsze jest obliczanie dokładnej liczby dni
i zamiana ich na lata bankowe. Jest to tzw. reguła bankowa (ang.
banker’s rule).
Dla dłużnika najkorzystniejsze jest obliczanie liczby dni bankowych
i zamiana jej na lata kalendarzowe.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
20/44
Wczytywanie danych — polecenie load
Proste pliki zawierające tylko dane liczbowe możemy wczytać za
pomocą polecenia load.
Załóżmy , że mamy plik dane.txt o następującej zawartości:
1 23 45.7 -4566 0 10
23 45 78 23 1 -0.9
2 3 45 78 9 0
Po wczytaniu tego pliku poleceniem load dane.txt w przestrzeni
roboczej Matlaba pojawi się nowa zmienna o nazwie dane.
Jest to macierz macierz o wymiarach 3 × 6, której elementami są
liczby z pliku dane.txt.
Polecenie load ma wiele ograniczeń, nie radzi sobie z różną liczbą
danych w wierszach, nie rozpoznaje niektórych separatorów, nie
pozwala też wczytywać innych typów danych np. tekstowych czy
kalendarzowych.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
21/44
Wczytywanie danych — kreator importu
Znacznie bardziej funkcjonalnym narzędziem jest kreator importu
(ang. Import Wizard),
Kreator możemy uruchomić kilkoma sposobami:
wybierając polecenie Import Data... z menu File,
wpisując w oknie poleceń komendę uiimport -file,
w oknie aktualnego katalogu klikając prawym przyciskiem myszy
na odpowiedni plik i wybierając z menu podręcznego polecenie
Import data.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
22/44
Wczytywanie danych — kreator importu
Załóżmy, że chcemy wczytać plik dane.txt:
Moje wazne dane
A
B
C
95
76
81
45
91
64
80
75
92
34
52
45
Po zaakceptowaniu wyboru pliku pojawi się pierwsze okno
kreatora. Lewy panel pokazuje dane w postaci surowej. Prawy
panel pokazuje dane w postaci w jakiej, zostaną zaimportowane.
Matlab stara się rozpoznać typ danych i przypisać je do
standardowych zmiennych:
data — macierz zawierająca wszystkie zaimportowane dane
liczbowe, puste elementy są zapisywane jako NaN,
textdata — macierz zawierająca wszystkie zaimportowane dane
tekstowe, puste elementy są zapisywane jako ’ ’,
colheaders — wektor zawierający nagłówki kolumn,
rowheaders — wektor kolumnowy zawierający nagłówki wierszy.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
23/44
Wczytywanie danych — kreator importu
Rysunek: Pierwsze okno kreatora importu
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
24/44
Wczytywanie danych — kreator importu
W naszym przypadku zostały utworzone tylko trzy pierwsze
zmienne. Ich zawartość możemy obejrzeć, wybierając odpowiednią
zakładkę prawego panelu.
Jeżeli wszystkie dane są tego samego typu, tworzona jest tylko
jedna zmienna, której nazwa jest taka sama jak nazwa pliku,
z którego importujemy dane (ale bez jego rozszerzenia).
Matlab w większości przypadków prawidłowo rozpoznaje symbol
oddzielający poszczególne kolumny danych. Zawsze możemy
jednak ustalić ten symbol sami w górnej części okna kreatora.
Często zdarza się, że na początku pliku znajduje się fragment
tekstu opisujący jego zawartość. Tekst powinien zostać
zignorowany przez program.
W polu znajdującym się w prawym górnym narożniku okna
możemy ustalić liczbę początkowych wierszy, które powinny zostać
zignorowane (u nas są to dwa wiersze). Ostatni z tych wierszy
uznawany jest za nagłówki kolumn i przypisywany do zmiennej
colheads.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
25/44
Wczytywanie danych — kreator importu
Lewy panel drugiego okna kreatora zawiera listę zmiennych, które
zostaną utworzone z naszych danych.
Po kliknięciu wybranej zmiennej w prawym panelu pojawi się jej
zawartość.
Jeżeli nie chcemy importować którejś z nich, usuwamy znak X
znajdujący się przy jej nazwie.
Jeżeli wolimy, żeby dla każdej kolumny utworzona była nowa
zmienna o nazwie odpowiadającej nazwie tej kolumny, to musimy
wybrać opcję Create vectors from each column using column
names.
Możemy też zmienić domyślne nazwy zmiennych klikając na nie
prawym przyciskiem myszy i wybierając z menu podręcznego
polecenie Rename variable.
Wciśnięcie przycisku Finish powoduje zakończenie działania
kreatora i import danych. W przestrzeni roboczej Matlab pojawiły
się trzy nowe zmienne A,B,C zawierające dane z kolejnych kolumn
naszego pliku.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
26/44
Wczytywanie danych — kreator importu
Rysunek: Drugie okno kreatora importu
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
27/44
Wizualizacja danych
Załóżmy, że zaimportowaliśmy do Matlaba plik z notowaniami spółki
Agora. Początek tego pliku wygląda następująco:
<TICKER>,<DTYYYYMMDD>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>
AGORA,19990420,49.90,49.90,46.10,47.10,214339
AGORA,19990421,47.00,47.20,46.50,46.70,160604
AGORA,19990422,47.00,49.90,47.00,49.10,155640
AGORA,19990423,49.40,51.00,49.10,49.70,164435
AGORA,19990426,49.50,49.80,49.00,49.00,90323
AGORA,19990427,48.50,48.50,47.50,47.80,84823
AGORA,19990428,47.50,47.50,46.00,46.20,51058
Dane umieszczone są w 7 kolumnach zawierających kolejno: nazwę
spółki, datę notowania, cenę otwarcia, cenę najwyższą, cenę najniższą,
cenę zamknięcia i obrót.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
28/44
Wizualizacja danych
Załóżmy, że zaimportowaliśmy do Matlaba plik z notowaniami spółki
Agora. Początek tego pliku wygląda następująco:
<TICKER>,<DTYYYYMMDD>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>
AGORA,19990420,49.90,49.90,46.10,47.10,214339
AGORA,19990421,47.00,47.20,46.50,46.70,160604
AGORA,19990422,47.00,49.90,47.00,49.10,155640
AGORA,19990423,49.40,51.00,49.10,49.70,164435
AGORA,19990426,49.50,49.80,49.00,49.00,90323
AGORA,19990427,48.50,48.50,47.50,47.80,84823
AGORA,19990428,47.50,47.50,46.00,46.20,51058
Dane umieszczone są w 7 kolumnach zawierających kolejno: nazwę
spółki, datę notowania, cenę otwarcia, cenę najwyższą, cenę najniższą,
cenę zamknięcia i obrót.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
29/44
Wizualizacja danych — wykresy liniowe
Dalej będziemy zakładać, że w przestrzeni roboczej Matlaba
zdefiniowane są zmienne DATE OPEN, HIGH, LOW, CLOSE i VOLUME
zawierające dane z tego pliku. Jeżeli daty są w formacie
tekstowym, przekształcamy je do formatu numerycznego.
Narysujmy najpierw wykres liniowy przedstawiający zmiany ceny
otwarcia.
> > plot(DATE,OPEN)
Jeżeli interesuje nas tylko część danych, np. tylko te z ostatnich
200 notowań, to wpisujemy polecenia
> > plot(DATE(end-200:end),OPEN(end-200:end))
Etykiety na osi X to daty notowań w formacie numerycznym.
Matlab zawiera funkcję dateaxis, która etykietuje oś datami
w formacie tekstowym.
> > dateaxis(’X’,1)
’X’ to oś której etykiety chcemy zmienić. Drugi argument to
format, w jakim ma być wyświetlona data, ’1’ oznacza, że będą
to daty postaci 04-Mar-2009.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
30/44
Wizualizacja danych — wykresy liniowe
Rysunek: Wykres liniowy ceny otwarcia.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
31/44
Wizualizacja danych — wykresy słupkowe
Przyjęło się, że dane ze zmiennej VOLUME oznaczające dzienny
obrót (czyli liczbę akcji, jakie zmieniły właściciela danego dnia)
przedstawia się w postaci wykresu słupkowego .
Do rysowania wykresów tego typu służy funkcja bar
> > bar(VOLUME)
Jeżeli interesują nas dane z pierwszych 50 dni i dodatkowo chcemy,
żeby oś X była etykietowana datami, to wpisujemy polecenia:
> > bar(DATE(1:50),VOLUME(1:50))
> > dateaxis(’X’,1)
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
32/44
Wizualizacja danych — wykresy słupkowe
Rysunek: Wykres liniowy ceny otwarcia.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
33/44
Wizualizacja danych — wykresy OHLC
Funkcja highlow pozwalającej przedstawić na jednym wykresie
ceny najwyższe, najniższe, zamknięcia i otwarcia
Taki wykres nazywamy wykresem Open-High-Low-Close chart
(OHLC))
Ograniczymy się do 50 pierwszych notowań, przy większej liczbie
danych wykres może stać się nieczytelny.
>>
highlow(HIGH(1:50),LOW(1:50),CLOSE(1:50),OPEN(1:50))
> > dateaxis(’X’,1,’20-Apr-1999’)
Trzeci argument funkcji dateaxis określa datę odpowiadającą
pierwszemu notowaniu.
Wykres ma postać szeregu pionowych odcinków. Każdy odcinek
odpowiada danym z jednego dnia.
Górny koniec odcinka to cena najwyższa, a dolny najniższa. Krótki
poziomy znacznik z lewej strony odcinka odpowiada cenie
otwarcia, a ten z prawej cenie zamknięcia.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
34/44
Wizualizacja danych — wykresy OHLC
Rysunek: Wykres typu Open-High-Low-Close
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
35/44
Wizualizacja danych — wykresy świecowe
Wykresy świecowe również pozwalają przedstawić te cztery ceny
na jednym wykresie.
Tworzymy je za pomocą funkcji candle.
>>
candle(HIGH(1:50).LOW(1:50),CLOSE(1:50),OPEN(1:50))
> > dateaxis(’X’,1,’20-Apr-1999’)
Na otrzymanym wykresie ponownie widzimy pionowe odcinki, na
które nałożone zostały prostokąty.
Znaczenie odcinków jest takie samo jak w przypadku wykresów
typu OHLC, górny koniec to cena najwyższa, dolny najniższa.
Dolne i górne krawędzie prostokątów oznaczają ceny otwarcia
i zamknięcia. Jeżeli jest on wypełniony oznacza to, że cena akcji
w ciągu dnia zmalała, jeżeli pusty to, że wzrosła.
Takie wykresy pozwalają zorientować się jaka jest tendencja kursu
akcji. Jeżeli np. widzimy długi ciąg pustych prostokątów, to akcje
idą w górę.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
36/44
Wizualizacja danych — wykresy świecowe
Rysunek: Wykres świecowy
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
37/44
Wizualizacja danych — wstęga Bollingera
Nazwa pochodzi od nazwiska Johna Bollingera, który pierwszy
zaczął stosować to narzędzie na początku lat 80. XX wieku.
Wstęga Bollingera składa się z trzech wykresów (wstęg):
wstęgi środkowej będącej n-okresową średnią ruchomą danych
(MA),
wstęgi górnej będącej k-krotnością n-okresowego odchylenia
standardowego powyżej środkowej wstęgi (MA + kσ),
wstęgi dolnej będącej k-krotnością n-okresowego odchylenia
standardowego poniżej środkowej wstęgi (MA − kσ).
Typowe wartości dla n i k to odpowiednio 20 i 2.
n-okresowa średnia ruchoma to średnia arytmetyczna wartości z n
ostatnich okresów. Na przykład dla ciągu (xk )k=1,...,N i n = 5
średnią ruchomą obliczamy ze wzoru:
xM−4 + xM−3 + xM−2 + xM−1 + xM
MA5 =
5
dla M = 5, 6, 7, . . . , N. Analogicznie definiujemy n-okresowe
odchylenie standardowe.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
38/44
Wizualizacja danych — wstęga Bollingera
Do rysowania wstęgi Bollingera służy funkcja bolling. Przyjmuje
ona dwa obowiązkowe parametry: wektor z danymi i krotność
średniej.
> > bolling(CLOSE(1:250),20)
> > dateaxis(’x’,1,’20-Apr-1999’
Na wykresie widzimy 4 krzywe. Ta najbardziej „postrzępiona” to
wykres ceny zamknięcia, ta najbardziej gładka to wstęga środkowa
czyli średnia ruchoma. Dwie pozostałe to wstęgi górna i dolna.
Widzimy, że wykres średniej ruchomej powoduje „wygładzenie”
wykresu cen, pokazuje ogólną tendencję, pomijając okresowe
wahania.
Zauważmy też, że wszelkie ekstrema są przesunięte w prawo
w stosunku do wykresu danych. Sposób liczenia średniej ruchomej
powoduje, że jest ona „opóźniona” w stosunku do danych
wejściowych.
Odległość między wstęgą górną i dolną określa jak duża jest
zmienność rynku.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
39/44
Wizualizacja danych — wstęga Bollingera
Rysunek: Wstega Bollingera
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
40/44
Szeregi czasowe
Dane giełdowe, którymi zajmowaliśmy się w poprzedniej części
skryptu, możemy traktować jako tzw. szeregi czasowe(ang. time
series).
Szeregiem czasowym nazywamy ciąg informacji uporządkowanych
w czasie. Badaniem własności takich szeregów i prognozowaniem
na ich podstawie zajmuje się analiza szeregów czasowych.
Matlab zawiera szereg narzędzi służących do analizy i wizualizacji
szeregów czasowych. Kiedyś tworzyły one osobny pakiet Financial
Series Toolbox kilka lat temu zostały dołączone do Financial
Toolbox.
Omówimy tu tylko kilka podstawowych funkcji umożliwiających
stworzenie szeregu czasowego i jego wizualizację.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
41/44
Szeregi czasowe
W Matlabie istnieje specjalny typ danych reprezentujący szeregi
czasowe, jest to tzw. financial time series object. Obiekty takie
tworzymy za pomocą funkcji
fints(czas,[dane1,dane2,....,daneN],
{etykieta1,etykieta2,...,etykietaN})
Pierwszy parametr to wektor zawierający daty, drugi to tablica
zawierająca kolejne serie danych (musimy podać przynajmniej
jedną serię). Ostatni parametr jest opcjonalny, możemy tu określić
etykiety serii danych.
Utworzymy teraz szereg czasowy z wczytanych wcześniej danych
giełdowych
>> szereg = fints(DATE,[OPEN, HIGH, LOW, CLOSE, VOLUME],
{’Open’,’High’,’Low’,’Close’,’Volume’})
Do wizualizacji tak utworzonych szeregów czasowych służy funkcja
chartfts
> > chartfts(szereg)
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
42/44
Szeregi czasowe
Funkcja ta wyświetla okno z osobnymi wykresami dla każdej serii
danych (liniowe dla pierwszych czterech serii i słupkowy dla
ostatniej).
Kiedy wskazujemy kursorem dowolny punkt na wykresie, na dole
okna pokazuje się data oraz odpowiadające jej wartości wszystkich
serii danych.
Możemy powiększyć dowolny fragment wykresu.
Możemy też wyświetlić na jednym wykresie kilka serii danych.
Matlab zawiera wiele innych narzędzi ułatwiających analizę
finansowych szeregów czasowych.
W szczególności warto zapoznać się z ftsgui — graficznym
interfejsem umożliwiającym analizę szeregów bez wpisywania
poleceń z linii komend.
Inne przydatne narzędzie to ftsttol. Pozwala ono tworzyć
szeregi nie tylko z danych pochodzących ze zmiennych Matlaba
czy z plików zewnętrznych.
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
43/44
Szeregi czasowe
Rysunek: Okno programu chartfts
Bartosz Ziemkiewicz
Matematyka finansowa w pakiecie Matlab
44/44

Podobne dokumenty