Полагаю, вы знаете, как правильно нарезать временные рамки. Затем вы можете создать список, содержащий все значения покупки / продажи, где вы посчитаете значения продажи как отрицательные.
На данный момент вам не хватает только списка, который содержит все комбинации строк в этом временном окне. Этот список может быть создан с помощью модуля itertools, т. Е. С помощью:
time_window = [1, 2, 3]
for L in range(0, len(time_window)+1):
for subset in itertools.combinations(time_window, L):
print(subset)
На данный момент вы только тестируете его с требуемым значением.