"Ticarette matematik: Sharpe ve Sortino oranları" makalesi için tartışma - sayfa 2

 
Ivan Titov #:
Sharpe.mqh'nin yalnızca yıllık Sharpe oranını hesapladığını doğru anladım mı? Aylık Sortino çalışmayacak mı?

Makale sorunuzun cevabını içeriyor.

 
Andrey Khatimlianskii #:

Tekrar soruyorum, "düşük sayı" nedir? Bana 70-80 düşük gibi geliyor, ancak bu tür paslarda cezanız yok.

Rakamlar diğer geçişlerle karşılaştırıldı mı?

Test aralığının uzunluğuna göre normalize edilmiş mi?

Büyük olasılıkla sabit bir değer ayarlanmıştır, aksi takdirde tüm sonuç tablosunu birçok kez yeniden hesaplamanız gerekir.

Yukarıdaki argümanlarınıza katılıyorum.

 
Andrey Khatimlianskii #:
Aynı zamana denk gelirler, ancak her zaman değil

Test cihazında haftalık zaman dilimini ayarlarsanız, neredeyse her zaman eşleşmezler:

Aylık zaman diliminde fark daha da büyüktür:


 
Rashid Umarov #:

Makale sorunuzun cevabını içeriyor.

Makalede sorumun cevabını bulamadım, ancak Sharpe.mqh koduna bakılırsa Sortino içinde yok. Bu yüzden Sortino hesaplama seçeneği ile değiştirilmiş kodu aşağıya ekledim. Aynı zamanda kodu gereksiz fonksiyon çağrıları açısından optimize ettim.

Bence Sortino katsayısının dezavantajı, hesaplanması için yalnızca risksiz oranın (bu durumda sıfır) altındaki getirilerin alınmasıdır. Ancak, test edilen strateji için hesaplanan ortalamanın altındaki dönemlerden birinde pozitif bir getiri de bir risktir. Bu yüzden sadece ortalamanın altındaki getirileri dikkate alan bir katsayı hesaplaması ekledim. Bir benzerini bulamadım, bu yüzden mütevazı bir şekilde Titov'un katsayısı olarak adlandırdım)). Bulduğumda adını değiştireceğim.

Orijinalinde, hesaplama döneminin mevcut zaman dilimine bağlı olması sakıncalıdır. Bu yüzden hesaplama periyodunu ayarlamayı ekledim (açıkça ayarlanmamışsa, mevcut zaman dilimi alınır):

Returns.SetTF(PERIOD_MN1);

Sharpe oranını hesaplarken getirinin logaritmasını kullanma ve bunu yıllık değere getirme gerekliliğini herhangi bir kaynakta bulamadım. Bu nedenle, bu seçenekleri devre dışı bırakma imkanı ekledim.

Bazı nedenlerden dolayı, makaledeki örnekler sıfır getirili dönemleri göz ardı ediyor. Bu da sonucu bozuyor. Bu nedenle, bu tür dönemleri hesaplamaya dahil etmek için bir seçenek ekledim.

Orijinal makalede olduğu gibi Sharpe oranı hesaplamasını kullanma örneği:

#include <Sortino.mqh>
CReturns Returns;

..

void OnTick()
{
        Returns.OnTick();
        ..
}


double OnTester(void)
{
        return(Returns.OnTester(DEF_SHARPE));
}

Diğer her şeyin eşit olduğu Sortino katsayısı hesaplama örneği:

#include <Sortino.mqh>
CReturns Returns;

..

void OnTick()
{
        Returns.OnTick();
        ..
}


double OnTester(void)
{
        return(Returns.OnTester(DEF_SORTINO));
}

Kendi adıma, ortalamanın altında getiri riskini aylık aralıklarla değerlendirmeye karar verdim:

#include <Sortino.mqh>
CReturns Returns;

..

int OnInit()
{
        Returns.SetTF(PERIOD_MN1);
        ..
}


void OnTick()
{
        Returns.OnTick();
        ..
}


double OnTester(void)
{
        return(Returns.OnTester(DEF_TITOV, false, false, false));
}
Dosyalar:
Sortino.mqh  10 kb
 
Ivan Titov #:
Sharpe oranını hesaplarken getirilerin logaritmasını kullanma ihtiyacını hiçbir kaynakta bulamadım

Bir alıntı ile cevap vermek gerekirse

Sharpe oranının hesaplanmasında getirilerin logaritmasının kullanılması kesinlikle gerekli değildir, ancak hesaplamaları basitleştirmek ve özellikle uzun zaman dilimleri veya yüksek derecede değişken varlıklarla uğraşırken verilerin istatistiksel özelliklerini iyileştirmek için yararlı olabilir. Logaritmik getiriler, getirilerin normal dağılımına daha iyi bir yaklaşım sağladıkları ve portföyleri derlerken hesaplamaları basitleştirdikleri için sıklıkla kullanılır.

Eklemek isterim - logaritma olmadan deneyin ve bana olağandışı yan etkiyi söyleyin. Bununla karşılaşmalısınız.

 
Ivan Titov #:
Hiçbir kaynakta Sharpe oranının hesaplanması ve yıllık bir değere getirilmesi gerekliliğine rastlamadım.

Başka bir alıntı

Sharpe oranının yıllık bir değere getirilmesine gelince, bu, yatırımın orijinal zaman ölçeğinden bağımsız olarak farklı yatırım stratejileri ve portföyler arasında karşılaştırma yapılmasına olanak sağlamak için oranı standartlaştırmak amacıyla yapılır. Bu, özellikle farklı varlık türleri veya farklı işlem sıklıklarına sahip stratejiler arasında karşılaştırmalar yapıldığında, yatırımcıların yatırım performansını ortak bir standarda göre ölçmelerine yardımcı olan yaygın bir uygulamadır

 
Rashid Umarov #:
Bir alıntıyla cevap vereceğim

Kaynak derken, Sharpe ve Sortino oranları hakkında bu makale dışındaki bilgileri kastetmiştim.

Rashid Umarov #:
Sharpe oranının yıllık bir değere getirilmesine gelince, bu, yatırımın orijinal zaman ölçeğinden bağımsız olarak farklı yatırım stratejileri ve portföyler arasında karşılaştırılmasına olanak tanıyacak şekilde oranı standartlaştırmak için yapılır.
Sharpe oranı, belirli bir dönemdeki segmentlerin ortalama getirisinin aynı segmentlerdeki standart sapmaya oranıdır. Yani, stratejileri birbirleriyle karşılaştırma imkanı açısından segmentlerin uzunluğu çok önemli değildir. Bence, gereksiz gürültüyü ortadan kaldırmak için bir ticaretin ortalama süresinden birkaç kat daha uzun olacak şekilde seçilmesi tavsiye edilir.
Rashid Umarov #:
logaritma olmadan deneyin ve bana olağandışı yan etkiden bahsedin. Bununla karşılaşmalısınız

Denedim: olağandışı bir şey yok. Ama bir hata buldum, düzeltilmiş versiyonu ekliyorum.

Dosyalar:
Sortino.mqh  10 kb
 
Rashid Umarov #:

Bir alıntıyla cevap vereceğim

Kendim için ekleyeceğim - logaritma olmadan deneyin ve daha sonra bana olağandışı yan etkiyi anlatın. Bununla karşılaşmalısınız.

İlginçtir ki, böyle bir öz sermaye için bu senaryo 2,08'lik bir Sharpe verir:

Ve bunun için (yeniden yatırımla aynı) 3,66:

Her ne kadar 2. öz sermayenin kalitesinin daha kötü olduğu açık olsa da (yeniden yatırım her zaman öz sermayenin kalitesini kötüleştirir).

Eğer özkaynak artışlarının logaritması yerine artışların kendisini kullanırsak:

         log_return = (m_equities[i] - prev_equity); // artış 
         //log_return = MathLog(m_equities[i] / prev_equity); // logaritmayı artırma

Birincisi için 3,85 ve ikincisi için 2,1 elde ederiz. Çok daha uygun.

 
Buna ek olarak, logaritma üzerindeki Sharpe, ilk depozitonun büyüklüğüne önemli ölçüde bağlıdır. Yukarıdaki örnekte (öz sermaye 1) 4000'lik bir ilk depozito ile 2,08 verir. 400000'lik bir depozito ile 3,83 verir. Öz sermayenin şekli hiçbir şekilde değişmemiş olsa da (sabit bir lot ile işlem yapmak).
 

Logaritma üzerindeki Sharpe, yalnızca yeniden yatırımla işlem yapılması durumunda mevduat büyüklüğüne bağlı değildir.

Ancak bu durumda basit artışlar üzerindeki Sharpe, mevduat büyüklüğüne bağlı değildir.

Bu nedenle, neden logaritma üzerinden Sharpe kullanmam gerektiğini anlamıyorum.