11 grudnia 2009

Wyświetlanie formuł w komentarzach -- dodatek xla

Dzisiaj uczestniczyłem w szkoleniu noszącym tytuł Techniki numeryczne w wycenie opcji finansowych organizowanym przez CEETA. W trakcie szkolenia zauważyłem, że prowadzący posługuje się makrem przypisanym do skrótu klawiszowego, które wyświetla w komentarzach tekst formuł wpisanych w komórkach. Dzięki temu rozwiązaniu można w łatwy sposób przedstawiać, wyróżniać formuły stosowane w arkuszu.

Pomysł ten spodobał mi się na tyle, że postanowiłem zaimplementować go w postaci dodatku xla.

Słowa kluczowe: excel, makra, vba, addin


19 października 2009

Kopiowanie zakresu -- Excel VBA

Poniżej krótka procedura rozwiązująca odwieczny problem kopiowania zakresów w arkuszach Excela. Pierwszy argument procedury (CopiedRange) to, zgodnie z nazwą, kopiowany zakres, a drugi (RangeTo) to zakres docelowy. Zakres docelowy powinien być pojedyńczą komórką wskazującą lewy górny róg miejsca, w którym ma się znaleźć kopiowany zakres.

Sub CopyRange(CopiedRange As Range, RangeTo As Range) Dim nColumns As Long Dim nRows As Long With CopiedRange nColumns = .Columns.Count nRows = .Rows.Count End With With RangeTo Debug.Assert .Columns.Count * .Rows.Count = 1 Set RangeTo = Range(.Offset(0, 0), _ .Offset(nRows - 1, nColumns - 1)) End With RangeTo = CopiedRange.Value End Sub

Słowa kluczowe: excel, vba, makra


24 lipca 2009

Bloomberg API i płaszczyzna zmienności FX (VBA)

Z Bloomberg API po raz pierwszy zetknąłem się latem 2006 lub 2007 roku. Wtedy jeszcze nie wiedziałem, jak i gdzie mógłbym je zastosować. Przełom nastąpił w zeszłym roku spędziłem ponad tydzień ucząc się tego narzędzia i sprawdzając jego możliwości.

Korzystając z Bloomberg API należy pamiętać o przynajmniej dwóch faktach:

  • zapytania obsługiwane są w sposób synchroniczny
  • dane pobierane za pomocą Bloomberg API nie mogą opuszczać licencjonowanego stanowiska
  • w liście referencji należy dodać bibliotekę Bloomberg Data Type Library
Bloomberg Data Type Library

Jako przykład zastosowania Bloomberg API stworzyłem klasę FxVolGetter, która ma służyć do pobierania kwotowań zmienności FX:

Option Explicit Option Base 0 Const IMP_VOL_TYPE = "DFLT_VOL_SURF_MID" Const QUOTE_FORMAT_FIELD = "IMP_VOL_QUOTE_FORMAT" Enum QUOTE_FORMAT QUOTE_B QUOTE_C QUOTE_P QUOTE_R End Enum Private blbObj As BLP_DATA_CTRLLib.BlpData Private blbCookies As Integer Private blbFields As String Private blbOverFields As String Private blbOverValues As Variant Private Sub Class_Initialize() Set blbObj = New BlpData blbCookies = 1 blbFields = IMP_VOL_TYPE blbOverFields = QUOTE_FORMAT_FIELD blbOverValues = Array("B", "C", "P", "R") End Sub Public Function sendRequest(blbCode As String, _ Optional quoteType As QUOTE_FORMAT = QUOTE_B) As Variant Dim tmp As Variant '' send request to Bloomberg Call blbObj.Subscribe(blbCode, _ blbCookies, _ blbFields, _ blbOverFields, _ blbOverValues(quoteType), _ tmp) '' assign the results sendRequest = tmp(0, 0) End Function

... oraz przykład jej zastosowania:

Option Explicit Option Base 0 Sub Test() Dim volGetter As FxVolGetter Dim ticker(2) As String Dim vSurf As Variant Dim reset As Variant Dim i As Integer Set volGetter = New FxVolGetter ticker(0) = "EURUSD BGN Curncy" ticker(1) = "XAUUSD BGN Curncy" ticker(2) = "EURCHF BGN Curncy" For i = 0 To UBound(ticker) '' I need to reset the result container '' before I write to it vSurf = reset vSurf = volGetter.sendRequest(ticker(i)) '' here you can play further with the '' contents of the "res" variable '' ... Next i End Sub

Słowa kluczowe: vba, bloomberg api, zmienność implikowana


13 czerwca 2009

Opcje barierowe -- Excel VBA

W ramach swoich zainteresowań stworzyłem dodatek xla (Excel Addin) z funkcją do wyceny opcji barierowych. Jest to prosta implementacja formuł zamieszczonych przez Espena Hauga w The Complete Guide to Option Pricing Formulas wzorowana na implementacji zastosowanej w bibliotece QuantLib.

Elementy składowe dodatku:

Słowa kluczowe: excel, vba, makra, addin, opcje, opcje barierowe, instrumenty pochodne, Black Scholes, QuantLib, Haug, The Complete Guide to Option Pricing Formulas


14 kwietnia 2009

Excel VBA -- zapisywanie jako wartości

Dim rangeReference as Range Set rangeReference = ... '' range assignment rangeReference = rangeReference.Value

Słowa kluczowe: excel, vba, makra