Skip to content

Commit 5e2344d

Browse files
committed
adiciona funções para visualização da ewma e do rolling std
1 parent 72561da commit 5e2344d

File tree

1 file changed

+43
-11
lines changed

1 file changed

+43
-11
lines changed

turingquant/metrics.py

Lines changed: 43 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -226,31 +226,63 @@ def test_metrics():
226226
print("Beta: ", beta(returns, market))
227227

228228
def ewma_volatility(close_prices,ret,window,plot=True):
229+
"""
230+
Essa função possibilita a visualização da volatilidade a partir do cálculo da EWMA e da plotagem do gráfico
231+
dessa métrica ao longo de um período.
232+
233+
Parâmetros:
234+
close_prices (pd.DataFrame): série de preços de fechamento que será utilizado de base para o cálculo da EWMA;
235+
ret (string): tipo de retorno (simple - 'simp' ou logarítmico - 'log') que será utilizado de base para cálculo;
236+
window (int): janela móvel para cálculo da EWMA;
237+
plot (bool): se True, plota o gráfico de linha da EWMA ao longo do tempo
238+
239+
Retorna:
240+
ewma_volatility (pd.DataFrame): um dataframe indexado à data com os valores de EWMA dos últimos window dias
241+
"""
229242
if ret == 'log':
230243
returns = np.log(close_prices/close_prices.shift(1))
231-
if ret == 'simp':
244+
elif ret == 'simp':
232245
returns = close_prices.pct_change()
246+
else:
247+
raise ValueError("Tipo de retorno inválido")
233248
ewma_volatility = returns.ewm(span=window).std()
234249
ewma_volatility = pd.Series.to_frame(ewma_volatility)
235-
if plot == True:
236-
plt.plot(ewma_volatility)
237-
plt.title("Média Móvel Exponencial")
238-
plt.show()
250+
if plot:
251+
fig = px.line(ewma_volatility,x=ewma_volatility.index,y='Close',title='EWMA')
252+
fig.update_xaxes(title_text='Tempo')
253+
fig.update_yaxes(title_text='EWMA')
254+
fig.show()
239255
return ewma_volatility
240256
if plot == False:
241257
return ewma_volatility
242-
258+
243259
def rolling_std(close_prices,ret,window,plot=True):
260+
"""
261+
Essa função possibilita a visualização da volatilidade a partir do cálculo da desvio padrão móvel e da plotagem do gráfico dessa
262+
métrica ao longo de um período.
263+
264+
Parâmetros:
265+
close_prices (pd.DataFrame): série de preços de fechamento que será utilizado de base para o cálculo do desvio padrão móvel;
266+
ret (string): tipo de retorno (simple - 'simp' ou logarítmico - 'log') que será utilizado de base para cálculo;
267+
window (int): janela móvel para cálculo do desvio padrão móvel;
268+
plot (bool): se True, plota o gráfico de linha do desvio padrão móvel ao longo do tempo
269+
270+
Retorna:
271+
rolling_std (pd.DataFrame): um dataframe indexado à data com os valores de desvio padrão móvel dos últimos window dias
272+
"""
244273
if ret == 'log':
245274
returns = np.log(close_prices/close_prices.shift(1))
246-
if ret == 'simp':
275+
elif ret == 'simp':
247276
returns = close_prices.pct_change()
277+
else:
278+
raise ValueError("Tipo de retorno inválido")
248279
rolling_std = returns.rolling(window).std()
249280
rolling_std = pd.Series.to_frame(rolling_std)
250-
if plot == True:
251-
plt.plot(rolling_std)
252-
plt.title("Desvio Padrão Móvel")
253-
plt.show()
281+
if plot:
282+
fig = px.line(rolling_std, x=rolling_std.index, y='Close',title='Desvio Padrão Móvel')
283+
fig.update_xaxes(title_text='Tempo')
284+
fig.update_yaxes(title_text='Desvio padrão móvel')
285+
fig.show()
254286
return rolling_std
255287
if plot == False:
256288
return rolling_std

0 commit comments

Comments
 (0)