таким пользователем Майк:

аюсь сформировать сюжет за 6 месяцевпрокатка Коэффициент Шарпа с использованием Python с Pandas / NumPy.

Мои входные данные ниже:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style("whitegrid")

# Generate sample data
d = pd.date_range(start='1/1/2008', end='12/1/2015')
df = pd.DataFrame(d, columns=['Date'])
df['returns'] = np.random.rand(d.size, 1)
df = df.set_index('Date')
print(df.head(20))

             returns
Date                
2008-01-01  0.232794
2008-01-02  0.957157
2008-01-03  0.079939
2008-01-04  0.772999
2008-01-05  0.708377
2008-01-06  0.579662
2008-01-07  0.998632
2008-01-08  0.432605
2008-01-09  0.499041
2008-01-10  0.693420
2008-01-11  0.330222
2008-01-12  0.109280
2008-01-13  0.776309
2008-01-14  0.079325
2008-01-15  0.559206
2008-01-16  0.748133
2008-01-17  0.747319
2008-01-18  0.936322
2008-01-19  0.211246
2008-01-20  0.755340

Что я хочу

Тип сюжета, который я пытаюсь создать,это или жепервый сюжет отсюда (Смотри ниже).

Моя попытка

Вот уравнение, которое я использую:

def my_rolling_sharpe(y):
    return np.sqrt(126) * (y.mean() / y.std()) # 21 days per month X 6 months = 126

# Calculate rolling Sharpe ratio
df['rs'] = calc_sharpe_ratio(df['returns'])

fig, ax = plt.subplots(figsize=(10, 3))
df['rs'].plot(style='-', lw=3, color='indianred', label='Sharpe')\
        .axhline(y = 0, color = "black", lw = 3)

plt.ylabel('Sharpe ratio')
plt.legend(loc='best')
plt.title('Rolling Sharpe ratio (6-month)')
fig.tight_layout()
plt.show()

Проблема в том, что я получаю горизонтальную линию, поскольку моя функция задает единственное значение для коэффициента Шарпа. Это значение одинаково для всех дат. На графиках, приведенных в качестве примера, они показывают много соотношений.

Вопрос

Можно ли построить 6-месячный коэффициент Шарпа, который меняется от одного дня к следующему?

Ответы на вопрос(1)

Ваш ответ на вопрос