public void UpdateStateUntil(DateTime finalDate)
        {
            var currentState = _careTaker.GetAssetCurrentState();

            var hasMovements = UpdateMovements(currentState);
            var hasState     = currentState._date != DateTime.MinValue;

            if (!hasState && !hasMovements)
            {
                return;
            }

            var currentDate = hasState ? currentState._date.AddDays(1) : _movements.First().TradeDate;

            while (currentDate <= finalDate)
            {
                UpdateState(currentDate);
                currentDate = currentDate.AddDays(1);
            }
        }