pv数据
| 0阶数据 (原始) | 一阶数据 (派生) | 二阶数据 (高阶特征 & 技术指标) | 三阶数据 (组合/因子) |
|---|---|---|---|
| open | cumret:prod(1+returns)-1excess_ret: returns - rffear: ts_mean(abs(returns - market_return)/(abs(returns)+abs(market_return)), 20) |
liquidity-adjusted return:returns / (1+Illiquidity) |
|
| close | returns:(close - close[-1]) / close[-1]— vwap: sum(close*volume)/sum(volume) |
volatility:ts_std(returns, 20)RSI (relative strength index) MACD (EMA_diff(close)) ROC: (close_t/close_{t-n} - 1) |
risk-adjusted momentum:momentum / volatility |
| high | maxdrawdown:(peak(close) - trough(close)) / peak(close)Williams %R: (HH_n - close)/(HH_n-LL_n) |
volume-adjusted maxdrawdown:maxdrawdown / adv20 |
|
| low | downside_vol:ts_std(min(returns,0),20)Stochastic %K/%D: (close - LL_n)/(HH_n-LL_n) |
reversal-risk:(-returns(1m)) / downside_vol |
|
| volume | adv20:ts_mean(volume, 20)log_volume: log(volume)volume_z: (volume - mean(volume,20))/std |
Illiquidity:abs(returns) / volumeOBV (on-balance volume) CMF (Chaikin money flow) |
liquidity_momentum:momentum * (-Illiquidity) |
| sharesout | mkt_cap:close * sharesoutturnover: volume / sharesoutturn20: ts_mean(turnover, 20) |
size_effect:log(mkt_cap) |
scaled_turnover:turnover / size_effect |
| vwap | spread:(high - low)/vwapAmihud illiq: ts_mean(abs(returns)/dollar_volume,20) |
liquidity_volatility:volatility * Amihud_illiq |
|
| dollar_vol | dollar_volume:close * volume |
turnover_vol:ts_std(turnover,20) |
volume_volatility_ratio:volatility / turnover_vol |
| ohlc | hl_range:(high - low)/closeoc_gap/overnight return: (open - close[-1])/close[-1] |
realized_vol:sqrt(sum(log(high/low)^2 + log(close/open)^2 ... over window)) |
gap_volatility:oc_gap / realized_vol |
| returns | momentum:ts_mean(returns, 12m)reversal: -returns(1m) |
momentum_reversal:momentum * reversalvol_mom:momentum * (1/volatility) |
|
| dividend 分红 split 拆股 |
- rsv(未成熟随机值) = (close - ts_min(low, n)) / (ts_max(high, n) - ts_min(low, n)) n=9
对应关系
- cap = close x sharesout
- $\text{adj close} = \frac{close}{\prod\text{adj factor}}\approx \frac{close}{\sum(\text{adj factor}-1)+1}$
adj_close是为了表示的是close的一个长期的趋势, 连续的用adj_factor进行调整- 在相邻两天局部看, $\frac{\text{adj close}}{\text{adj close[-1]}}=\frac{close}{close[-1]}\cdot \frac{1}{\text{adj factor}}$
- $\prod\text{adj factor}=\prod(1+(\text{adj factor}-1))$ 只要一阶项就是后面那个加法的形式
- adj_factor = 1/split(拆股日) , adj_factor = 1 - dividend/close_pre(除权日)
- adj_factor没有事件的时候是1, 有事的时候<1
- 因为我们想让不同时间的adj_close可比较
returns = (close/adj_factor-close_raw[-1])/close_raw[-1]- 因为拆股和除权都是比较稀疏的事件,
- Yahoo/Tiingo的adj close用的是后向复权(以最新日为锚点): 最新的adj close和实际的close更接近, 很久之前的adj close会很小