循环矢量化以更新交易头寸

时间:2019-12-06 19:07:05

标签: loops vectorization slice cumulative-sum datetimeindex

我有一个datetimeindex数据框,其中包含基于某些移动平均和价格交叉的买入和卖出信号的列。当我尝试按照以下逻辑创建用于购买交易,出售交易和产生的头寸的列时,我没有找到这样做的矢量化方法,而是求助于循环。谁能指出我正确的方向来完成循环的相同逻辑,但采用更多的Python方式?谢谢

在此阶段,数据框的4列为:DatePriceBuy SignalSell Signal。下面的示例显示4行,每个行的值(日期除外)均具有值。

Price Buy Signal Sell Signal
  100       TRUE       FALSE
  101      FALSE       FALSE
   95      FALSE        TRUE
  102       TRUE       FALSE

我想创建3列,一列用于“买”,另一列用于“卖”,最后一列用于“头寸”。根据以下逻辑,三列将仅包含1,-1或0:

时间t的位置=时间t-1的位置+买入+卖出。

如果“买入信号”为True且(t-1的位置为零或-1),则买入为1。

如果“买入信号”为真且在t-1处的头寸为1,则买入为0。

如果卖出信号为真且t-1的头寸为1,则买入为-1。

如果“卖出信号”为“真”且(t-1的位置为零或1),则卖出为-1。

如果卖出信号为真且t-1处的头寸为-1,则卖出为0。

如果“买入信号”为“真”且在t-1的头寸为-1,则卖出为1。

正如我所指出的,我通过循环找到了解决方案,但是应该有一种方法可以应用矢量化,而我之前的所有尝试都失败了。

谢谢您的考虑

0 个答案:

没有答案
相关问题