Kalkulator depozytów SPAN® jako przykład użycia procedur składowanych w MySQL lub MariaDB.
Implementacja algorytmu według przepisów na stronie KDPW
http://www.kdpwccp.pl/pl/zarzadzanie/span/Strony/O-SPAN.aspx
Algorytm zwraca wartości identyczne z Kalkulatorem KDPW
http://www.kdpwccp.pl/pl/zarzadzanie/Strony/kalkulator.aspx
Jeśli chciałbyś wersję w PL/SQL, PL/pgSQL, lub w Javie skontaktuj się z autorem :)
-
Należy pobrać i zainstalować bazę danych MariaDB/MySQL
https://downloads.mariadb.org/ (rekomendowana a najlepiej w wersji większej niż 10.0.8)
lub
http://dev.mysql.com/downloads/mysql/ -
Pobieramy 3 pliki -> kalk_schema.sql , import_span.sql, kalkulator_derywaty.sql
-
Odpaliamy konsolę MySQL w scieżce gdzie znajdują się pobrane pliki z punktu 2, a następnie wpisujemy 3 komendy:
MariaDB [(none)]> source kalk_schema.sql;
MariaDB [kalkulator]> source import_span.sql;
MariaDB [kalkulator]> source kalkulator_derywaty.sql;
Należy zmienić/dodać w pliku my.ini (plik konfiguracyjny MySQL) wartość
[mysqld]
max_allowed_packet = 50M
- Sciągamy plik ze strony KDPW
http://www.kdpwccp.pl/pl/zarzadzanie/Parametry/SPAN/RPNJI_ZRS.xml - W konsoli MySQL wpisujemy komendę
MariaDB [kalkulator]> INSERT INTO b (col1) VALUES ( LOAD_FILE('RPNJE_ZRS.xml'));
Dla sprawdzenia poprawności załadowania pliku
MariaDB [kalkulator]> SELECT count(*) FROM b WHERE col1 IS NOT NULL;
Powinno zwrócić wartość 1, jeśli 0 to należy wprowadzić poprawną ścieżkę do pliku RPNJE_ZRS.xml
3. Uruchamiamy import
MariaDB [kalkulator]> call prImportuj();
######UWAGA Proces może długo trwać(w moim przypadku 30 minut).
- Czyścimy pozycje
MariaDB [kalkulator]> call prCzysc();
- Dodajemy pozycje do kalkulatora, gdzie 1 parametr to Nazwa Intrumentu, 2 parametr to ilość pozycji, 3 parametr to cena(w przypadku kontraktów jest ignorowana, w przypadku opcji wpływa na premię opcyjną)
MariaDB [kalkulator]> call prDodajPozycje('FW20Z1420',8,4.5);
MariaDB [kalkulator]> call prDodajPozycje('FW20U1520',-2,4.5);
Można wpływać na wysokość depozytu zmieniając parametr Price Scan Range
MariaDB [kalkulator]> call prKorygujPSR('FW20U1520',-0.036);
Wynikiem właściwym Price Scan Range jest suma zaimportowanego Price Scan Range i 2 parametru funkcji prKorygujPSR.
W tym wypadku współczynnik PSR zostanie obniżony o wartość 0.036.
3. Uruchamiamy właściwą kalkulację
MariaDB [kalkulator]> call prOblDep;
- Odczyt parametrów
MariaDB [kalkulator]> select @depozyt,@NOD, @DPNO, @premia, @pno;
Właściwym wynikiem jest @depozyt.