usa pcy rupam - kitzz03/WorldQuant-Alphas GitHub Wiki
m_minus=ts_mean(close, 30)-ts_mean(close, 10);
delta=(ts_max(m_minus, 10)-m_minus)/(ts_max(m_minus, 10)-ts_min(m_minus, 10));
PCY=0.2delta+0.8ts_delay(delta, 1);
PCY_avg=ts_mean(PCY, 120);
PCY_no_drift = PCY-PCY_avg;
signal = -(close)/vwap;
group=bucket(rank(cap),range='0.1,1,0.1');
alpha=trade_when (PCY_no_drift>ts_delay(PCY_no_drift, 1), signal,-1);
hump(group_neutralize(alpha,group),hump=0.0011)
m_minus=ts_mean(close, 30)-ts_mean(close, 10);
delta=(ts_max(m_minus, 10)-m_minus)/(ts_max(m_minus, 10)-ts_min(m_minus, 10));
PCY=0.2delta+0.8ts_delay(delta, 1);
PCY_avg=ts_mean(PCY, 120);
PCY_no_drift = PCY-PCY_avg;
signal = -(close)/vwap;
group=bucket(rank(cap),range='0.1,1,0.1');
alpha=trade_when (PCY_no_drift>ts_delay(PCY_no_drift, 1), signal,-1);
hump(group_neutralize(alpha,group),hump=0.0011)
Usa pcy Rupam:
Paper link: https://www.researchgate.net/publication/342586790_VOLUME_CYCLICALITY_RELIABLE_CAPITAL_INVESTMENT_SIGNALS_BASED_ON_TRADING_VOLUME_INFORMATION Initial idea:
Brain link:
Hypotheiss:
-close/vwap
Here, vwap refers to the volume-weighted average price, which can be used as the price equilibrium position of a stock, and close refers to the closing price. If close is much lower than vwap, it means that the stock is oversold and deviates too far from the equilibrium position. It is likely to rise in the future. We will give it a higher weight and go long, otherwise we will go short. This is the basic logic of this simple strategy.
It was not doing very well so we went on to find ways so that we can improve and we got a nice paper
A screen shot of a graph
Description automatically generated
Modification:
We read the paper and got to know the trigger conditions
We implemented the pcy condition only, because it was doing better than other one
Pcy:
first we calculate the difference between avg price of stock for 30 days and 10 days then we normalise it using the min max to get all stocks between a range.
Then we calculate the pcy, pcy_avg, and pcy_no_drift as suggested in the paper
The logic is if today pcy_no_drift is more than the previous pcy_no_drift this means the price of the stock is increasing and we should go long according to the signal (-close/vwap)
A graph on a white background
Description automatically generated
Further modification:
We applied group_neutralize to improve our neutralization starategy because a lot more depends on company’s cap also and we used hump to further reduce the turnover of the alpha.
A graph on a white background
Description automatically generated
Future work:
WE think combining both voc and pcy can get us really good results we are still working on it but we haven’t yet have build the right ideology maybe to perfectly combine those two ideas.