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.
- xlFormulaToComment.xla — dodatek xla
- xlFormulaToComment.bas — moduł z kodem dodatku
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 SubSł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
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
- FxVolGetter.cls -- moduł klasy FxVolGetter [1 kB]
- FxVolGetterTest.bas -- moduł z kodem wykorzystującym przedstawione rozwiązanie [1 kB]
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.
- xlBarrierOptions.xla — dodatek xla
- xlBarrierOptions.xls — przykład wykorzystania (arkusz do wyceny opcji barierowych)
Elementy składowe dodatku:
- xlBarrierOptions.bas -- moduł klasy BarrierOptionEngine
- AnalyticBarrierEngine.cls -- moduł zawierający funkcję BarrierPrice
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.ValueSłowa kluczowe: excel, vba, makra


![[vim created]](./grafika/vim_created.png)