Coverage for source/indicators/volatility_indicator_handler.py: 42%
12 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-07-30 20:59 +0000
« prev ^ index » next coverage.py v7.8.0, created at 2025-07-30 20:59 +0000
1# indicators/volatility_indicator_handler.py
3# global imports
4import pandas as pd
6# local imports
7from source.indicators import IndicatorHandlerBase
9class VolatilityIndicatorHandler(IndicatorHandlerBase):
10 """
11 Implements volatility indicator. It measures the price fluctuations over a
12 certain period of time.
13 """
15 def __init__(self, window_size: int = 10) -> None:
16 """
17 Class constructor. Initializes the window size for volatility calculation.
19 Parameters:
20 window_size (int): Size of the window used for calculating volatility.
21 """
23 self.__window_size = window_size
25 def calculate(self, data: pd.DataFrame) -> pd.DataFrame:
26 """
27 Calculates volatility indicator values for given data.
29 Parameters:
30 data (pd.DataFrame): Data frame with input data.
32 Returns:
33 (pd.DataFrame): Output data with calculated volatility values.
34 """
36 volatility_df = pd.DataFrame(index = data.index)
37 volatility_df['volatility'] = data['close'].pct_change(). \
38 rolling(window = self.__window_size, min_periods = 1).std()
39 volatility_df = volatility_df.fillna(0)
41 max_volatility = volatility_df['volatility'].max()
42 volatility_df['volatility'] = volatility_df['volatility'] / max_volatility
44 return volatility_df