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.