@@ -226,31 +226,63 @@ def test_metrics():
226226 print ("Beta: " , beta (returns , market ))
227227
228228def 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+
243259def 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