in src/backend/domain/data_providers/default.py [0:0]
def _calculate_initial_yield(self, dividend_values: Dict[str, Any], datetimes: List[str], eps_days: int = 10) -> List[Any]:
div_yield = []
first_eps_payments = []
last_eps_payments = []
first_price_date = datetime.strptime(datetimes[0], "%Y-%m-%d") - relativedelta(days=1)
first_yield_end = first_price_date
first_eps1_start, first_yield_start, first_eps2_start = self._get_dividend_yield_dates_with_epsilon(
first_price_date, eps_days
)
for div_payment in list(dividend_values.values())[::-1]:
if div_payment["datetime"] >= first_eps1_start and div_payment["datetime"] <= first_yield_end:
first_eps_payments.append(div_payment)
elif div_payment["datetime"] >= first_yield_start and div_payment["datetime"] <= first_eps1_start:
div_yield.append(div_payment)
elif (
len(first_eps_payments) == 0
and div_payment["datetime"] >= first_eps2_start
and div_payment["datetime"] <= first_yield_start
):
last_eps_payments.append(div_payment)
div_yield = first_eps_payments + div_yield + last_eps_payments
return div_yield