Excel strateji geliştirme ve optimizasyon
Son yazımda volatilite hedefi ile BİST30 stratejisini ele almıştım.
Neden volatiliteyi önemsiyorum?
Volatilite portföyünüzü taşırken ödediğiniz fiyattır. En az ödeyip en fazla kazanmanın yollarını aramak gerekir.
Geliştirdiğim modelde kullanıcı volatilite hedefini kendi belirleyip dosyayı kullanarak hisse ağırlıklarını hesaplayabilir.
Stratejide hemen hemen her şey manuel olarak yapılıyordu.
Bugün önceki yazıda kullandığım Excel dosyasını geliştirip kod ekleyerek optimize etmek istiyorum.
Portföye dair optimizasyon ve dağılım yapmak istiyorsanız mutlaka kod kullanmanız gerekir.
Excel için bu kodun adı VBA’dır. (İngilizce açılımı: Visual Basic for Applications)
VBA öğrenmek için internet kaynakları veya kitaplardan faydalanabilirsiniz. Excel çevrimiçi yardım da iyi bir kaynaktır.
Excel’de optimizasyon yapmak için Solver (Çözücü) eklentisi kullanılır. Bu eklentiyi kullanabilmek için Dosya-Seçenekler-Eklentiler adımlarını takip edip git tuşuna basarak gelen ekranda çözücü / solver etkinleştirmeniz gerekir:
Bu adımları yaptıktan sonra Excel VBA ortamında refarans olarak tanıtmak gerekir. Excel VBA ortamı Alt+F11 tuş kombinasyonu ile açılır.
Tools menü adımında References seçip:
Gelen pencerede Solver kutucuğunu işaretlemeniz gerekir:
Bunları yaptıktan sonra ekranın sol tarafı şöyle görünmeli:
Tüm hazırlıklar tamam.
Dosyada bazı değişiklikler yapmak gerekti. Bunun için korelasyon hesaplanan bölgeyi corrMat olarak adlandırdım. Kayan pencerede hesaplayabilmek için başla ve bitir isimli iki alan yarattım. Ağırlıkları geçici olarak hesaplayacağım wVec isimli bir satır vektörü oluşturdum. volHedef ve volTarget isimli iki hücre daha ekledim.
volHedef hücresine erişmek istediğiniz volatiliteyi eklemeniz gerekiyor.
Her ayın portföy getirisini hesaplamak için de görünürde karmaşık bir formül kullandım:
=TOPLA.ÇARPIM((İNDİS(px!$D$1:$D$611;D3):İNDİS(px!$AG$1:$AG$611;D3)/İNDİS(px!$D$1:$D$611;D2):İNDİS(px!$AG$1:$AG$611;D2)-1);L2:AO2)
İNDİS hücre aralıklarını getiriyor.
Hesaplamaları gerçekleştirmek için ise aşağıdaki kısa kodu yazdım:
Sub SolverMacro()
vol = Range("volHedef") * 1
Range("basla").Value = 0
Range("bitir").Value = 0
SolverReset
Call SolverOk(Range("volTarget"), 3, vol, Range("wVec"))
For i = 1 To 27
Range("basla").Value = Cells(i + 1, 5).Value
Range("bitir").Value = Cells(i + 1, 6).Value
Call SolverSolve(True)
SolverSolve userFinish:=True
Range("wVec").Select
Selection.Copy
Cells(i + 1, 12).Select
Selection.PasteSpecial Paste:=xlValues
Next i
End Sub
Hesaplamalar 27 döem için yapılıyor, döngü o yüzden 1:27 arasında. Döngüden önce solver eklentisine değişkenleri aktarmak gerekiyor. Bunu da
Call SolverOk(Range("volTarget"), 3, vol, Range("wVec"))
Satırı ile gerçekleştiriyoruz. Buradaki 3 rakamı önemli.
Solver volTarget hücresini vol değerine eşitlemek için wVec satırındaki ağırlıkları değiştiriyor. Solver aynı zamanda min ve max için de çözüm yapabiliyor. O zaman 3 rakamı yerine 1 veya 2 gelmesi gerekir.
Ben %30 volatilite hedefli bir portföy oluşturduğumda getiri grafiği aşağıdaki gibi gerçekleşti:
İşlemleri gerçekleştirdikten sonra özet sayfasına gidip tabloları yeniledikten sonra detaylı getirileri de inceleyebilirsiniz:
27 simülasyon bilgisayar konfigürasyonuna bağlı olarak 8-10 dk. sürebilir.
Dosyayı incelemek için:
https://goo.gl/o17kFU
Sayfada yer alan bilgiler tavsiye niteliği taşımayıp yatırım danışmanlığı kapsamında değildir. Yatırımcı profilinize uymayabilir.
-
Anıl03 Haziran 2017 15:04
Adnan Bey sizin kadar iyi portföy getirilerini ölçemiyorum. ama bazı stratejilerim var. mesela mart nisan ve ekim ayları genellikle borsanın (bist100) pozitif olduğu aylar. negatif olduğu aylar ise mayıs ağustos ve kasım. eyer mart nisan ekim aylarında bist100 de yer alır mayıs ağustos ve kasımda da usd/try de yer alırsak geriye kalan aylarda ise paramızı mevduatta değerlendirirsek sonuç ne olurdu? birde şimdiye kadar beğendiğiniz en iyi stratejinizi paylasırmısınız? Tesekkürler..
-
11 Kasım 2024, Pazartesi
Trump’ın zaferi Türkiye’yi nasıl etkileyecek?
Devamını Oku -
06 Kasım 2024, Çarşamba
Trump geliyor, peki piyasalar hazır mı?
Devamını Oku - 28 Ekim 2024, Pazartesi Devamını Oku
-
22 Ekim 2024, Salı
Altın ve gümüşte yükseliş nereye kadar sürecek?
Devamını Oku -
01 Ekim 2024, Salı
Piyasalar sıkıştı, bekle-gör stratejisi hakim
Devamını Oku - 11 Eylül 2024, Çarşamba Devamını Oku
-
12 Ağustos 2024, Pazartesi
Merkez’in faiz sinyali hangi şirketleri etkileyecek?
Devamını Oku -
06 Ağustos 2024, Salı
Finansal dalgalanmanın ortasında neler oluyor?
Devamını Oku -
23 Temmuz 2024, Salı
TCMB’nin faiz kararı ve piyasaların seyri
Devamını Oku -
01 Temmuz 2024, Pazartesi
Gri listeden çıkış ve CDS’lerin seyri
Devamını Oku
- ARACI KURUM RAPORLARI
- 15:28Tekfen Holding yılbaşından bu yana %118 kazandırdı
- 08:24Borsada alıcılı başlangıç bekleniyor
- 15:03Türk Hava Yolları hissesinde kurumların en yüksek beklentisi yüzde 82.3
- 09:03Bugün dikkatler NVDA’nın sonuçlarında! Hayal kırıklığı olacak mı?
- 07:59Borsada yatay başlangıç bekleniyor
- Tümünü Göster