def _add_expected_dividend_frequency()

in src/backend/domain/data_providers/default.py [0:0]


    def _add_expected_dividend_frequency(self, dividends: Dict[str, Any]):
        if dividends:
            dividend_datetimes = [i["datetime"] for i in dividends.values()]

            if len(dividend_datetimes) == 1:
                dividends[list(dividends.keys())[0]]["expected_frequency"] = 1

                return dividends

            payment_after_last_dividend_date = dividend_datetimes[0] + (dividend_datetimes[0] - dividend_datetimes[1])
            payment_before_first_dividend_date = dividend_datetimes[-1] - (dividend_datetimes[-2] - dividend_datetimes[-1])

            for index, (_, value) in enumerate(dividends.items()):
                if index == 0:
                    day_difference_next_payment = payment_after_last_dividend_date - value["datetime"]
                    day_difference_previous_payment = value["datetime"] - dividend_datetimes[index + 1]
                elif index == len(dividend_datetimes) - 1:
                    day_difference_next_payment = dividend_datetimes[index - 1] - value["datetime"]
                    day_difference_previous_payment = value["datetime"] - payment_before_first_dividend_date
                else:
                    day_difference_previous_payment = value["datetime"] - dividend_datetimes[index + 1]
                    day_difference_next_payment = dividend_datetimes[index - 1] - value["datetime"]

                expected_frequency = self._get_expected_frequency(
                    day_difference_next_payment=day_difference_next_payment.days,
                    day_difference_previous_payment=day_difference_previous_payment.days,
                )

                value["expected_frequency"] = expected_frequency

        return dividends