我正在尝试在python上创建一个简单的backtester,它允许我评估交易策略的表现。作为反向测试者的一部分,我需要记录发生的事务。例如,
Day Stock Action Quantity
1 AAPL BUY 20
2 CSCO SELL 30
2 AMZN SELL 50
在交易模拟期间,我需要添加更多交易。
最有效的方法是什么?我应该在模拟开始时创建一个transactions
列表,并在我去的时候添加[5, 'AAPL', 'BUY', 20]
等列表。我应该使用字典还是numpy数组?或者直接只是一个Pandas DataFrame?
谢谢,
杰克
答案 0 :(得分:4)
list.append
操作是amortised constant time操作,因为它只涉及转移指针。
OTOH,numpy.ndarray
和pd.DataFrame
对象在内部表示为C中的数组,并且这些对象是不可变的。每次你"追加"对于数组/数据帧,您必须为旧数据的整个副本加上附加的重新分配新内存,并最终呈现线性复杂性。
因此,正如@ayhan在comment中所说,在list
中累积数据,然后在完成后加载到数据框中。