我将尝试实现FIFO配对。
假设我有一个列表,其中包含买入/卖空数量和卖出/平仓数量,如下所示:
x = [100.0, -100.0, 100.0, 100.0, -200.0, 200.0, -100.0, -100.0, 100.0,-100.0]
我正在尝试分离买入和卖出,使它们的总和等于0。
i.e. x[0] is offset with x[1]
x[2] and x[3] is offset with x[4]
我正在尝试获取一个嵌套的列表,其中包含列表x的索引位置,如下所示:
[[[0], [1]], [[2, 3], [4]], [[5], [6, 7]], [[8], [9]]]
如果初始列表是相反的,我期望得到完全相同的结果:
x = [-100.0, 100.0, -100.0, -100.0, 200.0, -200.0, 100.0, 100.0, -100.0,100.0]
基本上,每当累积总和穿过 0 时,我就会重置配对。
非常感谢您的帮助!
我已经实现了部分解决方案,其中列表具有完美的偏移大小,例如:
def find_matching_position(trade_list):
solutions = list(zip([i for i, x2 in enumerate(trade_list) if x2 == trade_list[0]],
[i for i, x2 in enumerate(trade_list) if x2 == trade_list[0] * -1]))
return [sorted(x) for x in solutions]
x = [100, 100, -100 , 100, -100, -100]
find_matching_position(x)
[[0, 2], [1, 4], [3, 5]]