Coverage for source/environment/price_reward_validator.py: 100%

13 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-05-30 15:13 +0000

1# environment/price_reward_validator.py 

2 

3from .reward_validator_base import RewardValidatorBase, Order 

4 

5class PriceRewardValidator(RewardValidatorBase): 

6 """ 

7 Awards reward for successful or failure order basing on gained or lost value. 

8 """ 

9 

10 def __init__(self, coefficient: float = 1.0, normalizable: bool = False) -> None: 

11 """ 

12 Class constructor. 

13 

14 Parameters: 

15 coefficient (float): Coefficient to be multiplied with gained or lost 

16 order value. 

17 normalizable (bool): Indicates if calculated reward should be divided 

18 by initial order value. Normalizable approach ensures that bigger orders 

19 contribute the same way to the reward as smaller orders. 

20 """ 

21 

22 self.__coefficient: float = coefficient 

23 self.__normalizable: bool = normalizable 

24 

25 def validate_orders(self, orders: list[Order]) -> float: 

26 """ 

27 Calculates number of points to be rewarded for list of closed trades. 

28 

29 Parameters: 

30 orders (list[Order]): Orders to be validated. 

31 

32 Returns: 

33 (float): Calcualted reward. 

34 """ 

35 

36 reward = 0 

37 for order in orders: 

38 summand = (order.current_value - order.initial_value) * self.__coefficient 

39 if (self.__normalizable): 

40 summand = summand / order.initial_value * 100 

41 reward = reward + summand 

42 return reward