Materiały informacyjne dotyczące projektu SPAN dla uczestników i firm dostarczających rozwiązania informatyczne. Warszawa, 25 listopada 2010 r. Autor Dokumentu Małgorzata Chacińska Wersja Dokumentu 1.2.3 1
Zawartość 1 Informacja o projekcie... 3 1.1 Przedmiot projektu... 3 1.2 Harmonogram projektu... 3 2 Rozwiązania dla uczestników... 4 2.1 Aplikacje wspierające metodologię SPAN... 4 2.2 Proces obliczeń depozytów SPAN... 5 2.3 Plik pomocniczy span.lqf.001.01... 10 2.4 Dystrybucja informacji SPAN... 10 Załącznik 1 Struktura komunikatu: Informacja o depozycie dodatkowym (colr.exm.001.01).. 13 Załącznik 2 Struktura zbioru span.lqf.001.01... 17 Załącznik 3 Struktura zbioru POSITION FILE... 19 Załącznik 4. Tabela mapowania pól w pliku POSITION FILE... 22 2
1 Informacja o projekcie 1.1 Przedmiot projektu Celem projektu jest wdrożenie nowego systemu zarządzania ryzykiem opartego na metodologię SPAN. Główne zmiany, które zostaną wprowadzone przez realizację projekt dotyczą m.in.: - zmian w metodologii obliczeń wymaganych depozytów zabezpieczających dla rynku terminowego - wprowadzeniu obliczeń wymaganych depozytów zabezpieczających dla rynku kasowego - zmian w obliczeniach wpłaty do funduszu rozliczeniowego - definicją kompleksów giełdowych (zbiorów rynków) dla których prowadzony jest jeden fundusz rozliczeniowy Szczegółowe zmiany zostały omówione w dokumentach udostępnionych pod adresem: http://www.kdpw.pl/pl/serwisy/ryzyko/strony/default.aspx. Dostęp do serwisu wymaga wcześniejszej rejestracji. 1.2 Harmonogram projektu Przewidujemy, że projekt zostanie formalnie wdrożony równolegle z projektem powołania KDPW_CCP, co planowane jest na kwiecień 2011r. 3
2 Rozwiązania dla uczestników 2.1 Aplikacje wspierające metodologię SPAN Obliczenia depozytów w nowym systemie zarządzania ryzykiem KDPW odbywają się w oparciu o metodologię SPAN. SPAN jest metodologią, która szacuje ryzyko portfela przy założeniu realizacji najgorszego scenariusza rynkowego, uwzględniającego zmianę ceny, zmienności i upływ czasu. Metodologia obliczeń depozytów wspierana jest przez rodzinę produktów SPAN 1. Aplikacja PC-SPAN Aplikacja umożliwiająca obliczenie depozytów zabezpieczających. Użytkownik aby uzyskać obliczenie wymaganych depozytów powinien wykonać następujące kroki: a. Pobrać odpowiednie pliki udostępniane przez izbę rozliczeniową/giełdę (w tym Zbiór Parametrów Ryzyka SPAN). b. Załadować Zbiór Parametrów Ryzyka do aplikacji PC-SPAN c. Zdefiniować portfele z pozycjami przy wykorzystaniu graficznego interfejsu użytkownika lub poprzez wczytanie ich z ze zbiorów w formacie czytanym przez aplikacje PC-SPAN (zbiór POSITION FILE) d. Zainicjować obliczenia depozytów e. Obejrzeć wyniki obliczeń na ekranie lub dokonać eksportu do pliku a następnie importu do innej aplikacji. 2. Aplikacja SPAN RIsk Manager Zawiera wszystkie funkcjonalności aplikacji PS-SPAN a ponadto zestaw narzędzi umożliwiających analizy ryzka: a. Wpływ na zmianę ryzyka portfela zmiany ceny, zmienności, czasu do wygaśnięcia, stopy procentowej. b. Teoretyczne P&L, ceny opcji, współczynniki greckie c. Obliczenia zmienności implikowanych, obliczenia zmienności serii, d. Stress-testing portfela e. Definiowanie, zachowywanie i ładowanie scenariuszy stress-testów f. Wpływ na wartość ryzyka przesunięcia krzywej zmienności g. Wspiera wykorzystanie różnych modeli wyceny opcji (w tym Black- Scholes, Merton, Adesi-Whaley, Cox-Ross-Rubinstein, and Bachelier) 3. SPAN Risk Manager Clearing 4
Zawiera wszystkie funkcjonalności aplikacji SPAN Risk Manager a ponadto umożliwia obliczenia scenariuszy ryzyka i przygotowywanie Zbioru Parametrów Ryzyka (aplikacja dedykowana dla izb rozliczeniowych/giełd). Więcej informacji o rodzinie aplikacji SPAN, można uzyskać na stronie: http://www.cme-ch.com/pcspan/. 2.2 Proces obliczeń depozytów SPAN 1. Graficzny interfejs użytkownika W najprostszej formie obliczenia depozytów mogą zostać wykonane ręcznie przy wykorzystaniu graficznego interfejsu użytkownika. W tym celu należy wczytać plik ZPRS oraz zbiór z pozycjami (komenda Load File) i wykonać komendę obliczenia depozytów (Calculate Requirements). 5
Wyniki obliczeń zostaną zaprezentowane jak poniżej: 2. Język skryptowy Wywoływanie funkcji SPAN może odbywać się przy wykorzystaniu przetwarzania wsadowego programem spanit (dla PC-SPAN) lub spanitrm (dla SPAN Risk Manager). W tym celu konieczne jest zapisanie sekwencji komend sterujących SPAN do pliku tekstowego a następnie wywołanie go programem w sposób jak poniżej spanit filename lub spanitrm filename Szczegółowy opis znajduje się pod linkiem: http://www.cme-ch.com/span/span4/doc/span4_help_index.htm w sekcji Technical Documentation->Scripting Language Reference. 6
Przykładowy program wsadowy automatyzujący obliczenia depozytów Load C:\Span4\Data\RISK_PARAMETERS.XML Load C:\Span4\Data\POSITION_FILE.txt Calc Save C:\Span4\Data\RISK_REPORT.XML LogSave C:\Span4\Data\LOG.TXT W powyższym przykładzie wyniki zostaną zapisane do pliku RISK_REPORT.XML 3. Interfejs API Dla aplikacji z rodziny SPAN dostępny jest również interfejs API za pomocą którego użytkownik może rozwijać programy odwołujące się do funkcji SPAN w czasie rzeczywistym. Używając powyższego interfejsu można wywoływać funkcje SPAN bezpośrednio z kodu programu i uzyskiwać najszybsze czasy obliczeń. Przykładowe wywołanie funkcji SPAN: / span1.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "Ole2.h" #import "C:\Span4\Bin\SpanCom.tlb" no_namespace, named_guids int _tmain(int argc, _TCHAR* argv[]) { if(failed(::coinitialize(null))) return 1; ISpanCom* pspancom; if(succeeded(::cocreateinstance(clsid_spancom, NULL, CLSCTX_LOCAL_SERVER, uuidof(ispancom),(lpvoid*)&pspancom))) { printf("success\n"); 7
pspancom->load("c:\\span4\\data\\risk_parameters.xml",1,0); pspancom->load("c:\\span4\\data\\position_file.txt",1,0); pspancom->selectpit("20060130",-1,-1,"",""); pspancom->calculate(); pspancom->save("c:\\span4\\data\\risk_report.xml"); pspancom->logsave("c:\\span4\\data\\log_api.pa3"); pspancom->release(); } else printf("fail\n"); ::CoUninitialize(); return 0; Uwaga: przekaz pozycji do aplikacji SPAN oraz odczytanie wymaganych depozytów zabezpieczających może obywać się również za pomocą komend interfejsu API (np. komendy CreatePortfolio,SetPortfAcctType, SetPortfCurrency, SetPortfPosition, SetCurPortfSpanReq, GetPortfTotalReq). Powyższe umożliwia komunikowanie się z aplikacją SPAN bez wymiany plików. 4. Odczyt wymaganych depozytów dla portfeli z rynku terminowego Odczyt wymaganych depozytów następuje ze zbioru RISK REPORT FILE, który generowany jest przez aplikację po uprzednim wczytaniu zbiorów ZPRS i zbioru z pozycjami. Zbiór ten służy do odczytania wymagań depozytowych na poszczególne portfele. Strukturę zbioru zawierającą elementy wymagane do prawidłowego odczytania wymaganych depozytów przedstawia Tabela 1 Tabela 1 Struktura i odczyt danych z RISK REPORT FILE L.p. XML Tag Opis Krotność Typ 1 spanfile document SPAN (Risk Report File) [1 1] 1.1 pointintime punkt czasu [1 n] 8
1.1.1 Date data w formacie CCYYMMDD [1 1] String(8) 1.1.2 clearingorg [1 n] 1.1.2.1 Ec oznaczenie instytucji rozliczającej: KDPW [1 1] String(6) 1.1.3 portfolio [1 n] 1.1.3.1 Firm Kod uczestnika rozliczającego [1 1] String(4) 1.1.3.2 acctid Identyfikator portfela [1 1] String(16) 1.1.3.3 oreq [2 2] 1.1.3.3.1 ism 1.1.3.3.2 Pbc rodzaj depozytu: 1 - właściwy, 0 - wstępny [1 1] Boolean rodzaj wymagania ( CORE lub RESRV ) [1 1] String(5) 1.1.3.3.3 spanreq Depozyt SPAN [1 1] Float(14,2) 1.1.3.3.4 anov wartość pozycji netto w opcjach [1 1] Float(14,2) Składowe depozytu dla danego konta podmiotowego odczytujemy na podstawie z pól: spanreq oraz anov wówczas gdy pola poniżej przybierają określone wartości: Pole pointintime ec Wartość data bieżąca KDPW ism 1 pbc CORE 9
Pola z innymi wartościami należy zignorować. Pole anov wypełniane jest wartością jedynie w wypadku opcji i jednostek indeksowych. Wymagany depozyt zabezpieczający SPAN dla danego portfela DZP obliczany jest jako: DZP =max(spanreq-anov;0) 2.3 Plik pomocniczy span.lqf.001.01 Zbiór span.lqf.001.01 jest plikiem pomocniczym ułatwiającym tworzenie zbioru POSITION FILE. Aby aplikacja SPAN mogła wykonać obliczenia depozytów musi zasilona danymi wejściowymi plikiem z parametrami ryzyka (ZPRS) oraz plikiem z pozycjami. Aplikacja SPAN nie rozpoznaje charakterystyki instrumentu pochodnego na bazie jego nazwy skróconej lub kodu ISIN. W celu zapewnienia prawidłowego odczytu charakterystyki instrumentu konieczna jest reprezentacja instrumentu w formacie czytelnym dla aplikacji SPAN. Aby ułatwić ten proces KDPW każdego dnia po sesji będzie dystrybuował do uczestników zbiór span.lqf.001.01, który będzie zawierał nazwę skróconą instrumentu oraz elementy służące do reprezentacji takiego instrumentu w zbiorze pozycji SPAN. Strukturę zbioru XML span.lqf.001.01 przedstawia Załącznik 2 Struktura zbioru span.lqf.001.01. Strukturę zbioru XML POSITION FILE i zasady wypełniania elementów przedstawia Załącznik 3 Struktura zbioru POSITION FILE. Zasady mapowania elementów zbioru span.lqf.001.01na zbiór POSITION FILE przedstawia Załącznik 4. Tabela mapowania pól w pliku POSITION FILE. 2.4 Dystrybucja informacji SPAN Codziennie po zakończeniu sesji giełdowej KDPW będzie udostępniał następujące nowe zbiory: 1) Zbiór Parametrów Ryzyka SPAN (ZPRS) ZPRS jest to zbiór XML zawierający informacje o rozliczanych instrumentach finansowych, parametrach ryzyka, cenach oraz wartości scenariuszy ryzyka dla poszczególnych instrumentów. 10
Zbiór ten jest zapisany w formacie umożliwiającym odczytanie i przetwarzanie w aplikacji PC- SPAN. Użytkownika aplikacji SPAN w celu obliczenia wymagań depozytowych powinien załadować aktualny (najnowszy) zbiór ZPRS Plik ZPRS będzie wysyłany do uczestników przy użyciu ESDI/SDK. Nazwa pliku ZPRS jest budowana wg następujących zasad: Y YYYMMDDRPTXZ.XML gdzie: YYYY określa rok w którym wygenerowano plik MM określa numer miesiąca w którym wygenerowano plik DD określa dzień wygenerowania pliku. RP T X Z - stała określająca rodzaj pliku - typ zestawu parametrów: N normalny S stress-testowy ( nieobsługiwany ) - oznaczenie rynku: C kasowy (nieobsługiwany) D terminowy (nieobsługiwany) J kasowy + terminowy - oznaczenie czasu w ciągu dnia: I intraday E na koniec dnia Dodatkowo plik będzie zamieszczany w na stronie KDPW oraz na serwerze FTP CME pod adresem ftp://ftp.cme.com/pub/span/data, gdzie dostępne są pliki wszystkich izb rozliczeniowych udostępniających pliki z parametrami ryzyka w standardzie SPAN. Zbiór na koniec dnia będzie identyczny z plikiem używanym do obliczeń depozytów w KDPW. Plik w wersji intraday będzie zawierał instrumenty aktywne począwszy od następnego dnia (powinien być wykorzystywany do obliczeń wstępnych depozytów zabezpieczających w relacji klient- biuro maklerskie). 2) Plik z parametrami ryzyka (MS WORD lub txt) zawierający bieżące wartości parametrów ryzyka określone przez KPDW, (format pliku zostanie określony w terminie późniejszym) Pliki te mają wyłącznie charakter informacyjny. 3) Komunikat colr.exm.001.01.xml - Informacja o depozycie dodatkowym Plik zawiera informacje o wymaganym depozycie dodatkowym dla poszczególnych kompleksów giełd i płatnościach z tytułu depozytu dodatkowego. Wzór komunikatu zawiera Załącznik 1 Struktura komunikatu: Informacja o depozycie dodatkowym (colr.exm.001.01) 11
Dodatkowo w okresie przejściowym KDPW będzie dystrybuował zestaw plików wspierających dotychczasową metodologię obliczeń wymagań depozytowych (aktualne pliki ZAR). 12
Załącznik 1 Struktura komunikatu: Informacja o depozycie dodatkowym (colr.exm.001.01) Opis: Informacja o depozycie dodatkowym. Struktura: Lp. Lub < XML Tag > Nazwa Krotnoś ć Typ 0 KDPWDocument Komunikat systemu KDPW [1..1] KDPWDocument 0.1 colr.exm.001.01 Informacja o depozycie dodatkowym [1..1] colr.exm.001.01 1 GnlInf Informacje ogólne [1..1] GeneralInformation 1.1 SndrMsgRef Identyfikator komunikatu utworzony przez nadawcę [1..1] Max16Text 1.2 FuncOfMsg Funkcja komunikatu [1..1] FunctionOfMessage 1.3 Lnk Referencje [0..1] Linkages 1.3.1 PrvsRef Referencja do poprzedniego komunikatu [1..1] Max16Text 1.4 CreDtTm Data utworzenia komunikatu [1..1] DateAndDateTimeChoice 13
1.4.1 { lub Dt Data [1..1] ISODate 1.4.2 lub } DtTm Data i czas [1..1] ISODateTime 2 AddtlMrgnStmt Informacje o aktywach depozytu dodatkowego [1..1] AdditionalMarginStatement 2.1 ClctnDt Data naliczeń [1..1] ISODate 2.2 Ccy Kod waluty [1..1] CurrencyCode 2.3 AddtlMrgnVal Informacje o poziomie depozytu dodatkowego [0..1] AdditionalMarginValue 2.3.1 SttlmDt Data regulacji [1..1] ISODate Informacje o poziomie 2.3.2 Dtls AddtlMrgnVal depozytu dodatkowego dla [1..n] AdditionalMarginValueDetails poszczególnyc h funduszy 2.3.2.1 FndCd Kod funduszu [1..1] Code4Text 2.3.2.2 n ReqdCntrbt Wymagana wielkość depozytu dodatkowego [1..1] Amount 2.3.2.3 CshCntrbtn Wpłata dotychczasowa [0..1] Amount 14
2.3.2.4 UpdtdBal Saldo zobowiązań i należności [0..1] BalanceAndSide 2.3.2.4.1 Bal Wartość salda [1..1] Amount 2.3.2.4.2 d CdtDbtIn Znak strony salda [1..1] CreditDebitCode 2.3.3 l UpdtdMmbBa Saldo zobowiązań i należności dla uczestnika [0..1] BalanceAndSide 2.3.3.1 Bal Wartość salda [1..1] Amount 2.3.3.2 CdtDbtInd Znak strony salda [1..1] CreditDebitCode 2.4 PmtLst Informacje o płatnościach z tytułu depozytu dodatkowego [0..1] PaymentList 2.4.1 SttlmDt Data regulacji zobowiązania [1..1] ISODate Wykaz 2.4.2 PmtInf płatności dla wskazanego [1..n] PaymentInformation IBAN 2.4.2.1 CshAcct Kod IBAN [1..1] IBAN 2.4.2.2 MmbBal Zobowiązania uczestnika [1..n] MemberObligations 2.4.2.2.1 FndMmbI Kod uczestnika funduszu [1..1] KDPWMemberIdentifier 15
d 2.4.2.2.2 FndCd Kod funduszu [1..1] Code4Text 2.4.2.2.3 UpdtdBal Saldo zobowiązań i należności uczestnika [1..1] BalanceAndSide 2.4.2.2.3.1 Bal Wartość salda [1..1] Amount 2.4.2.2.3.2 nd CdtDbtI Znak strony salda [1..1] CreditDebitCode 2.4.2.3 l PngInstnBa Saldo zobowiązań i należności płatnika [0..1] BalanceAndSide 2.4.2.3.1 Bal Wartość salda [1..1] Amount 2.4.2.3.2 d CdtDbtIn Znak strony salda [1..1] CreditDebitCode 16
Załącznik 2 Struktura zbioru span.lqf.001.01 Opis: Baza papierów wartościowych do wykorzystania przy generowaniu pliku Position File w systemie SPAN. Struktura: Lp. Lub < XML Tag > Nazwa Krotność Typ 0 KDPWDocument Komunikat systemu KDPW [1..1] KDPWDocument 0.1 span.lqf.001.01 Baza papierów wartościowych do wykorzystania przy generowaniu pliku Position File w systemie SPAN [1..n] span.lqf.001.01 1 FinInstrDtls Informacje dotyczące instrumentu finansowego [1..n] FinancialInstrumentDetails 1.1 exch Kod giełdy [1..1] Max3Text 1.2 cc Kod klasy [1..1] Max6Text 1.3 ISIN Kod ISIN instrumentu [1..1] ISINIdentifier 1.4 ShrtNm Nazwa skrócona [1..1] Max16TextCollapse 1.5 pfcode Kod instrumentu SPAN [1..1] Max12Text 1.6 cashderiind Wskaźnik rodzaju instrumentu [1..1] Code4Text 1.7 pftype Kod rodzaju instrumentu [1..1] Max5Text 1.8 pe Data wygaśnięcia [0..1] DateChoiceSPAN 17
1.8.1 { lub shortd Data YYYYMM [1..1] DateShortSPAN 1.8.2 lub } longd Data YYYYMMDD [1..1] DateLongSPAN 1.9 undpe Data wygaśnięcia instrumentu bazowego [0..1] DateChoiceSPAN 1.9.1 { lub shortd Data YYYYMM [1..1] DateShortSPAN 1.9.2 lub } longd Data YYYYMMDD [1..1] DateLongSPAN 1.10 o Rodzaj opcji (put/call) [0..1] Max1Text 1.11 k Kurs wykonania opcji [0..1] CurrencyAndAmount2 18
Załącznik 3 Struktura zbioru POSITION FILE Lp <XML Tag> Opis Krotność Typ 1 posfile Dokument SPAN [1..1] 1.1 fileformat Wersja formatu pliku: 4.00 wartość stała 1.2 created Data i czas utworzenia CCYY-MM-DD HH.MM [1..1] String(4) [1..1] String(16) 1.3 pointintime [1..1] 1.3.1 date Data na którą w pliku zawarte są pozycje CCYYMMDD. Uwaga data musi korespondować z datą z pliku RPF, z elementu <date> w elemencie <pointintime>, w oparciu o który prowadzone są obliczenia depozytów [1..1] String(8) 1.3.2 issetl 0 wartość stała [1..1] Boolean 1.3.3 portfolio [1 n] 1.3.3.1 firm AAAA wartość stała [1..1] String(4) 1.3.3.2 acctid AAAA wartość stała [1..1] String(16) 1.3.3.3 accttype Typ rachunku; S typ własności papiery klientów 1.3.3.4 iscust Czy portfel klienta 1 wartość stała [1..1] String(1) [1..1] Boolean 1.3.3.5 seg CUST wartość stała [1..1] String(4) 19
1.3.3.6 isnew Znacznik nowego portfela: 0 wartość stała [1..1] Boolean 1.3.3.7 custportuselov 1 wartość stała [1..1] Boolean 1.3.3.9 currency Waluta do obliczeń depozytów: PLN wartość stała [1..1] String(3) 1.3.3.10 ledgerbal 0 wartość stała [1..1] Float(1,0) 1.3.3.11 ote 0 wartość stała [1..1] Float(1,0) 1.3.3.12 securities 0 wartość stała [1..1] Float(1,0) 1.3.3.13 ecport [1 n] 1.3.3.13.1 ec KDPW [1 1] String(6) 1.3.3.13.2 ccport [1 n] 1.3.3.13.2.1 cc Kod klasy - na podstawie span.lqf.001.01 [1..1] String (6) 1.3.3.13.2.2 np [1 n] 1.3.3.13.3.2.1 exch Skrót nazwy giełdy na podstawie span.lqf.001.01 1.3.3.13.3.2.2 pfcode Kod instrumentu na podstawie span.lqf.001.01 1.3.3.13.3.2.3 pftype Kod rodzaju instrumentu pole wypełniane na podstawie span.lqf.001.01 1.3.3.13.3.2.4 pe pole wypełniane na podstawie span.lqf.001.01 [1..1] String(3) [1..1] String(12) [1..1] String(5) [0..1] String(8)- wpisywać elementów pustych bez 20
1.3.3.13.3.2.5 undpe pole wypełniane na podstawie span.lqf.001.01 1.3.3.13.3.2.6 o pole wypełniane na podstawie span.lqf.001.01 1.3.3.13.3.2.7 k pole wypełniane na podstawie span.lqf.001.01 1.3.3.13.3.2.8 cusip pole wypełniane na podstawie span.lqf.001.01 [0..1] String(8) Wpisywać elementów pustych [0..1] Char [0..1] Float (14,2) [0..1] String (12) bez 1.3.3.13.3.2.9 net Pozycja netto [1..1] Int 4 bajty 21
Załącznik 4. Tabela mapowania pól w pliku POSITION FILE PF <XML Tag> LQF <xml Tag> UWAGI date Data korespondująca z elementem <date> w elemencie <pointintime> zbioru ZPRS cc exch pfcode pftype cc exch pfcode pftype pe pe Wpisywana wartość istniejącego podpola z plik LQ shortd lub longd undpe undpe Wpisywana wartość istniejącego podpola z plik LQ shortd lub longd o k o k cusip Pole puste w PF (pole wypełniane w przypadku instrumentów kasowych) net Liczba pozycji (pozycja krótka ze znakiem ujemnym) ShrtNm Nazwa skrócona instrumentu pochodnego 22