---
# System prepended metadata

title: worldquant 策略筆記 202402
tags: [worldquant]

---


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