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

1# indicators/volatility_indicator_handler.py 

2 

3# global imports 

4import pandas as pd 

5 

6# local imports 

7from source.indicators import IndicatorHandlerBase 

8 

9class VolatilityIndicatorHandler(IndicatorHandlerBase): 

10 """ 

11 Implements volatility indicator. It measures the price fluctuations over a 

12 certain period of time. 

13 """ 

14 

15 def __init__(self, window_size: int = 10) -> None: 

16 """ 

17 Class constructor. Initializes the window size for volatility calculation. 

18 

19 Parameters: 

20 window_size (int): Size of the window used for calculating volatility. 

21 """ 

22 

23 self.__window_size = window_size 

24 

25 def calculate(self, data: pd.DataFrame) -> pd.DataFrame: 

26 """ 

27 Calculates volatility indicator values for given data. 

28 

29 Parameters: 

30 data (pd.DataFrame): Data frame with input data. 

31 

32 Returns: 

33 (pd.DataFrame): Output data with calculated volatility values. 

34 """ 

35 

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) 

40 

41 max_volatility = volatility_df['volatility'].max() 

42 volatility_df['volatility'] = volatility_df['volatility'] / max_volatility 

43 

44 return volatility_df