【发布时间】:2014-10-23 00:32:59
【问题描述】:
我试图了解 Pandas DataFrames 如何向下复制信息,然后重置直到下一个变量发生变化...具体如下,一旦我的 Signal 或 Signal_Diff 从 1 切换到 0,如何使 Share_Amt_To_Buy 重置为 0?
在 Share_Amt_To_Buy 上使用 .cumsum() 最终会降低价值并积累,这并不是我想要做的。
我的目标是,当 Signal 从 0 变为 1 时,会计算并复制 Share_Amt_To_Buy,直到 Signal 切换回 0。然后如果 Signal 再次变为 1,我希望根据该时间点重新计算 Share_Amt_To_Buy。
希望这是有道理的 - 请告诉我。
Signal Signal_Diff Share_Amt_To_Buy (Correctly) Share_Amt_To_Buy (Currently)
0 0 0 0
0 0 0 0
0 0 0 0
1 1 100 100
1 0 100 100
1 0 100 100
0 -1 0 100
0 0 0 100
1 1 180 280
1 0 180 280
如您所见,我的信号从 0 到 1 交替变化,这意味着以下内容: 0 = 没有交易(或头寸) 1 = 交易(持仓)
Signal_Diff 计算如下
portfolio['Signal_Diff'] = portfolio['Signal'].diff().fillna(0.0)
“Share_Amt_To_Buy”列是在信号从 0 变为 1 时计算的。我以以下为例进行计算
initial_cap = 100000.0
portfolio['close'] = my stock's closing prices as a float
portfolio['Share_Amt'] = np.where(variables['Signal']== 1.0, np.round(initial_cap / portfolio['close'] * 0.25 * portfolio['Signal']), 0.0).cumsum()
portfolio['Share_Amt_To_Buy'] = (portfolio['Share_Amt']*portfolio['Signal'])
【问题讨论】:
标签: python pandas dataframe finance stock