我想在给定一系列价格数据的情况下找到股票的最大可能回报。鉴于您只能以未来的价格出售,我认为我需要在每一行上设置最高的未来价格:
def maxf(idx):
return prc[idx:].bid.max()
prc['MaxF'] = prc.index.map(lambda x: maxf(x))
此代码确实有效,但需要比pandas.cummax()更长的时间。是否有直接的矢量方式来编码?
答案 0 :(得分:6)
forward cummax是reverse cummax的同义词:
prc.bid[::-1].cummax()[::-1]
答案 1 :(得分:4)
@ Boud答案的numpy
版本将是
prc.assign(MaxF=np.maximum.accumulate(prc.bid.values[::-1])[::-1])
考虑数据框prc
np.random.seed([3,1415])
prc = pd.DataFrame(dict(bid=np.random.rand(10)))
prc
bid
0 0.444939
1 0.407554
2 0.460148
3 0.465239
4 0.462691
5 0.016545
6 0.850445
7 0.817744
8 0.777962
9 0.757983
然后:
prc.assign(MaxF=np.maximum.accumulate(prc.bid.values[::-1])[::-1])
bid MaxF
0 0.444939 0.850445
1 0.407554 0.850445
2 0.460148 0.850445
3 0.465239 0.850445
4 0.462691 0.850445
5 0.016545 0.850445
6 0.850445 0.850445
7 0.817744 0.817744
8 0.777962 0.777962
9 0.757983 0.757983
小数据的时间