Т.е. для каждого максимума нужно найти такой последующий минимум, чтобы разница между максимумом и минимумом была наибольшей, так? И затем нужно найти наибольшую из всех таких разниц, и соответствующие ей элементы?
Я бы сделал это примерно так. Не уверен, что сработате сразу, но надеюсь что идея передана.
equity_result1 = [ ... ] # твои данные - значения эквити во времени
# определяем индексы таких элементов, которые больше своих соседей слева и справа.
local_max_idx = [ i for i in range(1, len(equity_result1) - 1) if equity_result1[i-1] < equity_result1[i] and equity_result1[i+1] < equity_result1[i] ]
# определяем минимумы для интервалов, следующих за соотв. локальным максимумом
local_min = [ min(equity_result1[i+1:]) for i in local_max_idx ]
# определяем индексы этих минимумов в списке equity_result1
local_min_idx = [ i+1+equity_result1[i+1:].index(minval) for i, minval in zip(local_max_idx, local_min) ]
# собираем сведения о "перепадах" в один список пар индексов (максимум, минимум)
differences = list(zip(local_max_idx, local_min_idx))
# ищем наибольший "перепад" по критерию "разность между значением максимума и минимума"
i_max, i_min = max(differences, key = lambda item: equity_result1[item[0]] - equity_result1[item[1]])
# интересующий тебя интервал - между i_max и i_min включительно
Не сообразил сразу, но код кривой - если у тебя искомый максимум это начальный элемент equity_result1, код его не увидит.