Ana SayfaYazarlarAdnan SalihPiyasaların gündemi
Adnan Salih [email protected] Adnan Salih

İstatiksel strateji BİST100

21 Haziran 2017, 11:09 - -

Bugün deneme amaçlı yeni bir strateji üzerinde çalışacağım.

Önceki stratejilerde BİST hisselerinin 20/40 günlük ortalamalar ile iyi çalıştığını gözlemlemiştik. Bugünkü stratejide yine BİST100 hisseleri kullanıp daha farklı bir istatiksel model ile endeksin kendisini kullanarak getiri aramak istiyorum.

Doğrudan yönteme geçebiliriz.

Hisseler: BIST100 hisseleri

Süre: 3 yıllık

Alım Satım sıklığı: Günlük

Ortalama: 40 gün

Volatilite(Standart Sapma): 20 gün

Fiyat: Günlük

Borsada işlem gören 100 hissenin her gün için ortalaması ve volatilitesi hesaplanacak. Bu değerler ve fiyat kullanılarak zskor hesaplanacak. Zskor hesabı:

(Fiyat-Ortalama) /Standart Sapma

Bu değer tüm hisseler için hesaplanacak ve bir matris oluşturulacak.

Bu matriste belirlediğimiz alt-üst değerlerin altında / üstünde kalan hisse sayılarını bulacağız.

Hisse sayılarını bulduktan sonra kriterlerimizi uygulayıp alım satım kararlarını vereceğiz.

Zskor -2 civarına gerilemişse o hisse irtifa kaybediyor demektir. Bu tip hisseler borsada çoğunlukta ise o zaman iyi bir satış sonrasında diplerdeyiz diyebiliriz.

Alım yöntemi:

BİST100 hisselerinden zskoru -2 ve altına gerilemiş hisse sayısı 50 ve üstünde olursa alım yapacağız.

Pozisyon Çıkış:

BİST100 hisselerinden zskoru 2 ve üstüne yükselmiş hisse sayısı 25 ve üstünde olursa satım yapacağız.

Borsa her zaman diplere ya da tepelere yönelmiyor bazen daha küçük düzeltmeler yapabiliyor. Sisteme momentum kriteri de ekleyelim.

İkinci alım:

BİST100 hisselerinden zskoru 2 ve üstüne yükselmiş hisse sayısı 30’u yukarı keserse al.

Bu pozisyonu ya yükselen hisse sayısı 50’nin üzerine geçerse ya da ilk giriş koşulu bozulursa sat.

Önce grafikte borsanın düştüğü dönemleri inceleyelim:

Son 3 yılda 8 defa 50 ve daha fazla hisse aynı anda gerilemiş. Grafikte ilginç olan ve işlem yapmayı cazip kılan en önemli unsur satışlar arttıktan sonra genelde kısa sürede hisseler tekrar güçlenmiş volatilite azalmış. Strateji aynı zamanda opsiyon ve volatilite işlemi yapmak için de kullanılabilir.

Zskoru yükselen hisselere de bakalım:

İki grafiği üst üste çizelim:

Hem yükselişte hem düşüşte aşırılıklara gidiliyor ve bu hareketler birbirini takip ediyorlar.

Sistemin getiri grafiğini borsa ile birlikte inceleyelim:

Portföy metrikleri:

Orijinal Strateji Yıllık ortalama getiri %20,24 Sharpe rasyosu: 1.6949

En büyük düşüş %7,84 oldu. Bu kayıp 78 gün sonra geri alındı

BİST Al-Taşı yıllık ortalama getiri %8,20 Sharpe rasyosu: 0.4937

En büyük düşüş %26,24 oldu. Bu kayıp 510 gün sonra geri alındı

Tasarlanan sistemde açığa satış yok. Sadece ucuzladığında alıp bir süre taşıyıp pahalandığında satacağız. İlave olarak daha da yükselirse alıp biraz daha yüksekten satmayı hedefleyeceğiz.

Kodu incelemek isteyenler için:

clc,clear

load('u100Zskor')

thres1=-2;%fiyatları gerilemiş ve volatilitesi artmış hisseler için
thres2=2;%fiyatları yükselmiş volatilitesi azalmış hisseler için

lookback=20;%volatilite süresi
lookback2=40;%ortalama süresi

buyNumber=50;%z skor değeri düşmüş hisse sayısı
buyExitNumber=25;%z skor değeri artmış hisse sayısı
buy2=30;%momentum yaparken almak için buyExitNumber değerinden büyük olmalı
buy2Exit=50;%zskor momentum yapan hisseler


MA=movingAvg(px, lookback2);%ortalama matris
MSTD=movingStd(px, lookback);%volatilite matris
zScore=(px-MA)./MSTD;%zskor matris

tmpBelowThres=zScore<thres1;%eşik değerin altındaki hisse matris
tmpAboveThres=zScore>thres2;%eşik değerin üstündeki hisse matris
belowThres=sum(tmpBelowThres,2);%eşik değerin altındaki hisse sayısı
aboveThres=sum(tmpAboveThres,2);%eşik değerin üstündeki hisse matris

buy=belowThres>buyNumber;%alım kriteri
exitBuy=aboveThres>buyExitNumber;%uzun pozisyon çıkış kriteri
buy2=lag(aboveThres)<buy2&aboveThres>buy2;%momentum alım kriteri
buy2Exit=lag(aboveThres)<buy2Exit&aboveThres>buy2Exit...%momentum alımdan çıkış kriteri
    |(lag(aboveThres)>buy2&aboveThres<buy2);
%buradan itibaren alım sinyalleri işleme
buySignal=NaN(size(belowThres));
buySignal(buy)=1;
buySignal(exitBuy)=0;
buySignal(buy2)=1;
buySignal(buy2Exit)=0;




finalLong=fillMissingData(buySignal);

finalLong(isnan(finalLong))=0;
bistRet=u100./lag(u100)-1;
bistRet(isinf(bistRet))=0;

%portföy günlük getiri
portRetDaily=lag(finalLong).*bistRet;

%portföy ve BİST100 portföy yönetimi metrikleri
[apr,sharpe,maxDD,maxDDD,drawdown]=portMetrics(portRetDaily);
[apr2,sharpe2,maxDD2,maxDDD2,drawdown2]=portMetrics(bistRet);

%grafik sabit değer için
grafSabit=ones(size(belowThres)).*buyNumber;
grafSabit2=ones(size(aboveThres)).*buyExitNumber;


%grafikler
close all
figure
plot(tarih,belowThres,tarih,grafSabit)
title('Thres1 Altında')
figure
plot(tarih,aboveThres,tarih,grafSabit2)
title('Thres2 Ustunde')
figure
plot(tarih,cumprod(portRetDaily+1)-1,tarih,cumprod(bistRet+1)-1)
title('Port Ret')
figure
plot(tarih,belowThres,tarih,grafSabit,tarih,aboveThres,tarih,grafSabit2)
title('Yükselen ve Düşen Hisseler Birlikte')

fprintf('Orijinal Strateji Yıllık ortalama getiri %.4f sharpe rasyosu: %.4f\n',apr,sharpe);
fprintf('En büyük düşüş %.4f oldu. Bu kayıp: %d gün sonra geri alındı\n\n',maxDD,maxDDD);

fprintf('BİST Al-Taşı Yıllık ortalama getiri %.4f sharpe rasyosu: %.4f\n',apr2,sharpe2);
fprintf('En büyük düşüş %.4f oldu. Bu kayıp: %d gün sonra geri alındı\n\n',maxDD2,maxDDD2);

Sayfada yer alan bilgiler tavsiye niteliği taşımayıp yatırım danışmanlığı kapsamında değildir. Yatırımcı profilinize uymayabilir.

YORUMLAR (4)
:) :( ;) :D :O (6) (A) :'( :| :o) 8-) :-* (M)
  • Adnan Salih21 Haziran 2017 17:53

    Sayin Ozan: Opsiyonlar ile ilgili bir hayli yazdım ama yine yazarim.

  • Adnan Salih21 Haziran 2017 17:52

    Sayin Pro: Test ı matlab ile gelistirdim. Eğer matlab uygulamanız varsa sizde deneyip her gün endeks için al ya da alınan portföyü sat sinyali üretebilirsiniz.

  • Pro21 Haziran 2017 16:57

    Elinize sağlık güzel bir çalışma olmuş. Bu formülasyonu nerede nasıl kullanacağız acaba?

  • Ozan 21 Haziran 2017 15:10

    SAYIN ADNAN SALIH KALEMINIZE SAGLIK BIR SONRAKI YAZINIZDA VİOP İSLEMLERINDE HISSE OPSIIYONLARI FIYAT HESAPLAMASINI KONU OLARAK ALIRSANIZ COK MUTESEKKIR OLURUM IYI CALISMALAR DILERIM.