Bir diğer son derece önemli nüans ise, bu senaryoda Sharpe hesaplanırken yalnızca özsermayede değişiklik olan çubukların dikkate alınmasıdır:
//--- add only if equity has changedif(m_equities[i] != prev_equity)
{
log_return = MathLog(m_equities[i] / prev_equity); // logaritmayı artır
aver += log_return; // artışların ortalama logaritması
AddReturn(log_return); // artan logaritma dizisini dolduruncounter++;// geri dönüş sayacı
}
prev_equity = m_equities[i];
Ortalama değişim daha sonra bu tür çubukların sayısına bölünerek bulunur:
//--- artış logaritmasının ortalama değeri
aver /= counter;
Bununla birlikte, yıllık keskinliklere geçiş, sanki mevcut tf' nin tüm çubukları hesaplamada sayılmış gibi, zaman dilimi oranına dayanır:
//--- diğer tüm durumlarda Sharpe oranını yıllık değere göre yeniden hesaplayın//--- mevcut zaman diliminin kaç dönemi D1'e sığardouble factor = double(PeriodSeconds(PERIOD_D1)) / PeriodSeconds(timeframe);
sharpe = sharpe * MathSqrt(factor); // günlük değere göre yeniden hesapla
sharpe = sharpe * MathSqrt(252); // günlükten yıllık al
Yani, bir kez daha: komut dosyası, hisse senedi değişikliği ile 1 çubuk başına ortalama keskinliği bulur ve ardından yıllık olanı bulmak için bunu bir yıldaki bu tür çubukların sayısıyla değil, bir yıldaki bu tf'nin toplam çubuk sayısıyla (elbette kökü) çarpar. Bu da hatalıdır ve nihai rakamı olduğundan fazla gösterir.
Görünüşe göre, Sharpe test cihazında da aynı şekilde hesaplanıyor?
Kristian Kafarov #: komut dosyası, özkaynak değişikliği ile 1 çubuk başına ortalama Sharpe'yi bulur ve ardından yıllık olanı bulmak için bunu bir yıldaki bu tür çubukların sayısıyla değil, bir yıldaki bu tf'nin toplam çubuk sayısıyla (elbette kökü) çarpar. Bu da hatalıdır ve nihai rakamı olduğundan fazla gösterir
Bunu ben de fark ettim. Bu yüzden benim sürümümde sıfır çubukları hesaba katmak için bir seçenek ekledim.
Fiyatın logaritmasını okuyun
Diğer referansları kendiniz bulacaksınız
Fiyatın logaritmasını okuyun
Diğer referansları kendiniz bulacaksınız
Bir diğer son derece önemli nüans ise, bu senaryoda Sharpe hesaplanırken yalnızca özsermayede değişiklik olan çubukların dikkate alınmasıdır:
//--- add only if equity has changed if(m_equities[i] != prev_equity) { log_return = MathLog(m_equities[i] / prev_equity); // logaritmayı artır aver += log_return; // artışların ortalama logaritması AddReturn(log_return); // artan logaritma dizisini doldurun counter++; // geri dönüş sayacı } prev_equity = m_equities[i];Ortalama değişim daha sonra bu tür çubukların sayısına bölünerek bulunur:
Bununla birlikte, yıllık keskinliklere geçiş, sanki mevcut tf' nin tüm çubukları hesaplamada sayılmış gibi, zaman dilimi oranına dayanır:
Yani, bir kez daha: komut dosyası, hisse senedi değişikliği ile 1 çubuk başına ortalama keskinliği bulur ve ardından yıllık olanı bulmak için bunu bir yıldaki bu tür çubukların sayısıyla değil, bir yıldaki bu tf'nin toplam çubuk sayısıyla (elbette kökü) çarpar. Bu da hatalıdır ve nihai rakamı olduğundan fazla gösterir.
Görünüşe göre, Sharpe test cihazında da aynı şekilde hesaplanıyor?
komut dosyası, özkaynak değişikliği ile 1 çubuk başına ortalama Sharpe'yi bulur ve ardından yıllık olanı bulmak için bunu bir yıldaki bu tür çubukların sayısıyla değil, bir yıldaki bu tf'nin toplam çubuk sayısıyla (elbette kökü) çarpar. Bu da hatalıdır ve nihai rakamı olduğundan fazla gösterir
Bunu ben de fark ettim. Bu yüzden benim sürümümde sıfır çubukları hesaba katmak için bir seçenek ekledim.