概述
我正在构建一个功能来测试我的投资策略的盈利能力。策略很简单,如果股票当天收盘下跌,我会在第二天把它押上去,如果它当天收盘,我会在第二天下注。这基本上是一种逆向策略。在
方法
我正在使用np.哪里(numpy)决定天气的功能这是一个成功或失败的交易。如果这只股票今天收盘下跌,第二天又上涨,那就是“赢”,如果下跌就是“亏损”。如果今天涨明天跌“赢”今天涨第二天涨“亏”
编码
df = pd.DataFrame({'Day':['Mon','Tues','Wed','Thurs','Fri','Mon','Tues','Wed','Thurs','Fri','Mon','Tues','Wed','Thurs','Fri'],
'DaysGainOrLoss':[0.02,-0.05,0.01,0.02,-0.01,-0.03,0.03,-0.01,0.01,0.03,-0.03,-0.05,-0.01,0.03,0.02]})
df['NextDaysGainOrLoss'] = df['DaysGainOrLoss'].shift(-1)
df['WinOrLoss'] = np.where(df.NextDaysGainOrLoss > 0,np.where(df.DaysGainOrLoss <=0, "Win","Loss"),np.where(df.DaysGainOrLoss > 0,"Win","Loss"))
print(df)
输出
^{pr2}$问题
这段代码适用于二进制结果,不管是赢还是输。如果我增加一个更复杂的标准,也就是说,现在我只想在交易日gainorloss为>;=0.05或<;=-.05的情况下进行交易。现在不是输赢,我现在不需要在不符合标准的时候出现。这个np.哪里对二进制结果没问题,但现在这个问题变得复杂了。我知道必须有更好的方法来处理这件事,但我不确定是什么。在
期望
Day DaysGainOrLoss NextDaysGainOrLoss WinOrLoss
0 Mon 0.02 -0.05 NoTrade
1 Tues -0.05 0.01 Win
2 Wed 0.01 0.02 NoTrade
3 Thurs 0.02 -0.01 NoTrade
4 Fri -0.01 -0.03 NoTrade
5 Mon -0.03 0.03 NoTrade
6 Tues 0.03 -0.01 NoTrade
7 Wed -0.01 0.01 NoTrade
8 Thurs 0.01 0.03 NoTrade
9 Fri 0.03 -0.03 NoTrade
10 Mon -0.03 -0.05 NoTrade
11 Tues -0.05 -0.01 Loss
12 Wed -0.01 0.03 NoTrade
13 Thurs 0.03 0.02 NoTrade
14 Fri 0.02 NaN NoTrade
您可以使用
apply
应用任意转换:输出
^{pr2}$您可以使
myfunc
任意复杂。在相关问题 更多 >
编程相关推荐