:::success 1. ``` data = divide({0},group_median({0}, {2})); group_neutralize(ts_rank(data, {1}), {2}); 相除時小心分母過小的問題,可以加個 const 在分母的部分 10 ^-4 min max scaler 最小值為 1 ``` 2. 1,2 兩種基本上很像, ``` data = divide({0},group_mean({0}, cap, {2})); group_neutralize(ts_rank(data, {1}), {2}); ``` 3. ``` data = divide({0},group_median({0}, {2})); group_neutralize(rank(data), {2}); ``` 4. ``` std = ts_std_dev({0}, {1}); group_neutralize(ts_max_diff({0}, {1}) - std, {2}) x - max (max - min) => min max dif (max - min) / std 比較好一點,減法的物理意義比較小 [1,1,2,5,0] [1,1,2,0,5] 5 - 0 記得可以同時看一下 arg_max arg_min ``` 5. ``` data = {0};group = {2};interval = {1}; id1 = (data - last_diff_value(data, interval); id1 = id1 - group_median(id1, group); data2 = id1 / (last_diff_value(id1, interval) * days_from_last_change(data)); group_neutralize(ts_rank(data2, interval), group) 分母加上 1 + .... 可以承上 dif from last change 式子可以簡化 data / last dif value 多數情況分子有可能是正負 50 50 分子的分佈可以去思考一下 這樣的 template 比較適用於純一點的 data 上面,第一手資料比較適合在這,model 資料集比較不適合放在這樣的 data 之中 ``` - 與上一次的值相比,目前的值上升還是下降的比率,這個比率 rank 完再 group neturialize 應該跟 group_rank效果一樣 6. ``` interval = {1};data = {0};group={2}; -group_neutralize(ts_rank(ts_returns(data, interval) / interval), group) ``` data 如果有正有負 用 ts_return 可能會有點奇怪 -1 1 => (1 - -1) / -1 = -2 1 3 => (3 - 1) / 1 = 2 - 這邊用 ts_rank 是為了避免個股的權重過重 7. ``` data = ts_decay_exp_window({0} / group_std_dev({0}, {2}), {1}, factor = 0.5) group_neutralize(data, {2}) 上面兩行放在一起,就跟group z score 一樣的概念? 一樣會有值域的問題 先減後減可能會有差,嘗試計算一下 {0} 如果都是正的話 groupu std 就變成過訊號了 d1 g1 g1_std d2 g1 g1_std d3 g2 g2_std d4 g2 g2_std 相除的時候記得要小心分子的資料分布,同時也要注意分母的正負 ``` - 這邊嘗試使用 decay exp window 是思考說,前幾天的資訊多少也可能會影響到未來的表現 8. ``` data = {0} / group_mean({0}, cap, {2}); group_neutralize(ts_rank(ts_min_max_cps(data, {1}, f = 2), {1}), {2}) ``` 9. ``` data = ts_weighted_delay({0}) / group_mean({0}, cap, {2}); group_neutralize(ts_rank(data, {1}), {2}) ``` 10. ``` data = close;interval=5;group=market; group_neutralize(ts_decay_exp_window(sign(ts_delta(data, 1)), interval, factor=0.5),group); ``` 11. ``` 5 20 相差有可能太大或者太小 ts_mean 可能會更好一點,或者固定同 interval 不同 factor data = {0};interval = {1};interval2 = {3};group = {2}; id1 = ts_decay_exp_window(data, interval, factor = 0.6); id2 = ts_decay_exp_window(data, interval2, factor = 0.6); dif = id1 - id2; group_neutralize(ts_sum(ts_delta(dif, 1) > 0, interval), group decay linear ``` ::: :::info 1. ``` data = ts_delta({0}, 1); group_neutralize(ts_rank(ts_decay_exp_window(data, {1}), {1}), {2}) ``` ::: ts_op(data, interval) group_op(ts_op(data, interval), group) 太多層 ts_op 有可能會 overfit 可能需要特別去避免 樹的一小部分 work ### 問題 - rank 後再做 group_neutralize 跟直接做 group_rank 效果一樣嗎? - group_neutralize 特徵 - 特徵.平均值 ### feedback - ts_regression data group_data - ts_corr - winsorize(x, std=4) 將超出值域的過濾掉的概念 model109 othr432 analysis14, 17, 16 othr193 mdl47 fnd7 risk60 mdl25 mdl26 ts_corr 穩定 進去之前強制分佈 進去前 rank lookback date 63 以上最後 decay linear 會好一點 ts.corvance 基礎資料跟顧問資料一起合成會還不錯