:::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
基礎資料跟顧問資料一起合成會還不錯