Finanse obliczeniowe

semestr zimowy i letni 2012/13
(seminarium prowadzone razem z prof. Andrzejem Palczewskim)

Treść zadań domowych i punktacja znajdują się poniżej.

Opis zajęć

  • W czasie semestru zimowego i pierwszych tygodni semestru letniego zajęcia będą prowadzone w formie wykładów prezentujących różne metody obliczeniowe stosowane w finansach. Treść tych wykładów będzie sukcesywnie umieszczana na stronie webowej w postaci plików PDF.
  • Prezentacja każdej metody będzie zakończona sformułowaniem zadania do samodzielnego wykonania przez uczestników. Zadania te polegają na napisaniu odpowiedniego programu w Octave.
  • W tej części zajęć uczestnicy będą mieli do wykonania 9 zadań.
  • Pod koniec lutego lub na począku marca każdy uczestnik seminarium otrzyma do wykonania Duży Projekt. Możliwe są także "duże projekty" zespołowe dla zespołu 2-3 osobowego.
  • Wykonanie "dużego projektu" wymaga rozwiązania postawionego problemu, napisania programu, który implementuje to rozwiązanie, przygotowania Raportu z wykonania projektu oraz przygotowania i przedstawienia na seminarium prezentacji otrzymanego rozwiązania.
  • Czas na wykonanie zwykłych zadań wynosi zwykle 2 tygodnie (szczegółowe terminy oddawania zadań są podawane indywidualnie przy każdym zadaniu). Czas wykonania "dużego projektu" wynosi 2 miesiące.

Slajdy z wykładów (w formacie pdf w jęz. angielskim):

  1. Wprowadzenie do Octave.
  2. Model dwumianowy.
  3. Greckie parametry.
  4. Generatory liczb pseudolosowych.
  5. Symulacje Monte Carlo.
  6. Schematy numeryczne dla równań stochastycznych.
  7. Równanie Blacka-Scholesa.
  8. Metody numeryczne dla równań różniczkowych.
  9. Metody numeryczne dla opcji egzotycznych.
  10. Metody numeryczne dla opcji amerykańskich.


Warunki zaliczenia:

  • Zaliczenie zadanych w trakcie seminarium zadań-projektów polegających na napisaniu odpowiedniego programu w Octave.

  • Kod programu należy przesyłać na adres compfin(at)mimuw.edu.pl w terminie podanym przy każdym zadaniu.
    Nie sprawdzamy programów przysłanych po terminie!

Z dotychczasowego doświadczenia wynika, że przesyłane programy zawierają błędy bardzo różnego rodzaju:

  • przesłane programy zawierają błędy formalne, które uniemożliwiają ich uruchomienie;
  • przesłane programy nie są "plikami wykonywalnymi", tzn. program nie działa w ten sposób, że wypisując po zachęcie Octave nazwę programu powodujemy jego realizację (jeśli program działa po wklejeniu jego listingu do konsoli, to NIE JEST to "plik wykonywalny");
  • progamy są poprawne formalnie (działają), ale produkują bezsensowne wyniki;
  • programy sa poprawne formalnie i (w zasadzie) poprawne merytorycznie, tzn. produkują wyniki niepoprawne, bo zostały popełnione proste (a głupie) błędy programistyczne;
  • programy sa poprawne formalnie i merytorycznie, tzn. produkują poprawne wyniki, ale są napisane nieefektywnie (czas ich realizacji dyskwalifikuje je w praktycznym użytkowaniu).

Różny charakter wymienionych błędów sprawia, że ogólne pojęcie zaliczenia zadania staje się nieostre. Przy zaliczaniu zadań stosowane będą następujące kryteria szczegółowe:

  • za każde zadanie można zdobyć 0-10 punktów;
  • za "duży projekt" można zdobyć 0-40 punktów;
  • za zadanie dostaje się 0 punktów jeśli:
    1. nazwa przysłanych plików z programem i danymi nie spełnia kryteriów wskazanych w opisie na stronie webowej,
    2. plik programu nie wykonuje się (zawiera błędy formalne, nie jest "plikiem wykonywalnym" lub zawiera niepoprawny plik z danymi);
  • za zadanie dostaje się 1-3 punktów, jeśli program produkuje całkowicie niepoprawny wynik spowodowany złą implementacją algorytmu;
  • za zadanie dostaje się 4-8 punktów, jeśli program jest poprawny formalnie i (w zasadzie) merytoryczne, ale zawiera drobne błędy w implementacji algorytmu (liczba punktów zależy od rodzaju popełnionego błędu);
  • za zadanie dostaje się 9-10 punktów, jeśli program jest poprawny formalnie i merytoryczne (liczba punktów zależy od efektywności programu, tj. czasu wykonania, przejrzystości kodu, elegancji oraz odporności programu na niepoprawne dane).

Kryteria oceny "dużego projektu" będą poza wymienionymi wyżej cechami poprawnego programu uwzględniały także wartość rozwiązania problemu, który będzie przedmiotem "dużego projektu", jakośc przygotowanego raportu oraz ocenę jego prezentacji na seminarium.

Wymienione wyżej kryteria oceny zadań zostaną zastosowane poczynając od zadania nr 2. Oznacza to, że w ciągu całego roku będzie można zdobyć maksymalnie 120 punktów.

Do zaliczenia seminarium potrzebne będzie zdobycie 60 punktów, w tym conajmniej 10 punktów z "dużego projektu".
Skala ocen:
60-69 punktów - ocena 3
70-79 punktów - ocena 3.5
80-89 punktów - ocena 4
90-99 punktów - ocena 4.5
100-109 punktów - ocena 5
110-120 punktów - ocena 5!


Szczegółowa instrukcja postaci oddawanego zadania:

  1. BEZ POLSKICH LITER - nazwy zmiennych a TAKŻE komentarze nie powinny zawierać polskich liter.

  2. Całe rozwiązanie powinno znajdować się w jednym pliku: najpierw funkcje, potem program. Ten plik powinien być wykonywalnym programem, czyli po wpisaniu w Octave jego nazwy program powinien być wykonany. Ten plik powinien mieć nazwę jednoznacznie identyfikującą autora oraz wykonywane zadanie przez podanie jego numeru. Plik ten powinien mieć nazwę nnnnn_zadx.m, gdzie nnnnn jest nazwiskiem autora (nazwiskiem i imieniem dla osób o identycznych nazwiskach), a x numerem zadania, np. kowalski_zad1.m. Nazwa pliku z danymi będzie zwykle narzucana przez treść zadania. Zwykle pliki te będą miały nazwy CWx_data.txt, gdzie x będzie numerem zadania. Jeśli treść zadania nie narzuca nazwy pliku z danymi, to dane powinny być w pliku o nazwie identyfikującej autora: kowalski_zad1_dane.txt. Jeśli konieczny jest komentarz, to też powinien być nazwany: kowalski_zad1_koment.txt.

  3. Pliki z danymi powinny używać standardowej struktury przekazywania danych używanej w Octave, tj. takiej w jakiej Octave zamapiętuje zmienne o wykonaniu komendy save. Przykład takiego formatu znajduje się w załączonym pliku tutaj.

  4. Wszystkie pliki wymienione w poprzednim punkcie powinny być razem spakowane pod nazwą kowalski_zad1.zip (może byc rozszerzenie rar lub tar w zależności od użytej pakowarki).

  5. Wysyłany list powinien zawierać tylko załączony plik spakowany i temat identyfikujący, że chodzi o przesłane rozwiązanie.


Zadania (w formacie pdf w jęz. angielskim):

  1. Model dwumianowy. Termin: 23 października 2012.
  2. Greckie parametry. Termin: 6 listopada 2012.
  3. Generatory liczb losowych. Termin: 20 listopada 2012.
  4. Metoda Monte Carlo. Termin: 4 grudnia 2012.
  5. Metoda Monte Carlo c.d. Termin: 18 grudnia 2012.
  6. Model Hestona. Termin: 8 stycznia 2013.
  7. Opcja binarna. Termin: 22 stycznia 2013.
  8. Opcja lookback. Termin: 19 lutego 2013.
  9. Opcje amerykańskie barierowe. Termin: 5 marca 2013.

Wyniki zadań dostępne są tutaj.


Duże projekty

Opisy projektów z poprzednich lat oraz raporty z ich realizacji dostępne są tutaj.


© Piotr Kowalczyk