Calculate ratio compared with the previous period for the selected records
Task:Find the trading information and increase rate of a stock in the three trading days with the highest share price.
Python
1 | import pandas as pd |
2 | stock1001_file = "E:\\txt\\stock1001_price.txt" |
3 | stock1001 = pd.read_csv(stock1001_file,sep = '\t') |
4 | CL = stock1001['CL'] |
5 | CL_psort = CL.argsort()[::-1].iloc[:3].values |
6 | CL_psort_shift1 = CL_psort-1 |
7 | CL_rise = CL[CL_psort].values/CL[CL_psort_shift1].values-1 |
8 | max_3 = stock1001.loc[CL_psort].reset_index(drop = True) |
9 | max_3['RISE'] = CL_rise |
10 | print(max_3) |
Python can't use position to directly calculate ratio compared with the previous period. It needs to construct a position sequence of the previous period and then calculate.
esProc
A | ||
1 | =Stocks.sort(TradingDate) | |
2 | =A1.psort(ClosePrice:-1)([1,2,3]) | The position of three days with highest share price |
3 | =A1.calc(A2, ClosePrice/ClosePrice[-1]-1) | Calculate the increase rate for the three days |
4 | =A1(A2).new(TradingDate,ClosePrice,A3(#):IncreaseRate) |
esProc is very good at these calculations related to order and position, and the code is simple and in line with natural thinking.