cnhkmcp 2.0.3__py3-none-any.whl → 2.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/README.md +38 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/config.json +6 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/get_knowledgeBase_tool/ace_lib.py +1510 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/get_knowledgeBase_tool/fetch_all_datasets.py +157 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/get_knowledgeBase_tool/fetch_all_documentation.py +132 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/get_knowledgeBase_tool/fetch_all_operators.py +99 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/get_knowledgeBase_tool/helpful_functions.py +180 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/icon.ico +0 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/icon.png +0 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/test.txt +1 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/main.py +581 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/process_knowledge_base.py +280 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/rag_engine.py +265 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/requirements.txt +12 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/run.bat +3 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/vector_db/chroma.sqlite3 +0 -0
- cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242//321/211/320/266/320/246/321/206/320/274/320/261/321/210/342/224/220/320/240/321/210/320/261/320/234/321/206/320/231/320/243/321/205/342/225/235/320/220/321/206/320/230/320/241.py +265 -0
- cnhkmcp/untracked/APP/Tranformer/Transformer.py +2804 -11
- cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates.json +1524 -889
- cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_error.json +884 -111
- cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_success.json +442 -168
- cnhkmcp/untracked/APP/Tranformer/template_summary.txt +2775 -1
- cnhkmcp/untracked/APP/ace.log +2 -0
- cnhkmcp/untracked/APP/give_me_idea/fetch_all_datasets.py +157 -0
- cnhkmcp/untracked/APP/give_me_idea/fetch_all_operators.py +99 -0
- cnhkmcp/untracked/APP/simulator/simulator_wqb.py +16 -16
- cnhkmcp/untracked/APP/static/brain.js +61 -0
- cnhkmcp/untracked/APP/static/script.js +140 -0
- cnhkmcp/untracked/APP/templates/index.html +25 -4
- cnhkmcp/untracked/APP//321/210/342/224/220/320/240/321/210/320/261/320/234/321/206/320/231/320/243/321/205/342/225/235/320/220/321/206/320/230/320/241.py +70 -8
- {cnhkmcp-2.0.3.dist-info → cnhkmcp-2.1.0.dist-info}/METADATA +1 -1
- {cnhkmcp-2.0.3.dist-info → cnhkmcp-2.1.0.dist-info}/RECORD +36 -20
- cnhkmcp/untracked/APP/hkSimulator/ace.log +0 -0
- cnhkmcp/untracked/APP/hkSimulator/autosim_20251205_145240.log +0 -0
- cnhkmcp/untracked/APP/hkSimulator/autosim_20251215_030103.log +0 -0
- {cnhkmcp-2.0.3.dist-info → cnhkmcp-2.1.0.dist-info}/WHEEL +0 -0
- {cnhkmcp-2.0.3.dist-info → cnhkmcp-2.1.0.dist-info}/entry_points.txt +0 -0
- {cnhkmcp-2.0.3.dist-info → cnhkmcp-2.1.0.dist-info}/licenses/LICENSE +0 -0
- {cnhkmcp-2.0.3.dist-info → cnhkmcp-2.1.0.dist-info}/top_level.txt +0 -0
|
@@ -403,6 +403,2780 @@
|
|
|
403
403
|
|
|
404
404
|
### 9. 分紅/現金流組間殘差(簡版)
|
|
405
405
|
* **表達式**: `alpha = ts_zscore(ts_backfill(<cf_or_div_field>,90)); g = group_mean(alpha, <group>, <weight_opt>); resid = alpha - g; group_zscore(resid, <group>)`。
|
|
406
|
-
* **核心思想**:
|
|
406
|
+
* **核心思想**: 先回填平滑,再对組均值做殘差,捕捉組內相對高/低分紅或現金流質量。
|
|
407
407
|
* **適用場景**: fnd8/fnd6/topdiv等分紅現金流字段;行業/國家分組。
|
|
408
408
|
* **優化**: 權重可用log(cap)或vol逆;對resid再做`ts_mean`平滑。
|
|
409
|
+
|
|
410
|
+
---
|
|
411
|
+
|
|
412
|
+
## 模板格式说明
|
|
413
|
+
|
|
414
|
+
每个模板使用以下占位符格式:
|
|
415
|
+
- `<ts_op/>` - 时间序列操作符,如 `ts_rank`, `ts_mean`, `ts_delta`, `ts_ir`, `ts_stddev`, `ts_zscore`
|
|
416
|
+
- `<group_op/>` - 分组操作符,如 `group_rank`, `group_neutralize`, `group_zscore`
|
|
417
|
+
- `<vec_op/>` - 向量操作符,如 `vec_avg`, `vec_sum`, `vec_max`, `vec_min`, `vec_stddev`
|
|
418
|
+
- `<field/>` - 数据字段占位符
|
|
419
|
+
- `<d/>` - 时间窗口参数,常用值: `{5, 22, 66, 126, 252, 504}`
|
|
420
|
+
- `<group/>` - 分组字段,如 `industry`, `sector`, `subindustry`, `market`
|
|
421
|
+
|
|
422
|
+
---
|
|
423
|
+
|
|
424
|
+
## 第一部分:基础结构模板 (TPL-001 ~ TPL-010)
|
|
425
|
+
|
|
426
|
+
### TPL-001: 基本面时序排名
|
|
427
|
+
```
|
|
428
|
+
模板: <group_op/>(<ts_op/>(<field/>, <d/>), <group/>)
|
|
429
|
+
```
|
|
430
|
+
| 占位符 | 可选值 | 说明 |
|
|
431
|
+
|--------|--------|------|
|
|
432
|
+
| `<ts_op/>` | `ts_rank`, `ts_zscore`, `ts_delta`, `ts_ir` | 时序比较操作 |
|
|
433
|
+
| `<group_op/>` | `group_rank`, `group_zscore`, `group_neutralize` | 截面比较操作 |
|
|
434
|
+
| `<field/>` | 基本面字段: `eps`, `sales`, `assets`, `roe`, `roa` | 公司财务数据 |
|
|
435
|
+
| `<d/>` | `66`, `126`, `252` | 季度/半年/年 |
|
|
436
|
+
| `<group/>` | `industry`, `sector` | 行业分组 |
|
|
437
|
+
|
|
438
|
+
**示例**:
|
|
439
|
+
```
|
|
440
|
+
group_rank(ts_rank(eps, 252), industry)
|
|
441
|
+
group_zscore(ts_ir(sales, 126), sector)
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
---
|
|
445
|
+
|
|
446
|
+
### TPL-002: 利润/规模比率模板
|
|
447
|
+
```
|
|
448
|
+
模板: <ts_op/>(<profit_field/>/<size_field/>, <d/>)
|
|
449
|
+
```
|
|
450
|
+
| 占位符 | 可选值 | 说明 |
|
|
451
|
+
|--------|--------|------|
|
|
452
|
+
| `<ts_op/>` | `ts_rank`, `ts_zscore`, `ts_mean`, `ts_delta` | 时序操作 |
|
|
453
|
+
| `<profit_field/>` | `net_income`, `ebitda`, `operating_income`, `gross_profit` | 利润类字段 |
|
|
454
|
+
| `<size_field/>` | `assets`, `cap`, `sales`, `equity` | 规模类字段 |
|
|
455
|
+
| `<d/>` | `66`, `126`, `252` | 中长期窗口 |
|
|
456
|
+
|
|
457
|
+
**示例**:
|
|
458
|
+
```
|
|
459
|
+
ts_rank(net_income/assets, 252)
|
|
460
|
+
ts_zscore(ebitda/cap, 126)
|
|
461
|
+
ts_rank(operating_income/cap, 252)^2
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
---
|
|
465
|
+
|
|
466
|
+
### TPL-003: 向量数据处理模板 (VECTOR字段必用)
|
|
467
|
+
```
|
|
468
|
+
模板: <ts_op/>(<vec_op/>(<vector_field/>), <d/>)
|
|
469
|
+
```
|
|
470
|
+
| 占位符 | 可选值 | 说明 |
|
|
471
|
+
|--------|--------|------|
|
|
472
|
+
| `<ts_op/>` | `ts_rank`, `ts_mean`, `ts_delta`, `ts_ir`, `ts_zscore` | 时序操作 |
|
|
473
|
+
| `<vec_op/>` | `vec_avg`, `vec_sum`, `vec_max`, `vec_min`, `vec_stddev` | 向量聚合 |
|
|
474
|
+
| `<vector_field/>` | 分析师数据: `anl4_*`, `analyst_*`, `oth41_*` | VECTOR类型字段 |
|
|
475
|
+
| `<d/>` | `22`, `66`, `126` | 短中期窗口 |
|
|
476
|
+
|
|
477
|
+
**示例**:
|
|
478
|
+
```
|
|
479
|
+
ts_delta(vec_avg(anl4_eps_mean), 22)
|
|
480
|
+
ts_rank(vec_sum(analyst_estimate), 66)
|
|
481
|
+
ts_ir(vec_avg(oth41_s_west_eps_ftm_chg_3m), 126)
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
---
|
|
485
|
+
|
|
486
|
+
### TPL-004: 双重中性化模板
|
|
487
|
+
```
|
|
488
|
+
模板:
|
|
489
|
+
a = <ts_op/>(<field/>, <d/>);
|
|
490
|
+
a1 = group_neutralize(a, bucket(rank(cap), range="<range/>"));
|
|
491
|
+
group_neutralize(a1, <group/>)
|
|
492
|
+
```
|
|
493
|
+
| 占位符 | 可选值 | 说明 |
|
|
494
|
+
|--------|--------|------|
|
|
495
|
+
| `<ts_op/>` | `ts_zscore`, `ts_rank`, `ts_ir` | 时序操作 |
|
|
496
|
+
| `<field/>` | 任意数据字段 | 主信号 |
|
|
497
|
+
| `<d/>` | `66`, `126`, `252` | 时间窗口 |
|
|
498
|
+
| `<range/>` | `"0.1,1,0.1"`, `"0,1,0.1"` | 市值分组范围 |
|
|
499
|
+
| `<group/>` | `industry`, `sector`, `subindustry` | 行业分组 |
|
|
500
|
+
|
|
501
|
+
**示例**:
|
|
502
|
+
```
|
|
503
|
+
a = ts_zscore(fnd72_s_pit_or_is_q_spe_si, 252);
|
|
504
|
+
a1 = group_neutralize(a, bucket(rank(cap), range="0.1,1,0.1"));
|
|
505
|
+
group_neutralize(a1, subindustry)
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
---
|
|
509
|
+
|
|
510
|
+
### TPL-005: 回归中性化模板
|
|
511
|
+
```
|
|
512
|
+
模板:
|
|
513
|
+
a = <ts_op/>(<field/>, <d/>);
|
|
514
|
+
a1 = group_neutralize(a, bucket(rank(cap), range="<range/>"));
|
|
515
|
+
a2 = group_neutralize(a1, <group/>);
|
|
516
|
+
b = ts_zscore(cap, <d/>);
|
|
517
|
+
b1 = group_neutralize(b, <group/>);
|
|
518
|
+
regression_neut(a2, b1)
|
|
519
|
+
```
|
|
520
|
+
| 占位符 | 可选值 | 说明 |
|
|
521
|
+
|--------|--------|------|
|
|
522
|
+
| `<ts_op/>` | `ts_zscore`, `ts_rank` | 时序操作 |
|
|
523
|
+
| `<field/>` | 基本面或其他字段 | 主信号 |
|
|
524
|
+
| `<d/>` | `252`, `504` | 长期窗口 |
|
|
525
|
+
| `<range/>` | `"0.1,1,0.1"` | 市值分组 |
|
|
526
|
+
| `<group/>` | `subindustry`, `sector` | 行业分组 |
|
|
527
|
+
|
|
528
|
+
---
|
|
529
|
+
|
|
530
|
+
### TPL-006: 基本面动量模板
|
|
531
|
+
```
|
|
532
|
+
模板: log(ts_mean(<field/>, <d_short/>)) - log(ts_mean(<field/>, <d_long/>))
|
|
533
|
+
```
|
|
534
|
+
| 占位符 | 可选值 | 说明 |
|
|
535
|
+
|--------|--------|------|
|
|
536
|
+
| `<field/>` | `anl4_{data}_{stats}`, 基本面字段 | 数据字段 |
|
|
537
|
+
| `<d_short/>` | `20`, `44` | 短期窗口 |
|
|
538
|
+
| `<d_long/>` | `44`, `126` | 长期窗口 |
|
|
539
|
+
|
|
540
|
+
**示例**:
|
|
541
|
+
```
|
|
542
|
+
log(ts_mean(anl4_eps_mean, 44)) - log(ts_mean(anl4_eps_mean, 20))
|
|
543
|
+
```
|
|
544
|
+
|
|
545
|
+
---
|
|
546
|
+
|
|
547
|
+
### TPL-007: 财报事件驱动模板
|
|
548
|
+
```
|
|
549
|
+
模板:
|
|
550
|
+
event = ts_delta(<fundamental_field/>, -1);
|
|
551
|
+
if_else(event != 0, <alpha/>, nan)
|
|
552
|
+
```
|
|
553
|
+
| 占位符 | 可选值 | 说明 |
|
|
554
|
+
|--------|--------|------|
|
|
555
|
+
| `<fundamental_field/>` | `assets`, `sales`, `eps` | 基本面字段 |
|
|
556
|
+
| `<alpha/>` | 主信号表达式 | 事件发生时的Alpha |
|
|
557
|
+
|
|
558
|
+
**扩展版**:
|
|
559
|
+
```
|
|
560
|
+
change = if_else(days_from_last_change(<field/>) == <days/>, ts_delta(close, <d/>), nan)
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
---
|
|
564
|
+
|
|
565
|
+
### TPL-008: 标准化回填模板
|
|
566
|
+
```
|
|
567
|
+
模板: <ts_op/>(winsorize(ts_backfill(<field/>, <d_backfill/>), std=<std/>), <d/>)
|
|
568
|
+
```
|
|
569
|
+
| 占位符 | 可选值 | 说明 |
|
|
570
|
+
|--------|--------|------|
|
|
571
|
+
| `<ts_op/>` | `ts_rank`, `ts_decay_linear`, `ts_zscore` | 时序操作 |
|
|
572
|
+
| `<field/>` | 低频数据字段 | 需要回填的字段 |
|
|
573
|
+
| `<d_backfill/>` | `115`, `120`, `180` | 回填窗口 |
|
|
574
|
+
| `<std/>` | `4`, `3`, `5` | winsorize标准差 |
|
|
575
|
+
| `<d/>` | `10`, `22`, `60` | 操作窗口 |
|
|
576
|
+
|
|
577
|
+
**示例**:
|
|
578
|
+
```
|
|
579
|
+
ts_decay_linear(-densify(zscore(winsorize(ts_backfill(anl4_adjusted_netincome_ft, 115), std=4))), 10)
|
|
580
|
+
ts_rank(winsorize(ts_backfill(<data>, 120), std=4), 60)
|
|
581
|
+
```
|
|
582
|
+
|
|
583
|
+
---
|
|
584
|
+
|
|
585
|
+
### TPL-009: 信号质量分组模板
|
|
586
|
+
```
|
|
587
|
+
模板:
|
|
588
|
+
signal = <ts_op/>(<field/>, <d/>);
|
|
589
|
+
credit_quality = bucket(rank(ts_delay(signal, 1), rate=0), range="<range/>");
|
|
590
|
+
group_neutralize(<decay_op/>(signal, k=<k/>), credit_quality)
|
|
591
|
+
```
|
|
592
|
+
| 占位符 | 可选值 | 说明 |
|
|
593
|
+
|--------|--------|------|
|
|
594
|
+
| `<ts_op/>` | `ts_rank`, `ts_zscore` | 信号计算 |
|
|
595
|
+
| `<field/>` | 任意数据字段 | 主字段 |
|
|
596
|
+
| `<d/>` | `60`, `120` | 窗口 |
|
|
597
|
+
| `<range/>` | `"0.2,1,0.2"` | 分组范围 |
|
|
598
|
+
| `<decay_op/>` | `ts_weighted_decay` | 衰减操作 |
|
|
599
|
+
| `<k/>` | `0.5`, `0.3` | 衰减系数 |
|
|
600
|
+
|
|
601
|
+
---
|
|
602
|
+
|
|
603
|
+
### TPL-010: 复合分组中性化
|
|
604
|
+
```
|
|
605
|
+
模板: group_neutralize(<alpha/>, densify(<group1/>)*1000 + densify(<group2/>))
|
|
606
|
+
```
|
|
607
|
+
| 占位符 | 可选值 | 说明 |
|
|
608
|
+
|--------|--------|------|
|
|
609
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
610
|
+
| `<group1/>` | `subindustry`, `sector` | 主分组 |
|
|
611
|
+
| `<group2/>` | `country`, `exchange` | 次分组 |
|
|
612
|
+
|
|
613
|
+
---
|
|
614
|
+
|
|
615
|
+
## 第二部分:量价类模板 (TPL-101 ~ TPL-120)
|
|
616
|
+
|
|
617
|
+
### TPL-101: 换手率反转
|
|
618
|
+
```
|
|
619
|
+
模板: -<ts_op/>(volume/sharesout, <d/>)
|
|
620
|
+
```
|
|
621
|
+
| 占位符 | 可选值 | 说明 |
|
|
622
|
+
|--------|--------|------|
|
|
623
|
+
| `<ts_op/>` | `ts_mean`, `ts_rank`, `ts_std_dev` | 时序统计 |
|
|
624
|
+
| `<d/>` | `5`, `22`, `66` | 短中期窗口 |
|
|
625
|
+
|
|
626
|
+
**示例**:
|
|
627
|
+
```
|
|
628
|
+
-ts_mean(volume/sharesout, 22)
|
|
629
|
+
-ts_std_dev(volume/sharesout, 22)
|
|
630
|
+
```
|
|
631
|
+
|
|
632
|
+
---
|
|
633
|
+
|
|
634
|
+
### TPL-102: 量稳换手率 (STR)
|
|
635
|
+
```
|
|
636
|
+
模板: -ts_std_dev(volume/sharesout, <d1/>)/ts_mean(volume/sharesout, <d2/>)
|
|
637
|
+
```
|
|
638
|
+
| 占位符 | 可选值 | 说明 |
|
|
639
|
+
|--------|--------|------|
|
|
640
|
+
| `<d1/>` | `20`, `22` | 波动计算窗口 |
|
|
641
|
+
| `<d2/>` | `20`, `22` | 均值计算窗口 |
|
|
642
|
+
|
|
643
|
+
**优化版**:
|
|
644
|
+
```
|
|
645
|
+
模板: -group_neutralize(ts_std_dev(volume/sharesout, <d/>)/ts_mean(volume/sharesout, <d/>), bucket(rank(cap), range="0.1,1,0.1"))
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
---
|
|
649
|
+
|
|
650
|
+
### TPL-103: 价格反转模板
|
|
651
|
+
```
|
|
652
|
+
模板: -<ts_op/>(<price_field/>, <d/>)
|
|
653
|
+
```
|
|
654
|
+
| 占位符 | 可选值 | 说明 |
|
|
655
|
+
|--------|--------|------|
|
|
656
|
+
| `<ts_op/>` | `ts_delta`, `ts_mean`, `ts_rank` | 时序操作 |
|
|
657
|
+
| `<price_field/>` | `close`, `returns`, `close/open-1`, `open/ts_delay(close,1)-1` | 价格/收益字段 |
|
|
658
|
+
| `<d/>` | `3`, `5`, `22` | 短期窗口 |
|
|
659
|
+
|
|
660
|
+
**示例**:
|
|
661
|
+
```
|
|
662
|
+
-ts_delta(close, 5) # 价格变化反转
|
|
663
|
+
-ts_mean(returns, 22) # 收益均值反转
|
|
664
|
+
-ts_mean(close/open-1, 22) # 日内收益反转
|
|
665
|
+
-(open/ts_delay(close,1)-1) # 隔夜收益反转
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
---
|
|
669
|
+
|
|
670
|
+
### TPL-104: 价格乖离率
|
|
671
|
+
```
|
|
672
|
+
模板: -(close - ts_mean(close, <d/>))/ts_mean(close, <d/>)
|
|
673
|
+
```
|
|
674
|
+
| 占位符 | 可选值 | 说明 |
|
|
675
|
+
|--------|--------|------|
|
|
676
|
+
| `<d/>` | `5`, `22`, `66` | MA周期 |
|
|
677
|
+
|
|
678
|
+
---
|
|
679
|
+
|
|
680
|
+
### TPL-105: 量价相关性
|
|
681
|
+
```
|
|
682
|
+
模板: -ts_corr(<price_field/>, <volume_field/>, <d/>)
|
|
683
|
+
```
|
|
684
|
+
| 占位符 | 可选值 | 说明 |
|
|
685
|
+
|--------|--------|------|
|
|
686
|
+
| `<price_field/>` | `close`, `returns`, `abs(returns)` | 价格类 |
|
|
687
|
+
| `<volume_field/>` | `volume`, `volume/sharesout`, `adv20` | 成交量类 |
|
|
688
|
+
| `<d/>` | `22`, `66`, `126` | 相关性窗口 |
|
|
689
|
+
|
|
690
|
+
---
|
|
691
|
+
|
|
692
|
+
### TPL-106: 跳跃因子
|
|
693
|
+
```
|
|
694
|
+
模板: -group_neutralize(ts_mean((close/open-1) - log(close/open), <d/>), bucket(rank(cap), range="0.1,1,0.1"))
|
|
695
|
+
```
|
|
696
|
+
| 占位符 | 可选值 | 说明 |
|
|
697
|
+
|--------|--------|------|
|
|
698
|
+
| `<d/>` | `22`, `30`, `66` | 平均窗口 |
|
|
699
|
+
|
|
700
|
+
**带成交量增强版**:
|
|
701
|
+
```
|
|
702
|
+
模板: -group_neutralize(ts_mean((close/open-1) - log(close/open), <d/>) * ts_rank(volume, 5), bucket(rank(cap), range="0.1,1,0.1"))
|
|
703
|
+
```
|
|
704
|
+
|
|
705
|
+
---
|
|
706
|
+
|
|
707
|
+
### TPL-107: 指数衰减动量
|
|
708
|
+
```
|
|
709
|
+
模板: -ts_decay_exp_window(<field/>, <d/>, factor=<f/>)
|
|
710
|
+
```
|
|
711
|
+
| 占位符 | 可选值 | 说明 |
|
|
712
|
+
|--------|--------|------|
|
|
713
|
+
| `<field/>` | `returns`, `returns*(volume/sharesout)`, `close/open-1` | 收益类字段 |
|
|
714
|
+
| `<d/>` | `22`, `66`, `126` | 衰减窗口 |
|
|
715
|
+
| `<f/>` | `0.04`, `0.1`, `0.5`, `0.9` | 衰减因子,越小衰减越快 |
|
|
716
|
+
|
|
717
|
+
---
|
|
718
|
+
|
|
719
|
+
### TPL-108: 成交量周期函数 (VOC)
|
|
720
|
+
```
|
|
721
|
+
模板:
|
|
722
|
+
m_minus = ts_mean(volume, <d_long/>) - ts_mean(volume, <d_short/>);
|
|
723
|
+
delta = (ts_max(m_minus, <d_short/>) - m_minus)/(ts_max(m_minus, <d_short/>) - ts_min(m_minus, <d_short/>));
|
|
724
|
+
<weight1/>*delta + <weight2/>*ts_delay(delta, 1)
|
|
725
|
+
```
|
|
726
|
+
| 占位符 | 可选值 | 说明 |
|
|
727
|
+
|--------|--------|------|
|
|
728
|
+
| `<d_long/>` | `30`, `66` | 长期均值窗口 |
|
|
729
|
+
| `<d_short/>` | `10`, `22` | 短期均值窗口 |
|
|
730
|
+
| `<weight1/>` | `0.33`, `0.5` | 当日权重 |
|
|
731
|
+
| `<weight2/>` | `0.67`, `0.5` | 前日权重 |
|
|
732
|
+
|
|
733
|
+
---
|
|
734
|
+
|
|
735
|
+
### TPL-109: 市场相关性因子
|
|
736
|
+
```
|
|
737
|
+
模板:
|
|
738
|
+
mkt_ret = group_mean(returns, 1, market);
|
|
739
|
+
pt = ts_corr(returns, mkt_ret, <d/>);
|
|
740
|
+
rank(1/(2*(1-pt)))
|
|
741
|
+
```
|
|
742
|
+
| 占位符 | 可选值 | 说明 |
|
|
743
|
+
|--------|--------|------|
|
|
744
|
+
| `<d/>` | `10`, `22`, `66` | 相关性窗口 |
|
|
745
|
+
|
|
746
|
+
---
|
|
747
|
+
|
|
748
|
+
### TPL-110: 成交量趋势模板
|
|
749
|
+
```
|
|
750
|
+
模板: ts_decay_linear(volume/ts_sum(volume, <d_long/>), <d_short/>)
|
|
751
|
+
```
|
|
752
|
+
| 占位符 | 可选值 | 说明 |
|
|
753
|
+
|--------|--------|------|
|
|
754
|
+
| `<d_long/>` | `252`, `504` | 长期总量窗口 |
|
|
755
|
+
| `<d_short/>` | `10`, `22` | 衰减窗口 |
|
|
756
|
+
|
|
757
|
+
---
|
|
758
|
+
|
|
759
|
+
### TPL-111: VWAP收益相关
|
|
760
|
+
```
|
|
761
|
+
模板:
|
|
762
|
+
returns > -<threshold/> ? (ts_ir(ts_corr(ts_returns(vwap, 1), ts_delay(group_neutralize(<field/>, market), <d1/>), <d2/>), <d2/>)) : -1
|
|
763
|
+
```
|
|
764
|
+
| 占位符 | 可选值 | 说明 |
|
|
765
|
+
|--------|--------|------|
|
|
766
|
+
| `<threshold/>` | `0.1`, `0.05` | 收益阈值 |
|
|
767
|
+
| `<field/>` | 任意数据字段 | 信号字段 |
|
|
768
|
+
| `<d1/>` | `30`, `60` | 延迟窗口 |
|
|
769
|
+
| `<d2/>` | `90`, `120` | 相关性窗口 |
|
|
770
|
+
|
|
771
|
+
---
|
|
772
|
+
|
|
773
|
+
### TPL-112: 动量因子创建
|
|
774
|
+
```
|
|
775
|
+
模板: ts_sum(winsorize(ts_backfill(<data/>, <day/>), std=4.0), <n/>*21) - ts_sum(winsorize(ts_backfill(<data/>, <day/>), std=4.0), <m/>*21)
|
|
776
|
+
```
|
|
777
|
+
| 占位符 | 可选值 | 说明 |
|
|
778
|
+
|--------|--------|------|
|
|
779
|
+
| `<data/>` | `returns`, 基本面字段 | 数据字段 |
|
|
780
|
+
| `<day/>` | `120`, `180` | 回填窗口 |
|
|
781
|
+
| `<n/>` | `6`, `12` | 长期月数 |
|
|
782
|
+
| `<m/>` | `1`, `0.1*n` | 短期月数 |
|
|
783
|
+
|
|
784
|
+
---
|
|
785
|
+
|
|
786
|
+
### TPL-113: 线性衰减排名
|
|
787
|
+
```
|
|
788
|
+
模板: -ts_rank(ts_decay_linear(<field/>, <d1/>), <d2/>)
|
|
789
|
+
```
|
|
790
|
+
| 占位符 | 可选值 | 说明 |
|
|
791
|
+
|--------|--------|------|
|
|
792
|
+
| `<field/>` | `percent`, 任意时序信号 | 输入信号 |
|
|
793
|
+
| `<d1/>` | `10`, `22`, `150` | 衰减窗口 |
|
|
794
|
+
| `<d2/>` | `50`, `126` | 排名窗口 |
|
|
795
|
+
|
|
796
|
+
---
|
|
797
|
+
|
|
798
|
+
## 第三部分:情绪/新闻类模板 (TPL-201 ~ TPL-220)
|
|
799
|
+
|
|
800
|
+
### TPL-201: 情绪差值模板
|
|
801
|
+
```
|
|
802
|
+
模板: <ts_op/>(rank(ts_backfill(<positive_sentiment/>, <d/>)) - rank(ts_backfill(<negative_sentiment/>, <d/>)), <d2/>)
|
|
803
|
+
```
|
|
804
|
+
| 占位符 | 可选值 | 说明 |
|
|
805
|
+
|--------|--------|------|
|
|
806
|
+
| `<ts_op/>` | `ts_mean`, `ts_rank`, `ts_zscore` | 时序操作 |
|
|
807
|
+
| `<positive_sentiment/>` | 正面情绪字段 | 积极信号 |
|
|
808
|
+
| `<negative_sentiment/>` | 负面情绪字段 | 消极信号 |
|
|
809
|
+
| `<d/>` | `20`, `30` | 回填窗口 |
|
|
810
|
+
| `<d2/>` | `5`, `22` | 比较窗口 |
|
|
811
|
+
|
|
812
|
+
---
|
|
813
|
+
|
|
814
|
+
### TPL-202: 新闻情绪回归残差
|
|
815
|
+
```
|
|
816
|
+
模板:
|
|
817
|
+
sentiment = ts_backfill(ts_delay(<vec_op/>(<sentiment_field/>), 1), <d1/>);
|
|
818
|
+
vhat = ts_regression(volume, sentiment, <d2/>);
|
|
819
|
+
ehat = -ts_regression(returns, vhat, <d3/>);
|
|
820
|
+
group_rank(ehat, bucket(rank(cap), range="0,1,0.1"))
|
|
821
|
+
```
|
|
822
|
+
| 占位符 | 可选值 | 说明 |
|
|
823
|
+
|--------|--------|------|
|
|
824
|
+
| `<vec_op/>` | `vec_avg`, `vec_sum` | 情绪聚合方式 |
|
|
825
|
+
| `<sentiment_field/>` | `scl12_sentiment`, `snt_buzz_ret`, `nws18_relevance` | 情绪数据 |
|
|
826
|
+
| `<d1/>` | `20`, `30` | 回填窗口 |
|
|
827
|
+
| `<d2/>` | `120`, `250` | 成交量回归窗口 |
|
|
828
|
+
| `<d3/>` | `250`, `750` | 收益回归窗口 |
|
|
829
|
+
|
|
830
|
+
---
|
|
831
|
+
|
|
832
|
+
### TPL-203: 社交媒体情绪
|
|
833
|
+
```
|
|
834
|
+
模板: rank(<vec_op/>(scl12_alltype_buzzvec) * <vec_op/>(scl12_sentiment))
|
|
835
|
+
```
|
|
836
|
+
| 占位符 | 可选值 | 说明 |
|
|
837
|
+
|--------|--------|------|
|
|
838
|
+
| `<vec_op/>` | `vec_sum`, `vec_avg` | 向量聚合 |
|
|
839
|
+
|
|
840
|
+
**带条件版**:
|
|
841
|
+
```
|
|
842
|
+
模板:
|
|
843
|
+
sent_vol = vec_sum(scl12_alltype_buzzvec);
|
|
844
|
+
trade_when(rank(sent_vol) > 0.95, -zscore(scl12_buzz)*sent_vol, -1)
|
|
845
|
+
```
|
|
846
|
+
|
|
847
|
+
---
|
|
848
|
+
|
|
849
|
+
### TPL-204: 条件情绪过滤
|
|
850
|
+
```
|
|
851
|
+
模板:
|
|
852
|
+
group_rank(
|
|
853
|
+
sigmoid(if_else(ts_zscore(<sentiment_field/>, <d/>) > <threshold/>, ts_zscore(<sentiment_field/>, <d/>), 0)),
|
|
854
|
+
<group/>
|
|
855
|
+
)
|
|
856
|
+
```
|
|
857
|
+
| 占位符 | 可选值 | 说明 |
|
|
858
|
+
|--------|--------|------|
|
|
859
|
+
| `<sentiment_field/>` | 情绪字段 | 情绪数据 |
|
|
860
|
+
| `<d/>` | `22`, `30`, `66` | zscore窗口 |
|
|
861
|
+
| `<threshold/>` | `1`, `1.5`, `2` | z-score阈值 |
|
|
862
|
+
| `<group/>` | `industry`, `sector` | 分组字段 |
|
|
863
|
+
|
|
864
|
+
---
|
|
865
|
+
|
|
866
|
+
### TPL-205: 情绪+波动率复合
|
|
867
|
+
```
|
|
868
|
+
模板: log(1 + sigmoid(ts_zscore(<sentiment_field/>, <d1/>)) * sigmoid(ts_zscore(<volatility_field/>, <d2/>)))
|
|
869
|
+
```
|
|
870
|
+
| 占位符 | 可选值 | 说明 |
|
|
871
|
+
|--------|--------|------|
|
|
872
|
+
| `<sentiment_field/>` | 情绪字段 | 情绪数据 |
|
|
873
|
+
| `<volatility_field/>` | `option8_*`, 波动率字段 | 波动率数据 |
|
|
874
|
+
| `<d1/>` | `30`, `66` | 情绪窗口 |
|
|
875
|
+
| `<d2/>` | `30`, `66` | 波动率窗口 |
|
|
876
|
+
|
|
877
|
+
---
|
|
878
|
+
|
|
879
|
+
### TPL-206: 指数衰减情绪
|
|
880
|
+
```
|
|
881
|
+
模板: ts_decay_exp_window(vec_avg(<sentiment_field/>), <d/>, <factor/>)
|
|
882
|
+
```
|
|
883
|
+
| 占位符 | 可选值 | 说明 |
|
|
884
|
+
|--------|--------|------|
|
|
885
|
+
| `<sentiment_field/>` | `mws85_sentiment`, `nws18_ber` | 情绪向量字段 |
|
|
886
|
+
| `<d/>` | `10`, `22` | 衰减窗口 |
|
|
887
|
+
| `<factor/>` | `0.9`, `0.7` | 衰减因子 |
|
|
888
|
+
|
|
889
|
+
**双情绪组合**:
|
|
890
|
+
```
|
|
891
|
+
decayed_sentiment_1 = ts_decay_exp_window(vec_avg(mws85_sentiment), 10, 0.9);
|
|
892
|
+
decayed_sentiment_2 = ts_decay_exp_window(vec_avg(nws18_ber), 10, 0.9);
|
|
893
|
+
decayed_sentiment_1 + decayed_sentiment_2
|
|
894
|
+
```
|
|
895
|
+
|
|
896
|
+
---
|
|
897
|
+
|
|
898
|
+
### TPL-207: 新闻结果排名
|
|
899
|
+
```
|
|
900
|
+
模板:
|
|
901
|
+
percent = ts_rank(vec_stddev(<news_field/>), <d1/>);
|
|
902
|
+
-ts_rank(ts_decay_linear(percent, <d2/>), <d1/>)
|
|
903
|
+
```
|
|
904
|
+
| 占位符 | 可选值 | 说明 |
|
|
905
|
+
|--------|--------|------|
|
|
906
|
+
| `<news_field/>` | `nws12_prez_result2` | 新闻数据 |
|
|
907
|
+
| `<d1/>` | `50`, `66` | 排名窗口 |
|
|
908
|
+
| `<d2/>` | `150`, `252` | 衰减窗口 |
|
|
909
|
+
|
|
910
|
+
---
|
|
911
|
+
|
|
912
|
+
### TPL-208: 分组行业提取情绪
|
|
913
|
+
```
|
|
914
|
+
模板: scale(group_extra(ts_sum(sigmoid(ts_backfill(<data/>, <d1/>)), <d2/>) - ts_sum(sigmoid(ts_backfill(<data/>, <d1/>)), <d2/>), 0.5, densify(industry)))
|
|
915
|
+
```
|
|
916
|
+
| 占位符 | 可选值 | 说明 |
|
|
917
|
+
|--------|--------|------|
|
|
918
|
+
| `<data/>` | 情绪或基本面字段 | 数据字段 |
|
|
919
|
+
| `<d1/>` | `180`, `252` | 回填窗口 |
|
|
920
|
+
| `<d2/>` | `3`, `5` | 求和窗口 |
|
|
921
|
+
|
|
922
|
+
---
|
|
923
|
+
|
|
924
|
+
## 第四部分:期权类模板 (TPL-301 ~ TPL-320)
|
|
925
|
+
|
|
926
|
+
### TPL-301: 期权希腊字母差值
|
|
927
|
+
```
|
|
928
|
+
模板: <group_op/>(<put_greek/> - <call_greek/>, <group/>)
|
|
929
|
+
```
|
|
930
|
+
| 占位符 | 可选值 | 说明 |
|
|
931
|
+
|--------|--------|------|
|
|
932
|
+
| `<group_op/>` | `group_rank`, `group_neutralize`, `group_zscore` | 分组操作 |
|
|
933
|
+
| `<put_greek/>` | `put_delta`, `put_gamma`, `put_theta`, `put_vega` | Put希腊字母 |
|
|
934
|
+
| `<call_greek/>` | `call_delta`, `call_gamma`, `call_theta`, `call_vega` | Call希腊字母 |
|
|
935
|
+
| `<group/>` | `industry`, `sector` | 分组字段 |
|
|
936
|
+
|
|
937
|
+
---
|
|
938
|
+
|
|
939
|
+
### TPL-302: 期权价格信号
|
|
940
|
+
```
|
|
941
|
+
模板: group_rank(<ts_op/>(<vec_op/>(<option_price_field/>)/close, <d/>), <group/>)
|
|
942
|
+
```
|
|
943
|
+
| 占位符 | 可选值 | 说明 |
|
|
944
|
+
|--------|--------|------|
|
|
945
|
+
| `<ts_op/>` | `ts_scale`, `ts_rank`, `ts_zscore` | 时序操作 |
|
|
946
|
+
| `<vec_op/>` | `vec_max`, `vec_avg` | 向量操作 |
|
|
947
|
+
| `<option_price_field/>` | 期权价格字段 | 期权数据 |
|
|
948
|
+
| `<d/>` | `66`, `120`, `252` | 时间窗口 |
|
|
949
|
+
| `<group/>` | `industry`, `sector` | 分组字段 |
|
|
950
|
+
|
|
951
|
+
---
|
|
952
|
+
|
|
953
|
+
### TPL-303: 期权波动率信号
|
|
954
|
+
```
|
|
955
|
+
模板: sigmoid(<ts_op/>(<opt_high/> - <opt_close/>, <d/>))
|
|
956
|
+
```
|
|
957
|
+
| 占位符 | 可选值 | 说明 |
|
|
958
|
+
|--------|--------|------|
|
|
959
|
+
| `<ts_op/>` | `ts_ir`, `ts_stddev`, `ts_zscore`, `ts_mean` | 波动性操作 |
|
|
960
|
+
| `<opt_high/>` | 期权高价字段 | 期权最高价 |
|
|
961
|
+
| `<opt_close/>` | 期权收盘价字段 | 期权收盘价 |
|
|
962
|
+
| `<d/>` | `120`, `250`, `504` | 长期窗口 |
|
|
963
|
+
|
|
964
|
+
**说明**: 期权波动类因子通常需要较长窗口(120-504天)来捕捉稳定信号
|
|
965
|
+
|
|
966
|
+
---
|
|
967
|
+
|
|
968
|
+
### TPL-304: 隐含波动率比率
|
|
969
|
+
```
|
|
970
|
+
模板: <ts_op/>(implied_volatility_call_<tenor/>/parkinson_volatility_<tenor/>, <d/>)
|
|
971
|
+
```
|
|
972
|
+
| 占位符 | 可选值 | 说明 |
|
|
973
|
+
|--------|--------|------|
|
|
974
|
+
| `<ts_op/>` | `ts_rank`, `ts_zscore`, `ts_delta` | 时序操作 |
|
|
975
|
+
| `<tenor/>` | `120`, `270` | 期权期限 |
|
|
976
|
+
| `<d/>` | `66`, `126`, `252` | 窗口 |
|
|
977
|
+
|
|
978
|
+
---
|
|
979
|
+
|
|
980
|
+
### TPL-305: Put-Call成交量比
|
|
981
|
+
```
|
|
982
|
+
模板: <ts_op/>(pcr_vol_<tenor/>, <d/>)
|
|
983
|
+
```
|
|
984
|
+
| 占位符 | 可选值 | 说明 |
|
|
985
|
+
|--------|--------|------|
|
|
986
|
+
| `<ts_op/>` | `ts_rank`, `ts_delta`, `ts_zscore` | 时序操作 |
|
|
987
|
+
| `<tenor/>` | `10`, `30`, `60` | 期限 |
|
|
988
|
+
| `<d/>` | `22`, `66`, `126` | 窗口 |
|
|
989
|
+
|
|
990
|
+
---
|
|
991
|
+
|
|
992
|
+
### TPL-306: 期权盈亏平衡点
|
|
993
|
+
```
|
|
994
|
+
模板: group_rank(ts_zscore(<breakeven_field/>/close, <d/>), <group/>)
|
|
995
|
+
```
|
|
996
|
+
| 占位符 | 可选值 | 说明 |
|
|
997
|
+
|--------|--------|------|
|
|
998
|
+
| `<breakeven_field/>` | `call_breakeven_10`, `put_breakeven_10` | 盈亏平衡字段 |
|
|
999
|
+
| `<d/>` | `66`, `126`, `252` | 窗口 |
|
|
1000
|
+
| `<group/>` | `sector`, `industry` | 分组 |
|
|
1001
|
+
|
|
1002
|
+
---
|
|
1003
|
+
|
|
1004
|
+
## 第五部分:分析师类模板 (TPL-401 ~ TPL-420)
|
|
1005
|
+
|
|
1006
|
+
### TPL-401: 分析师预期变化
|
|
1007
|
+
```
|
|
1008
|
+
模板: <vec_op/>(tail(tail(<analyst_change_field/>, lower=<low/>, upper=<high/>, newval=<low/>), lower=-<high/>, upper=-<low/>, newval=-<low/>))
|
|
1009
|
+
```
|
|
1010
|
+
| 占位符 | 可选值 | 说明 |
|
|
1011
|
+
|--------|--------|------|
|
|
1012
|
+
| `<vec_op/>` | `vec_avg`, `vec_sum` | 向量聚合 |
|
|
1013
|
+
| `<analyst_change_field/>` | `oth41_s_west_eps_ftm_chg_3m`, `anl4_eps_chg` | 预期变化字段 |
|
|
1014
|
+
| `<low/>` | `0.25`, `0.1` | 下截断值 |
|
|
1015
|
+
| `<high/>` | `1000`, `100` | 上截断值 |
|
|
1016
|
+
|
|
1017
|
+
---
|
|
1018
|
+
|
|
1019
|
+
### TPL-402: 剥离动量的分析师因子
|
|
1020
|
+
```
|
|
1021
|
+
模板:
|
|
1022
|
+
afr = <vec_op/>(<analyst_field/>);
|
|
1023
|
+
short_mom = ts_mean(returns - group_mean(returns, 1, market), <d_short/>);
|
|
1024
|
+
long_mom = ts_delay(ts_mean(returns - group_mean(returns, 1, market), <d_long/>), <d_long/>);
|
|
1025
|
+
regression_neut(regression_neut(afr, short_mom), long_mom)
|
|
1026
|
+
```
|
|
1027
|
+
| 占位符 | 可选值 | 说明 |
|
|
1028
|
+
|--------|--------|------|
|
|
1029
|
+
| `<vec_op/>` | `vec_avg`, `vec_sum` | 向量聚合 |
|
|
1030
|
+
| `<analyst_field/>` | 分析师数据字段 | 一致预期等 |
|
|
1031
|
+
| `<d_short/>` | `5`, `10` | 短期动量窗口 |
|
|
1032
|
+
| `<d_long/>` | `20`, `22` | 长期动量窗口 |
|
|
1033
|
+
|
|
1034
|
+
---
|
|
1035
|
+
|
|
1036
|
+
### TPL-403: 分析师覆盖度过滤
|
|
1037
|
+
```
|
|
1038
|
+
模板:
|
|
1039
|
+
coverage_filter = ts_sum(<vec_op/>(<analyst_field/>), <d/>) > <min_count/>;
|
|
1040
|
+
if_else(coverage_filter, <alpha/>, nan)
|
|
1041
|
+
```
|
|
1042
|
+
| 占位符 | 可选值 | 说明 |
|
|
1043
|
+
|--------|--------|------|
|
|
1044
|
+
| `<vec_op/>` | `vec_count` | 统计分析师数量 |
|
|
1045
|
+
| `<analyst_field/>` | 分析师向量字段 | 分析师数据 |
|
|
1046
|
+
| `<d/>` | `66`, `90`, `126` | 统计窗口 |
|
|
1047
|
+
| `<min_count/>` | `2`, `3`, `5` | 最小覆盖数量 |
|
|
1048
|
+
| `<alpha/>` | 主信号表达式 | 待过滤的Alpha |
|
|
1049
|
+
|
|
1050
|
+
---
|
|
1051
|
+
|
|
1052
|
+
### TPL-404: 老虎哥回归模板
|
|
1053
|
+
```
|
|
1054
|
+
模板: group_rank(ts_regression(ts_zscore(<field1/>, <d/>), ts_zscore(vec_sum(<field2/>), <d/>), <d/>), densify(sector))
|
|
1055
|
+
```
|
|
1056
|
+
| 占位符 | 可选值 | 说明 |
|
|
1057
|
+
|--------|--------|------|
|
|
1058
|
+
| `<field1/>` | 任意MATRIX字段 | Y变量 |
|
|
1059
|
+
| `<field2/>` | 任意VECTOR字段 | X变量 |
|
|
1060
|
+
| `<d/>` | `252`, `504` | 回归窗口 |
|
|
1061
|
+
|
|
1062
|
+
**说明**: 经典回归模板,适用于基本面与分析师数据组合
|
|
1063
|
+
|
|
1064
|
+
---
|
|
1065
|
+
|
|
1066
|
+
### TPL-405: 分析师预期时序变化
|
|
1067
|
+
```
|
|
1068
|
+
模板: ts_mean(vec_avg(<analyst_field/>), <d_short/>) - ts_mean(vec_avg(<analyst_field/>), <d_long/>)
|
|
1069
|
+
```
|
|
1070
|
+
| 占位符 | 可选值 | 说明 |
|
|
1071
|
+
|--------|--------|------|
|
|
1072
|
+
| `<analyst_field/>` | `anl4_eps_mean`, `anl4_revenue_mean` | 分析师预测 |
|
|
1073
|
+
| `<d_short/>` | `22`, `44` | 短期窗口 |
|
|
1074
|
+
| `<d_long/>` | `66`, `126` | 长期窗口 |
|
|
1075
|
+
|
|
1076
|
+
---
|
|
1077
|
+
|
|
1078
|
+
### TPL-406: 三因子组合模板
|
|
1079
|
+
```
|
|
1080
|
+
模板:
|
|
1081
|
+
my_group = market;
|
|
1082
|
+
rank(
|
|
1083
|
+
group_rank(ts_decay_linear(volume/ts_sum(volume, 252), 10), my_group) *
|
|
1084
|
+
group_rank(ts_rank(vec_avg(<fundamental/>), <d/>), my_group) *
|
|
1085
|
+
group_rank(-ts_delta(close, 5), my_group)
|
|
1086
|
+
)
|
|
1087
|
+
```
|
|
1088
|
+
| 占位符 | 可选值 | 说明 |
|
|
1089
|
+
|--------|--------|------|
|
|
1090
|
+
| `<fundamental/>` | 基本面VECTOR字段 | 基本面数据 |
|
|
1091
|
+
| `<d/>` | `252`, `504` | 排名窗口 |
|
|
1092
|
+
|
|
1093
|
+
---
|
|
1094
|
+
|
|
1095
|
+
### TPL-407: 分析师FCF比率
|
|
1096
|
+
```
|
|
1097
|
+
模板: ts_rank(vec_avg(<fcf_field/>) / vec_avg(<profit_field/>), <d/>)
|
|
1098
|
+
```
|
|
1099
|
+
| 占位符 | 可选值 | 说明 |
|
|
1100
|
+
|--------|--------|------|
|
|
1101
|
+
| `<fcf_field/>` | `anl4_fcf_value` | 自由现金流预测 |
|
|
1102
|
+
| `<profit_field/>` | `anl4_netprofit_low`, `anl4_netprofit_mean` | 利润预测 |
|
|
1103
|
+
| `<d/>` | `66`, `126`, `252` | 排名窗口 |
|
|
1104
|
+
|
|
1105
|
+
---
|
|
1106
|
+
|
|
1107
|
+
## 第六部分:中性化技术模板 (TPL-501 ~ TPL-515)
|
|
1108
|
+
|
|
1109
|
+
### TPL-501: 市值分组中性化
|
|
1110
|
+
```
|
|
1111
|
+
模板: group_neutralize(<alpha/>, bucket(rank(cap), range="<range/>"))
|
|
1112
|
+
```
|
|
1113
|
+
| 占位符 | 可选值 | 说明 |
|
|
1114
|
+
|--------|--------|------|
|
|
1115
|
+
| `<alpha/>` | 主信号表达式 | 待中性化的Alpha |
|
|
1116
|
+
| `<range/>` | `"0.1,1,0.1"`, `"0,1,0.1"` | 分组范围 |
|
|
1117
|
+
|
|
1118
|
+
---
|
|
1119
|
+
|
|
1120
|
+
### TPL-502: 双重中性化 (行业+市值)
|
|
1121
|
+
```
|
|
1122
|
+
模板:
|
|
1123
|
+
a1 = group_neutralize(<alpha/>, bucket(rank(cap), range="<range/>"));
|
|
1124
|
+
group_neutralize(a1, <group/>)
|
|
1125
|
+
```
|
|
1126
|
+
| 占位符 | 可选值 | 说明 |
|
|
1127
|
+
|--------|--------|------|
|
|
1128
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1129
|
+
| `<range/>` | `"0.1,1,0.1"` | 市值分组 |
|
|
1130
|
+
| `<group/>` | `industry`, `sector`, `subindustry` | 行业分组 |
|
|
1131
|
+
|
|
1132
|
+
---
|
|
1133
|
+
|
|
1134
|
+
### TPL-503: 回归中性化
|
|
1135
|
+
```
|
|
1136
|
+
模板: regression_neut(<alpha/>, <factor/>)
|
|
1137
|
+
```
|
|
1138
|
+
| 占位符 | 可选值 | 说明 |
|
|
1139
|
+
|--------|--------|------|
|
|
1140
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1141
|
+
| `<factor/>` | `log(cap)`, `ts_ir(returns, 126)`, `ts_std_dev(returns, 22)` | 待剥离因子 |
|
|
1142
|
+
|
|
1143
|
+
**多层回归中性化**:
|
|
1144
|
+
```
|
|
1145
|
+
模板: regression_neut(regression_neut(<alpha/>, <factor1/>), <factor2/>)
|
|
1146
|
+
```
|
|
1147
|
+
|
|
1148
|
+
---
|
|
1149
|
+
|
|
1150
|
+
### TPL-504: 中性化顺序优化
|
|
1151
|
+
```
|
|
1152
|
+
模板:
|
|
1153
|
+
a = ts_zscore(<field/>, <d/>);
|
|
1154
|
+
a1 = group_neutralize(a, <group/>);
|
|
1155
|
+
a2 = group_neutralize(a1, bucket(rank(cap), range="<range/>"))
|
|
1156
|
+
```
|
|
1157
|
+
| 占位符 | 可选值 | 说明 |
|
|
1158
|
+
|--------|--------|------|
|
|
1159
|
+
| `<field/>` | 任意数据字段 | 主信号 |
|
|
1160
|
+
| `<d/>` | `252` | zscore窗口 |
|
|
1161
|
+
| `<group/>` | `industry`, `subindustry` | 行业分组 |
|
|
1162
|
+
| `<range/>` | `"0.1,1,0.1"` | 市值分组 |
|
|
1163
|
+
|
|
1164
|
+
**说明**: 先行业中性化再市值中性化,与反向顺序效果可能不同
|
|
1165
|
+
|
|
1166
|
+
---
|
|
1167
|
+
|
|
1168
|
+
### TPL-505: sta1分组中性化
|
|
1169
|
+
```
|
|
1170
|
+
模板: group_neutralize(<alpha/>, sta1_top3000c20)
|
|
1171
|
+
```
|
|
1172
|
+
**说明**: 使用预定义的sta1分组进行中性化
|
|
1173
|
+
|
|
1174
|
+
---
|
|
1175
|
+
|
|
1176
|
+
## 第七部分:条件交易模板 (TPL-601 ~ TPL-620)
|
|
1177
|
+
|
|
1178
|
+
### TPL-601: 流动性过滤
|
|
1179
|
+
```
|
|
1180
|
+
模板: trade_when(volume > adv20 * <threshold/>, <alpha/>, -1)
|
|
1181
|
+
```
|
|
1182
|
+
| 占位符 | 可选值 | 说明 |
|
|
1183
|
+
|--------|--------|------|
|
|
1184
|
+
| `<threshold/>` | `0.618`, `0.5`, `1` | 流动性阈值 |
|
|
1185
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1186
|
+
|
|
1187
|
+
**反向流动性**:
|
|
1188
|
+
```
|
|
1189
|
+
trade_when(volume < adv20, <alpha/>, -1)
|
|
1190
|
+
```
|
|
1191
|
+
|
|
1192
|
+
---
|
|
1193
|
+
|
|
1194
|
+
### TPL-602: 波动率过滤
|
|
1195
|
+
```
|
|
1196
|
+
模板: trade_when(ts_rank(ts_std_dev(returns, <d1/>), <d2/>) < <threshold/>, <alpha/>, -1)
|
|
1197
|
+
```
|
|
1198
|
+
| 占位符 | 可选值 | 说明 |
|
|
1199
|
+
|--------|--------|------|
|
|
1200
|
+
| `<d1/>` | `5`, `10`, `22` | 波动计算窗口 |
|
|
1201
|
+
| `<d2/>` | `126`, `180`, `252` | 排名窗口 |
|
|
1202
|
+
| `<threshold/>` | `0.8`, `0.9` | 波动率阈值 |
|
|
1203
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1204
|
+
|
|
1205
|
+
---
|
|
1206
|
+
|
|
1207
|
+
### TPL-603: 极端收益过滤
|
|
1208
|
+
```
|
|
1209
|
+
模板: trade_when(abs(returns) < <entry/>, <alpha/>, abs(returns) > <exit/>)
|
|
1210
|
+
```
|
|
1211
|
+
| 占位符 | 可选值 | 说明 |
|
|
1212
|
+
|--------|--------|------|
|
|
1213
|
+
| `<entry/>` | `0.075`, `0.05` | 入场阈值 |
|
|
1214
|
+
| `<exit/>` | `0.1`, `0.095` | 出场阈值 |
|
|
1215
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1216
|
+
|
|
1217
|
+
---
|
|
1218
|
+
|
|
1219
|
+
### TPL-604: 市值过滤
|
|
1220
|
+
```
|
|
1221
|
+
模板: trade_when(rank(cap) > <threshold/>, <alpha/>, -1)
|
|
1222
|
+
```
|
|
1223
|
+
| 占位符 | 可选值 | 说明 |
|
|
1224
|
+
|--------|--------|------|
|
|
1225
|
+
| `<threshold/>` | `0.3`, `0.5` | 市值排名阈值 |
|
|
1226
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1227
|
+
|
|
1228
|
+
---
|
|
1229
|
+
|
|
1230
|
+
### TPL-605: 触发条件交易
|
|
1231
|
+
```
|
|
1232
|
+
模板:
|
|
1233
|
+
triggerTradeexp = (ts_arg_max(volume, <d/>) < 1) && (volume > ts_sum(volume, <d/>)/<d/>);
|
|
1234
|
+
triggerExitexp = -1;
|
|
1235
|
+
trade_when(triggerTradeexp, <alpha/>, triggerExitexp)
|
|
1236
|
+
```
|
|
1237
|
+
| 占位符 | 可选值 | 说明 |
|
|
1238
|
+
|--------|--------|------|
|
|
1239
|
+
| `<d/>` | `5`, `10` | 判断窗口 |
|
|
1240
|
+
| `<alpha/>` | `-rank(ts_delta(close, 2))` | 主信号 |
|
|
1241
|
+
|
|
1242
|
+
---
|
|
1243
|
+
|
|
1244
|
+
### TPL-606: 组合条件交易
|
|
1245
|
+
```
|
|
1246
|
+
模板:
|
|
1247
|
+
my_group2 = bucket(rank(cap), range="0,1,0.1");
|
|
1248
|
+
trade_when(volume > adv20, group_neutralize(<alpha/>, my_group2), -1)
|
|
1249
|
+
```
|
|
1250
|
+
| 占位符 | 可选值 | 说明 |
|
|
1251
|
+
|--------|--------|------|
|
|
1252
|
+
| `<alpha/>` | 复合信号 | 主信号 |
|
|
1253
|
+
|
|
1254
|
+
---
|
|
1255
|
+
|
|
1256
|
+
### TPL-607: 条件排名交易
|
|
1257
|
+
```
|
|
1258
|
+
模板:
|
|
1259
|
+
a = <ts_op/>(<field/>, <d/>);
|
|
1260
|
+
trade_when(rank(a) > <threshold_low/>, -zscore(<field2/>)*a, <threshold_high/>-rank(a))
|
|
1261
|
+
```
|
|
1262
|
+
| 占位符 | 可选值 | 说明 |
|
|
1263
|
+
|--------|--------|------|
|
|
1264
|
+
| `<ts_op/>` | `ts_rank`, `ts_zscore` | 时序操作 |
|
|
1265
|
+
| `<field/>` | 任意字段 | 条件字段 |
|
|
1266
|
+
| `<field2/>` | 任意字段 | 信号字段 |
|
|
1267
|
+
| `<d/>` | `25`, `66` | 窗口 |
|
|
1268
|
+
| `<threshold_low/>` | `0.03`, `0.1` | 下阈值 |
|
|
1269
|
+
| `<threshold_high/>` | `0.25`, `0.5` | 上阈值 |
|
|
1270
|
+
|
|
1271
|
+
---
|
|
1272
|
+
|
|
1273
|
+
## 第八部分:复合多因子模板 (TPL-701 ~ TPL-720)
|
|
1274
|
+
|
|
1275
|
+
### TPL-701: 三因子乘积
|
|
1276
|
+
```
|
|
1277
|
+
模板:
|
|
1278
|
+
my_group = market;
|
|
1279
|
+
rank(
|
|
1280
|
+
group_rank(<ts_op1/>(<field1/>, <d1/>), my_group) *
|
|
1281
|
+
group_rank(<ts_op2/>(<field2/>, <d2/>), my_group) *
|
|
1282
|
+
group_rank(<ts_op3/>(<field3/>, <d3/>), my_group)
|
|
1283
|
+
)
|
|
1284
|
+
```
|
|
1285
|
+
| 占位符 | 可选值 | 说明 |
|
|
1286
|
+
|--------|--------|------|
|
|
1287
|
+
| `<ts_op1/>` | `ts_decay_linear`, `ts_rank` | 第一因子操作 |
|
|
1288
|
+
| `<ts_op2/>` | `ts_rank`, `ts_zscore` | 第二因子操作 |
|
|
1289
|
+
| `<ts_op3/>` | `-ts_delta` | 第三因子操作(反转) |
|
|
1290
|
+
| `<field1/>` | `volume/ts_sum(volume, 252)` | 成交量趋势 |
|
|
1291
|
+
| `<field2/>` | `vec_avg({Fundamental})` | 基本面信号 |
|
|
1292
|
+
| `<field3/>` | `close` | 价格信号 |
|
|
1293
|
+
| `<d1/>`, `<d2/>`, `<d3/>` | 各因子窗口 | 时间参数 |
|
|
1294
|
+
|
|
1295
|
+
---
|
|
1296
|
+
|
|
1297
|
+
### TPL-702: 波动率条件反转
|
|
1298
|
+
```
|
|
1299
|
+
模板:
|
|
1300
|
+
vol = ts_std_dev(<ret_field/>, <d/>);
|
|
1301
|
+
vol_mean = group_mean(vol, 1, market);
|
|
1302
|
+
flip_ret = if_else(vol < vol_mean, -<ret_field/>, <ret_field/>);
|
|
1303
|
+
-ts_mean(flip_ret, <d/>)
|
|
1304
|
+
```
|
|
1305
|
+
| 占位符 | 可选值 | 说明 |
|
|
1306
|
+
|--------|--------|------|
|
|
1307
|
+
| `<ret_field/>` | `returns`, `close/open-1` | 收益字段 |
|
|
1308
|
+
| `<d/>` | `20`, `22` | 窗口参数 |
|
|
1309
|
+
|
|
1310
|
+
**说明**: 低波动环境做反转,高波动环境做动量
|
|
1311
|
+
|
|
1312
|
+
---
|
|
1313
|
+
|
|
1314
|
+
### TPL-703: 恐惧指标组合
|
|
1315
|
+
```
|
|
1316
|
+
模板:
|
|
1317
|
+
fear = ts_mean(
|
|
1318
|
+
abs(returns - group_mean(returns, 1, market)) /
|
|
1319
|
+
(abs(returns) + abs(group_mean(returns, 1, market)) + 0.1),
|
|
1320
|
+
<d/>
|
|
1321
|
+
);
|
|
1322
|
+
-group_neutralize(fear * <signal/>, bucket(rank(cap), range="0.1,1,0.1"))
|
|
1323
|
+
```
|
|
1324
|
+
| 占位符 | 可选值 | 说明 |
|
|
1325
|
+
|--------|--------|------|
|
|
1326
|
+
| `<d/>` | `20`, `22` | 恐惧指标窗口 |
|
|
1327
|
+
| `<signal/>` | 主信号表达式 | 待组合信号 |
|
|
1328
|
+
|
|
1329
|
+
---
|
|
1330
|
+
|
|
1331
|
+
### TPL-704: 债务杠杆相关性
|
|
1332
|
+
```
|
|
1333
|
+
模板: group_neutralize(ts_zscore(<leverage_field/>, <d1/>) * ts_corr(<leverage_field/>, returns, <d2/>), sector)
|
|
1334
|
+
```
|
|
1335
|
+
| 占位符 | 可选值 | 说明 |
|
|
1336
|
+
|--------|--------|------|
|
|
1337
|
+
| `<leverage_field/>` | `debt_to_equity`, `debt/assets` | 杠杆字段 |
|
|
1338
|
+
| `<d1/>` | `60`, `126` | zscore窗口 |
|
|
1339
|
+
| `<d2/>` | `20`, `66` | 相关性窗口 |
|
|
1340
|
+
|
|
1341
|
+
---
|
|
1342
|
+
|
|
1343
|
+
### TPL-705: 模型数据信号
|
|
1344
|
+
```
|
|
1345
|
+
模板: -<model_field/>
|
|
1346
|
+
```
|
|
1347
|
+
| 占位符 | 可选值 | 说明 |
|
|
1348
|
+
|--------|--------|------|
|
|
1349
|
+
| `<model_field/>` | `mdl175_01dtsv`, `mdl175_01icc` | 模型字段 |
|
|
1350
|
+
|
|
1351
|
+
**带排名版**:
|
|
1352
|
+
```
|
|
1353
|
+
rank(group_rank(ts_rank(ts_backfill(<model_field/>, 5), 5), sta1_top3000c20))
|
|
1354
|
+
```
|
|
1355
|
+
|
|
1356
|
+
---
|
|
1357
|
+
|
|
1358
|
+
### TPL-706: 回归zscore模板
|
|
1359
|
+
```
|
|
1360
|
+
模板: ts_regression(ts_zscore(<field1/>, <d/>), ts_zscore(<field2/>, <d/>), <d/>)
|
|
1361
|
+
```
|
|
1362
|
+
| 占位符 | 可选值 | 说明 |
|
|
1363
|
+
|--------|--------|------|
|
|
1364
|
+
| `<field1/>` | MATRIX字段 | Y变量 |
|
|
1365
|
+
| `<field2/>` | MATRIX字段或vec_sum(VECTOR) | X变量 |
|
|
1366
|
+
| `<d/>` | `252`, `500`, `504` | 回归窗口 |
|
|
1367
|
+
|
|
1368
|
+
---
|
|
1369
|
+
|
|
1370
|
+
### TPL-707: 分组Delta模板
|
|
1371
|
+
```
|
|
1372
|
+
模板: group_neutralize(ts_delta(<field/>, <d/>), sector)
|
|
1373
|
+
```
|
|
1374
|
+
| 占位符 | 可选值 | 说明 |
|
|
1375
|
+
|--------|--------|------|
|
|
1376
|
+
| `<field/>` | 任意数据字段 | 主字段 |
|
|
1377
|
+
| `<d/>` | `22`, `66`, `126` | 差分窗口 |
|
|
1378
|
+
|
|
1379
|
+
---
|
|
1380
|
+
|
|
1381
|
+
## 第九部分:数据预处理模板 (TPL-801 ~ TPL-815)
|
|
1382
|
+
|
|
1383
|
+
### TPL-801: Winsorize截断
|
|
1384
|
+
```
|
|
1385
|
+
模板: winsorize(<field/>, std=<std/>)
|
|
1386
|
+
```
|
|
1387
|
+
| 占位符 | 可选值 | 说明 |
|
|
1388
|
+
|--------|--------|------|
|
|
1389
|
+
| `<field/>` | 任意字段 | 原始数据 |
|
|
1390
|
+
| `<std/>` | `3`, `4`, `5` | 截断标准差 |
|
|
1391
|
+
|
|
1392
|
+
---
|
|
1393
|
+
|
|
1394
|
+
### TPL-802: Sigmoid归一化
|
|
1395
|
+
```
|
|
1396
|
+
模板: sigmoid(<ts_op/>(<field/>, <d/>))
|
|
1397
|
+
```
|
|
1398
|
+
| 占位符 | 可选值 | 说明 |
|
|
1399
|
+
|--------|--------|------|
|
|
1400
|
+
| `<ts_op/>` | `ts_zscore`, `ts_ir`, `ts_rank` | 时序操作 |
|
|
1401
|
+
| `<field/>` | 任意字段 | 原始数据 |
|
|
1402
|
+
| `<d/>` | `22`, `66`, `252` | 窗口 |
|
|
1403
|
+
|
|
1404
|
+
---
|
|
1405
|
+
|
|
1406
|
+
### TPL-803: 数据回填
|
|
1407
|
+
```
|
|
1408
|
+
模板: ts_backfill(<field/>, <d/>)
|
|
1409
|
+
```
|
|
1410
|
+
| 占位符 | 可选值 | 说明 |
|
|
1411
|
+
|--------|--------|------|
|
|
1412
|
+
| `<field/>` | 低频数据字段 | 需要回填的字段 |
|
|
1413
|
+
| `<d/>` | `115`, `120`, `180`, `252` | 回填窗口 |
|
|
1414
|
+
|
|
1415
|
+
---
|
|
1416
|
+
|
|
1417
|
+
### TPL-804: 条件替换
|
|
1418
|
+
```
|
|
1419
|
+
模板: if_else(is_not_nan(<field/>), <field/>, <alternative/>)
|
|
1420
|
+
```
|
|
1421
|
+
| 占位符 | 可选值 | 说明 |
|
|
1422
|
+
|--------|--------|------|
|
|
1423
|
+
| `<field/>` | 主字段 | 可能有NaN的字段 |
|
|
1424
|
+
| `<alternative/>` | 替代字段或值 | NaN时的替代 |
|
|
1425
|
+
|
|
1426
|
+
---
|
|
1427
|
+
|
|
1428
|
+
### TPL-805: 极端值替换
|
|
1429
|
+
```
|
|
1430
|
+
模板: tail(tail(<field/>, lower=<low/>, upper=<high/>, newval=<low/>), lower=-<high/>, upper=-<low/>, newval=-<low/>)
|
|
1431
|
+
```
|
|
1432
|
+
| 占位符 | 可选值 | 说明 |
|
|
1433
|
+
|--------|--------|------|
|
|
1434
|
+
| `<field/>` | 任意字段 | 原始数据 |
|
|
1435
|
+
| `<low/>` | `0.25`, `0.1` | 下界 |
|
|
1436
|
+
| `<high/>` | `100`, `1000` | 上界 |
|
|
1437
|
+
|
|
1438
|
+
---
|
|
1439
|
+
|
|
1440
|
+
### TPL-806: 组合预处理
|
|
1441
|
+
```
|
|
1442
|
+
模板: <ts_op/>(winsorize(ts_backfill(<field/>, <d_backfill/>), std=<std/>), <d/>)
|
|
1443
|
+
```
|
|
1444
|
+
| 占位符 | 可选值 | 说明 |
|
|
1445
|
+
|--------|--------|------|
|
|
1446
|
+
| `<ts_op/>` | `ts_rank`, `ts_zscore`, `ts_mean` | 时序操作 |
|
|
1447
|
+
| `<field/>` | 低频字段 | 需要处理的字段 |
|
|
1448
|
+
| `<d_backfill/>` | `120`, `180` | 回填窗口 |
|
|
1449
|
+
| `<std/>` | `4` | winsorize参数 |
|
|
1450
|
+
| `<d/>` | `22`, `66` | 操作窗口 |
|
|
1451
|
+
|
|
1452
|
+
---
|
|
1453
|
+
|
|
1454
|
+
### TPL-807: ts_min/ts_max替代
|
|
1455
|
+
```
|
|
1456
|
+
模板: ts_backfill(if_else(ts_arg_min(<field/>, <d/>) == 0, <field/>, nan), 120)
|
|
1457
|
+
```
|
|
1458
|
+
| 占位符 | 可选值 | 说明 |
|
|
1459
|
+
|--------|--------|------|
|
|
1460
|
+
| `<field/>` | 任意字段 | 原始数据 |
|
|
1461
|
+
| `<d/>` | `22`, `66`, `126` | 窗口 |
|
|
1462
|
+
|
|
1463
|
+
**说明**: 当ts_min/ts_max不可用时的替代方案
|
|
1464
|
+
|
|
1465
|
+
---
|
|
1466
|
+
|
|
1467
|
+
## 第十部分:高级统计模板 (TPL-901 ~ TPL-920)
|
|
1468
|
+
|
|
1469
|
+
### TPL-901: 高阶矩模板 (ts_moment)
|
|
1470
|
+
```
|
|
1471
|
+
模板: <ts_op/>(<group_op/>(ts_moment(<field/>, <d/>, k=<k/>), <group/>))
|
|
1472
|
+
```
|
|
1473
|
+
| 占位符 | 可选值 | 说明 |
|
|
1474
|
+
|--------|--------|------|
|
|
1475
|
+
| `<ts_op/>` | `rank`, `zscore`, `sigmoid` | 标准化操作 |
|
|
1476
|
+
| `<group_op/>` | `group_rank`, `group_zscore` | 分组操作 |
|
|
1477
|
+
| `<field/>` | 任意MATRIX字段 | 数据字段 |
|
|
1478
|
+
| `<d/>` | `22`, `66`, `126` | 窗口 |
|
|
1479
|
+
| `<k/>` | `2`, `3`, `4` | k=2方差, k=3偏度, k=4峰度 |
|
|
1480
|
+
|
|
1481
|
+
**说明**: ts_moment(x, d, k)计算k阶中心矩
|
|
1482
|
+
|
|
1483
|
+
---
|
|
1484
|
+
|
|
1485
|
+
### TPL-902: 协偏度/协峰度模板
|
|
1486
|
+
```
|
|
1487
|
+
模板: <group_op/>(ts_co_skewness(<field1/>, <field2/>, <d/>), <group/>)
|
|
1488
|
+
```
|
|
1489
|
+
| 占位符 | 可选值 | 说明 |
|
|
1490
|
+
|--------|--------|------|
|
|
1491
|
+
| `<group_op/>` | `group_rank`, `group_zscore` | 分组操作 |
|
|
1492
|
+
| `<field1/>` | `returns`, `close` | 第一变量 |
|
|
1493
|
+
| `<field2/>` | `volume`, `vwap` | 第二变量 |
|
|
1494
|
+
| `<d/>` | `66`, `126`, `252` | 窗口 |
|
|
1495
|
+
|
|
1496
|
+
**协峰度版**:
|
|
1497
|
+
```
|
|
1498
|
+
模板: <group_op/>(ts_co_kurtosis(<field1/>, <field2/>, <d/>), <group/>)
|
|
1499
|
+
```
|
|
1500
|
+
|
|
1501
|
+
---
|
|
1502
|
+
|
|
1503
|
+
### TPL-903: 偏相关模板 (ts_partial_corr)
|
|
1504
|
+
```
|
|
1505
|
+
模板: group_rank(ts_partial_corr(<field1/>, <field2/>, <control/>, <d/>), <group/>)
|
|
1506
|
+
```
|
|
1507
|
+
| 占位符 | 可选值 | 说明 |
|
|
1508
|
+
|--------|--------|------|
|
|
1509
|
+
| `<field1/>` | `returns`, 收益相关 | Y变量 |
|
|
1510
|
+
| `<field2/>` | 任意字段 | X变量 |
|
|
1511
|
+
| `<control/>` | `group_mean(returns, 1, market)` | 控制变量(市场收益) |
|
|
1512
|
+
| `<d/>` | `60`, `126`, `252` | 窗口 |
|
|
1513
|
+
| `<group/>` | `sector`, `industry` | 分组 |
|
|
1514
|
+
|
|
1515
|
+
**说明**: 计算两变量偏相关,控制第三变量影响
|
|
1516
|
+
|
|
1517
|
+
---
|
|
1518
|
+
|
|
1519
|
+
### TPL-904: 三元相关模板 (ts_triple_corr)
|
|
1520
|
+
```
|
|
1521
|
+
模板: group_rank(ts_triple_corr(<field1/>, <field2/>, <field3/>, <d/>), <group/>)
|
|
1522
|
+
```
|
|
1523
|
+
| 占位符 | 可选值 | 说明 |
|
|
1524
|
+
|--------|--------|------|
|
|
1525
|
+
| `<field1/>` | `returns` | 第一变量 |
|
|
1526
|
+
| `<field2/>` | `volume` | 第二变量 |
|
|
1527
|
+
| `<field3/>` | 基本面字段 | 第三变量 |
|
|
1528
|
+
| `<d/>` | `60`, `126` | 窗口 |
|
|
1529
|
+
| `<group/>` | `sector`, `industry` | 分组 |
|
|
1530
|
+
|
|
1531
|
+
---
|
|
1532
|
+
|
|
1533
|
+
### TPL-905: Theil-Sen回归模板
|
|
1534
|
+
```
|
|
1535
|
+
模板: group_rank(ts_theilsen(<field1/>, <field2/>, <d/>), <group/>)
|
|
1536
|
+
```
|
|
1537
|
+
| 占位符 | 可选值 | 说明 |
|
|
1538
|
+
|--------|--------|------|
|
|
1539
|
+
| `<field1/>` | 任意MATRIX字段 | Y变量 |
|
|
1540
|
+
| `<field2/>` | 任意MATRIX字段或`ts_step(1)` | X变量 |
|
|
1541
|
+
| `<d/>` | `126`, `252`, `500` | 窗口 |
|
|
1542
|
+
| `<group/>` | `sector`, `industry` | 分组 |
|
|
1543
|
+
|
|
1544
|
+
**说明**: Theil-Sen回归比普通回归更鲁棒
|
|
1545
|
+
|
|
1546
|
+
---
|
|
1547
|
+
|
|
1548
|
+
### TPL-906: 多项式回归残差
|
|
1549
|
+
```
|
|
1550
|
+
模板: ts_poly_regression(<field1/>, <field2/>, <d/>, k=<k/>)
|
|
1551
|
+
```
|
|
1552
|
+
| 占位符 | 可选值 | 说明 |
|
|
1553
|
+
|--------|--------|------|
|
|
1554
|
+
| `<field1/>` | Y变量 | 被解释变量 |
|
|
1555
|
+
| `<field2/>` | X变量 | 解释变量 |
|
|
1556
|
+
| `<d/>` | `126`, `252` | 窗口 |
|
|
1557
|
+
| `<k/>` | `1`, `2`, `3` | 多项式阶数, k=2为二次回归 |
|
|
1558
|
+
|
|
1559
|
+
**说明**: 返回 y - Ey (残差)
|
|
1560
|
+
|
|
1561
|
+
---
|
|
1562
|
+
|
|
1563
|
+
### TPL-907: 向量中性化模板
|
|
1564
|
+
```
|
|
1565
|
+
模板: ts_vector_neut(<alpha/>, <risk_factor/>, <d/>)
|
|
1566
|
+
```
|
|
1567
|
+
| 占位符 | 可选值 | 说明 |
|
|
1568
|
+
|--------|--------|------|
|
|
1569
|
+
| `<alpha/>` | 主信号 | 待中性化Alpha |
|
|
1570
|
+
| `<risk_factor/>` | `returns`, `cap` | 风险因子 |
|
|
1571
|
+
| `<d/>` | `22`, `66`, `126` | 窗口(不宜过长,计算慢) |
|
|
1572
|
+
|
|
1573
|
+
**分组向量中性化**:
|
|
1574
|
+
```
|
|
1575
|
+
模板: group_vector_neut(<alpha/>, <risk_factor/>, <group/>)
|
|
1576
|
+
```
|
|
1577
|
+
|
|
1578
|
+
---
|
|
1579
|
+
|
|
1580
|
+
### TPL-908: 加权衰减模板
|
|
1581
|
+
```
|
|
1582
|
+
模板: group_neutralize(ts_weighted_decay(<alpha/>, k=<k/>), <group/>)
|
|
1583
|
+
```
|
|
1584
|
+
| 占位符 | 可选值 | 说明 |
|
|
1585
|
+
|--------|--------|------|
|
|
1586
|
+
| `<alpha/>` | 主信号 | 待衰减Alpha |
|
|
1587
|
+
| `<k/>` | `0.3`, `0.5`, `0.7` | 衰减系数 |
|
|
1588
|
+
| `<group/>` | `bucket(rank(cap), range="0.1,1,0.1")` | 分组 |
|
|
1589
|
+
|
|
1590
|
+
---
|
|
1591
|
+
|
|
1592
|
+
### TPL-909: 回归斜率模板
|
|
1593
|
+
```
|
|
1594
|
+
模板: ts_regression(ts_zscore(<field/>, <d/>), ts_step(1), <d/>, rettype=2)
|
|
1595
|
+
```
|
|
1596
|
+
| 占位符 | 可选值 | 说明 |
|
|
1597
|
+
|--------|--------|------|
|
|
1598
|
+
| `<field/>` | 任意MATRIX字段 | 数据字段 |
|
|
1599
|
+
| `<d/>` | `252`, `500` | 窗口 |
|
|
1600
|
+
|
|
1601
|
+
**说明**: rettype=2返回斜率,用于检测趋势
|
|
1602
|
+
|
|
1603
|
+
---
|
|
1604
|
+
|
|
1605
|
+
### TPL-910: 最小最大压缩模板
|
|
1606
|
+
```
|
|
1607
|
+
模板: ts_min_max_cps(<field/>, <d/>, f=<f/>)
|
|
1608
|
+
```
|
|
1609
|
+
| 占位符 | 可选值 | 说明 |
|
|
1610
|
+
|--------|--------|------|
|
|
1611
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
1612
|
+
| `<d/>` | `22`, `66`, `126` | 窗口 |
|
|
1613
|
+
| `<f/>` | `2`, `0.5` | 压缩因子 |
|
|
1614
|
+
|
|
1615
|
+
**等价公式**: `x - f * (ts_min(x, d) + ts_max(x, d))`
|
|
1616
|
+
|
|
1617
|
+
---
|
|
1618
|
+
|
|
1619
|
+
## 第十一部分:事件驱动模板 (TPL-1001 ~ TPL-1020)
|
|
1620
|
+
|
|
1621
|
+
### TPL-1001: 数据变化天数模板
|
|
1622
|
+
```
|
|
1623
|
+
模板: if_else(days_from_last_change(<field/>) == <days/>, <alpha/>, nan)
|
|
1624
|
+
```
|
|
1625
|
+
| 占位符 | 可选值 | 说明 |
|
|
1626
|
+
|--------|--------|------|
|
|
1627
|
+
| `<field/>` | 基本面字段 | 监测变化的字段 |
|
|
1628
|
+
| `<days/>` | `1`, `2`, `5` | 距离变化的天数 |
|
|
1629
|
+
| `<alpha/>` | `ts_delta(close, 5)`, 主信号 | 事件触发时的Alpha |
|
|
1630
|
+
|
|
1631
|
+
**动态衰减版**:
|
|
1632
|
+
```
|
|
1633
|
+
模板: <alpha/> / (1 + days_from_last_change(<field/>))
|
|
1634
|
+
```
|
|
1635
|
+
|
|
1636
|
+
---
|
|
1637
|
+
|
|
1638
|
+
### TPL-1002: 最近差值模板
|
|
1639
|
+
```
|
|
1640
|
+
模板: <ts_op/>(last_diff_value(<field/>, <d/>), <d2/>)
|
|
1641
|
+
```
|
|
1642
|
+
| 占位符 | 可选值 | 说明 |
|
|
1643
|
+
|--------|--------|------|
|
|
1644
|
+
| `<ts_op/>` | `ts_rank`, `ts_zscore` | 时序操作 |
|
|
1645
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
1646
|
+
| `<d/>` | `60`, `90`, `120` | 回溯窗口 |
|
|
1647
|
+
| `<d2/>` | `22`, `66` | 操作窗口 |
|
|
1648
|
+
|
|
1649
|
+
**说明**: 返回过去d天内最近一次不同于当前值的历史值
|
|
1650
|
+
|
|
1651
|
+
---
|
|
1652
|
+
|
|
1653
|
+
### TPL-1003: 缺失值计数模板
|
|
1654
|
+
```
|
|
1655
|
+
模板: -ts_count_nans(ts_backfill(<field/>, <d1/>), <d2/>)
|
|
1656
|
+
```
|
|
1657
|
+
| 占位符 | 可选值 | 说明 |
|
|
1658
|
+
|--------|--------|------|
|
|
1659
|
+
| `<field/>` | 分析师数据等 | 可能有缺失的字段 |
|
|
1660
|
+
| `<d1/>` | `5`, `10` | 回填窗口 |
|
|
1661
|
+
| `<d2/>` | `20`, `30` | 计数窗口 |
|
|
1662
|
+
|
|
1663
|
+
**应用**: 分析师覆盖度信号,缺失越少覆盖越好
|
|
1664
|
+
|
|
1665
|
+
---
|
|
1666
|
+
|
|
1667
|
+
### TPL-1004: 位置最大/最小模板
|
|
1668
|
+
```
|
|
1669
|
+
模板: if_else(ts_arg_max(<field/>, <d/>) == <position/>, <alpha/>, nan)
|
|
1670
|
+
```
|
|
1671
|
+
| 占位符 | 可选值 | 说明 |
|
|
1672
|
+
|--------|--------|------|
|
|
1673
|
+
| `<field/>` | `volume`, 任意字段 | 监测字段 |
|
|
1674
|
+
| `<d/>` | `5`, `10` | 窗口 |
|
|
1675
|
+
| `<position/>` | `0`, `1` | 0表示今天是最大值 |
|
|
1676
|
+
| `<alpha/>` | 主信号 | 条件满足时的Alpha |
|
|
1677
|
+
|
|
1678
|
+
**组合条件**:
|
|
1679
|
+
```
|
|
1680
|
+
模板: (ts_arg_max(<field1/>, <d/>) == ts_arg_max(<field2/>, <d/>)) * (<alpha1/> + <alpha2/>)
|
|
1681
|
+
```
|
|
1682
|
+
|
|
1683
|
+
---
|
|
1684
|
+
|
|
1685
|
+
### TPL-1005: 财报发布事件模板
|
|
1686
|
+
```
|
|
1687
|
+
模板:
|
|
1688
|
+
event_signal = if_else(ts_delta(<fundamental_field/>, 1) != 0, <alpha/>, nan);
|
|
1689
|
+
ts_decay_linear(event_signal, <decay_d/>)
|
|
1690
|
+
```
|
|
1691
|
+
| 占位符 | 可选值 | 说明 |
|
|
1692
|
+
|--------|--------|------|
|
|
1693
|
+
| `<fundamental_field/>` | `assets`, `sales`, `eps` | 基本面字段 |
|
|
1694
|
+
| `<alpha/>` | `ts_delta(close, 5)`, 主信号 | 事件Alpha |
|
|
1695
|
+
| `<decay_d/>` | `10`, `22` | 衰减窗口 |
|
|
1696
|
+
|
|
1697
|
+
---
|
|
1698
|
+
|
|
1699
|
+
### TPL-1006: 动态Decay事件驱动
|
|
1700
|
+
```
|
|
1701
|
+
模板:
|
|
1702
|
+
decay_weight = 1 / (1 + days_from_last_change(<event_field/>));
|
|
1703
|
+
<alpha/> * decay_weight
|
|
1704
|
+
```
|
|
1705
|
+
| 占位符 | 可选值 | 说明 |
|
|
1706
|
+
|--------|--------|------|
|
|
1707
|
+
| `<event_field/>` | 任意字段 | 事件触发字段 |
|
|
1708
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1709
|
+
|
|
1710
|
+
---
|
|
1711
|
+
|
|
1712
|
+
### TPL-1007: 盈利公告模板
|
|
1713
|
+
```
|
|
1714
|
+
模板:
|
|
1715
|
+
surprise = <actual_field/> - <estimate_field/>;
|
|
1716
|
+
if_else(days_from_last_change(<actual_field/>) < <window/>, surprise, nan)
|
|
1717
|
+
```
|
|
1718
|
+
| 占位符 | 可选值 | 说明 |
|
|
1719
|
+
|--------|--------|------|
|
|
1720
|
+
| `<actual_field/>` | `eps` | 实际值 |
|
|
1721
|
+
| `<estimate_field/>` | `vec_avg(anl4_eps_mean)` | 预测值 |
|
|
1722
|
+
| `<window/>` | `5`, `10` | 事件有效窗口 |
|
|
1723
|
+
|
|
1724
|
+
---
|
|
1725
|
+
|
|
1726
|
+
## 第十二部分:信号处理模板 (TPL-1101 ~ TPL-1120)
|
|
1727
|
+
|
|
1728
|
+
### TPL-1101: 黄金比例幂变换
|
|
1729
|
+
```
|
|
1730
|
+
模板: signed_power(<alpha/>, 0.618)
|
|
1731
|
+
```
|
|
1732
|
+
| 占位符 | 可选值 | 说明 |
|
|
1733
|
+
|--------|--------|------|
|
|
1734
|
+
| `<alpha/>` | 主信号表达式 | 原始Alpha |
|
|
1735
|
+
|
|
1736
|
+
**其他幂次**:
|
|
1737
|
+
```
|
|
1738
|
+
signed_power(<alpha/>, 0.5) # 平方根
|
|
1739
|
+
signed_power(<alpha/>, 2) # 平方增强
|
|
1740
|
+
```
|
|
1741
|
+
|
|
1742
|
+
---
|
|
1743
|
+
|
|
1744
|
+
### TPL-1102: 尾部截断模板
|
|
1745
|
+
```
|
|
1746
|
+
模板: right_tail(<alpha/>, minimum=<min/>)
|
|
1747
|
+
```
|
|
1748
|
+
| 占位符 | 可选值 | 说明 |
|
|
1749
|
+
|--------|--------|------|
|
|
1750
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1751
|
+
| `<min/>` | `0`, `0.1` | 最小阈值 |
|
|
1752
|
+
|
|
1753
|
+
**左尾版**:
|
|
1754
|
+
```
|
|
1755
|
+
模板: left_tail(<alpha/>, maximum=<max/>)
|
|
1756
|
+
```
|
|
1757
|
+
|
|
1758
|
+
---
|
|
1759
|
+
|
|
1760
|
+
### TPL-1103: Clamp边界限制
|
|
1761
|
+
```
|
|
1762
|
+
模板: clamp(<alpha/>, lower=<low/>, upper=<high/>)
|
|
1763
|
+
```
|
|
1764
|
+
| 占位符 | 可选值 | 说明 |
|
|
1765
|
+
|--------|--------|------|
|
|
1766
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1767
|
+
| `<low/>` | `-1`, `-0.5` | 下界 |
|
|
1768
|
+
| `<high/>` | `1`, `0.5` | 上界 |
|
|
1769
|
+
|
|
1770
|
+
---
|
|
1771
|
+
|
|
1772
|
+
### TPL-1104: 分数映射模板
|
|
1773
|
+
```
|
|
1774
|
+
模板: fraction(<alpha/>)
|
|
1775
|
+
```
|
|
1776
|
+
| 占位符 | 可选值 | 说明 |
|
|
1777
|
+
|--------|--------|------|
|
|
1778
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1779
|
+
|
|
1780
|
+
**说明**: 将连续变量映射到分布内的相对位置
|
|
1781
|
+
|
|
1782
|
+
---
|
|
1783
|
+
|
|
1784
|
+
### TPL-1105: NaN外推模板
|
|
1785
|
+
```
|
|
1786
|
+
模板: nan_out(<field/>, lower=<low/>, upper=<high/>)
|
|
1787
|
+
```
|
|
1788
|
+
| 占位符 | 可选值 | 说明 |
|
|
1789
|
+
|--------|--------|------|
|
|
1790
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
1791
|
+
| `<low/>` | `-3`, `-5` | 下界 |
|
|
1792
|
+
| `<high/>` | `3`, `5` | 上界 |
|
|
1793
|
+
|
|
1794
|
+
**说明**: 将超出范围的值替换为NaN
|
|
1795
|
+
|
|
1796
|
+
---
|
|
1797
|
+
|
|
1798
|
+
### TPL-1106: Purify数据清洗
|
|
1799
|
+
```
|
|
1800
|
+
模板: purify(<field/>)
|
|
1801
|
+
```
|
|
1802
|
+
| 占位符 | 可选值 | 说明 |
|
|
1803
|
+
|--------|--------|------|
|
|
1804
|
+
| `<field/>` | 任意字段 | 需要清洗的数据 |
|
|
1805
|
+
|
|
1806
|
+
**说明**: 自动化数据清洗,减少噪声和异常值
|
|
1807
|
+
|
|
1808
|
+
---
|
|
1809
|
+
|
|
1810
|
+
### TPL-1107: 条件保留模板
|
|
1811
|
+
```
|
|
1812
|
+
模板: keep(<field/>, <condition/>, period=<d/>)
|
|
1813
|
+
```
|
|
1814
|
+
| 占位符 | 可选值 | 说明 |
|
|
1815
|
+
|--------|--------|------|
|
|
1816
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
1817
|
+
| `<condition/>` | `<field/> > 0` | 保留条件 |
|
|
1818
|
+
| `<d/>` | `3`, `5`, `10` | 滚动窗口 |
|
|
1819
|
+
|
|
1820
|
+
**示例**:
|
|
1821
|
+
```
|
|
1822
|
+
keep(returns, returns > 0, period=3) # 只保留正收益
|
|
1823
|
+
```
|
|
1824
|
+
|
|
1825
|
+
---
|
|
1826
|
+
|
|
1827
|
+
### TPL-1108: 缩放降维模板
|
|
1828
|
+
```
|
|
1829
|
+
模板: -scale_down(<ts_op/>(<field/>, <d1/>), constant=<c/>)
|
|
1830
|
+
```
|
|
1831
|
+
| 占位符 | 可选值 | 说明 |
|
|
1832
|
+
|--------|--------|------|
|
|
1833
|
+
| `<ts_op/>` | `ts_mean`, `ts_rank` | 时序操作 |
|
|
1834
|
+
| `<field/>` | `returns`, 任意字段 | 数据字段 |
|
|
1835
|
+
| `<d1/>` | `2`, `5` | 窗口 |
|
|
1836
|
+
| `<c/>` | `0.1`, `0.05` | 缩放常数 |
|
|
1837
|
+
|
|
1838
|
+
---
|
|
1839
|
+
|
|
1840
|
+
### TPL-1109: Truncate截断模板
|
|
1841
|
+
```
|
|
1842
|
+
模板: truncate(<alpha/>, maxPercent=<percent/>)
|
|
1843
|
+
```
|
|
1844
|
+
| 占位符 | 可选值 | 说明 |
|
|
1845
|
+
|--------|--------|------|
|
|
1846
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1847
|
+
| `<percent/>` | `0.01`, `0.05` | 截断百分比 |
|
|
1848
|
+
|
|
1849
|
+
---
|
|
1850
|
+
|
|
1851
|
+
### TPL-1110: 组合Normalize模板
|
|
1852
|
+
```
|
|
1853
|
+
模板: group_normalize(<alpha/>, <group/>)
|
|
1854
|
+
```
|
|
1855
|
+
| 占位符 | 可选值 | 说明 |
|
|
1856
|
+
|--------|--------|------|
|
|
1857
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1858
|
+
| `<group/>` | `sector`, `industry` | 分组 |
|
|
1859
|
+
|
|
1860
|
+
**等价公式**: `alpha / group_sum(abs(alpha), group)`
|
|
1861
|
+
|
|
1862
|
+
---
|
|
1863
|
+
|
|
1864
|
+
## 第十三部分:Turnover控制模板 (TPL-1201 ~ TPL-1215)
|
|
1865
|
+
|
|
1866
|
+
### TPL-1201: 目标换手率Hump
|
|
1867
|
+
```
|
|
1868
|
+
模板: ts_target_tvr_hump(<alpha/>, lambda_min=0, lambda_max=1, target_tvr=<target/>)
|
|
1869
|
+
```
|
|
1870
|
+
| 占位符 | 可选值 | 说明 |
|
|
1871
|
+
|--------|--------|------|
|
|
1872
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1873
|
+
| `<target/>` | `0.1`, `0.15`, `0.2` | 目标换手率 |
|
|
1874
|
+
|
|
1875
|
+
---
|
|
1876
|
+
|
|
1877
|
+
### TPL-1202: Delta限制换手率
|
|
1878
|
+
```
|
|
1879
|
+
模板: ts_target_tvr_delta_limit(<alpha/>, <factor/>, lambda_min=0, lambda_max=1, target_tvr=<target/>)
|
|
1880
|
+
```
|
|
1881
|
+
| 占位符 | 可选值 | 说明 |
|
|
1882
|
+
|--------|--------|------|
|
|
1883
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1884
|
+
| `<factor/>` | 辅助因子 | 限制因子 |
|
|
1885
|
+
| `<target/>` | `0.1`, `0.15` | 目标换手率 |
|
|
1886
|
+
|
|
1887
|
+
---
|
|
1888
|
+
|
|
1889
|
+
### TPL-1203: Hump衰减组合
|
|
1890
|
+
```
|
|
1891
|
+
模板: hump_decay(<alpha/>, hump=<h/>)
|
|
1892
|
+
```
|
|
1893
|
+
| 占位符 | 可选值 | 说明 |
|
|
1894
|
+
|--------|--------|------|
|
|
1895
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1896
|
+
| `<h/>` | `0.001`, `0.01` | Hump参数 |
|
|
1897
|
+
|
|
1898
|
+
**嵌套版**:
|
|
1899
|
+
```
|
|
1900
|
+
hump(hump_decay(<alpha/>, hump=0.001))
|
|
1901
|
+
```
|
|
1902
|
+
|
|
1903
|
+
---
|
|
1904
|
+
|
|
1905
|
+
### TPL-1204: 平均+Hump模板
|
|
1906
|
+
```
|
|
1907
|
+
模板: -ts_mean(ts_target_tvr_hump(group_rank(<field/>, country), lambda_min=0, lambda_max=1, target_tvr=<target/>), <d/>)
|
|
1908
|
+
```
|
|
1909
|
+
| 占位符 | 可选值 | 说明 |
|
|
1910
|
+
|--------|--------|------|
|
|
1911
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
1912
|
+
| `<target/>` | `0.1` | 目标换手率 |
|
|
1913
|
+
| `<d/>` | `5`, `10` | 平均窗口 |
|
|
1914
|
+
|
|
1915
|
+
---
|
|
1916
|
+
|
|
1917
|
+
### TPL-1205: 简单Hump模板
|
|
1918
|
+
```
|
|
1919
|
+
模板: hump(<alpha/>, hump=<h/>)
|
|
1920
|
+
```
|
|
1921
|
+
| 占位符 | 可选值 | 说明 |
|
|
1922
|
+
|--------|--------|------|
|
|
1923
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1924
|
+
| `<h/>` | `0.01`, `0.001`, `0.0001` | Hump参数 |
|
|
1925
|
+
|
|
1926
|
+
**示例**:
|
|
1927
|
+
```
|
|
1928
|
+
hump(-ts_delta(close, 5), hump=0.01)
|
|
1929
|
+
```
|
|
1930
|
+
|
|
1931
|
+
---
|
|
1932
|
+
|
|
1933
|
+
## 第十四部分:回填与覆盖模板 (TPL-1301 ~ TPL-1315)
|
|
1934
|
+
|
|
1935
|
+
### TPL-1301: 分组回填模板
|
|
1936
|
+
```
|
|
1937
|
+
模板: group_backfill(<field/>, <group/>)
|
|
1938
|
+
```
|
|
1939
|
+
| 占位符 | 可选值 | 说明 |
|
|
1940
|
+
|--------|--------|------|
|
|
1941
|
+
| `<field/>` | 任意字段 | 需要回填的字段 |
|
|
1942
|
+
| `<group/>` | `sector`, `industry`, `market` | 分组字段 |
|
|
1943
|
+
|
|
1944
|
+
**说明**: 使用组内最近值填充NaN
|
|
1945
|
+
|
|
1946
|
+
---
|
|
1947
|
+
|
|
1948
|
+
### TPL-1302: 嵌套回填排名
|
|
1949
|
+
```
|
|
1950
|
+
模板: rank(group_backfill(<field/>, <group/>))
|
|
1951
|
+
```
|
|
1952
|
+
| 占位符 | 可选值 | 说明 |
|
|
1953
|
+
|--------|--------|------|
|
|
1954
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
1955
|
+
| `<group/>` | `sector`, `industry` | 分组 |
|
|
1956
|
+
|
|
1957
|
+
---
|
|
1958
|
+
|
|
1959
|
+
### TPL-1303: 覆盖度过滤
|
|
1960
|
+
```
|
|
1961
|
+
模板: group_count(is_nan(<field/>), market) > <threshold/> ? <alpha/> : nan
|
|
1962
|
+
```
|
|
1963
|
+
| 占位符 | 可选值 | 说明 |
|
|
1964
|
+
|--------|--------|------|
|
|
1965
|
+
| `<field/>` | 任意字段 | 检测字段 |
|
|
1966
|
+
| `<threshold/>` | `40`, `50` | 最小覆盖数 |
|
|
1967
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
1968
|
+
|
|
1969
|
+
---
|
|
1970
|
+
|
|
1971
|
+
### TPL-1304: NaN替换模板
|
|
1972
|
+
```
|
|
1973
|
+
模板: if_else(is_not_nan(<field/>), <field/>, <default/>)
|
|
1974
|
+
```
|
|
1975
|
+
| 占位符 | 可选值 | 说明 |
|
|
1976
|
+
|--------|--------|------|
|
|
1977
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
1978
|
+
| `<default/>` | `0`, `0.5`, `nan` | 默认值 |
|
|
1979
|
+
|
|
1980
|
+
---
|
|
1981
|
+
|
|
1982
|
+
### TPL-1305: 综合数据清洗
|
|
1983
|
+
```
|
|
1984
|
+
模板: <ts_op/>(winsorize(group_backfill(ts_backfill(<field/>, <d1/>), <group/>), std=<std/>), <d2/>)
|
|
1985
|
+
```
|
|
1986
|
+
| 占位符 | 可选值 | 说明 |
|
|
1987
|
+
|--------|--------|------|
|
|
1988
|
+
| `<ts_op/>` | `ts_rank`, `ts_zscore` | 时序操作 |
|
|
1989
|
+
| `<field/>` | 低频字段 | 数据字段 |
|
|
1990
|
+
| `<d1/>` | `120`, `180` | 时序回填窗口 |
|
|
1991
|
+
| `<group/>` | `sector`, `industry` | 分组回填 |
|
|
1992
|
+
| `<std/>` | `4` | winsorize参数 |
|
|
1993
|
+
| `<d2/>` | `66`, `126` | 操作窗口 |
|
|
1994
|
+
|
|
1995
|
+
---
|
|
1996
|
+
|
|
1997
|
+
## 第十五部分:组合提取模板 (TPL-1401 ~ TPL-1415)
|
|
1998
|
+
|
|
1999
|
+
### TPL-1401: group_extra填补模板
|
|
2000
|
+
```
|
|
2001
|
+
模板: group_extra(<field/>, <weight/>, <group/>)
|
|
2002
|
+
```
|
|
2003
|
+
| 占位符 | 可选值 | 说明 |
|
|
2004
|
+
|--------|--------|------|
|
|
2005
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
2006
|
+
| `<weight/>` | `0.5`, `1` | 权重 |
|
|
2007
|
+
| `<group/>` | `densify(industry)`, `sector` | 分组 |
|
|
2008
|
+
|
|
2009
|
+
**说明**: 用组均值填补缺失值
|
|
2010
|
+
|
|
2011
|
+
---
|
|
2012
|
+
|
|
2013
|
+
### TPL-1402: 组合提取sigmoid
|
|
2014
|
+
```
|
|
2015
|
+
模板: scale(group_extra(ts_sum(sigmoid(ts_backfill(<field/>, <d1/>)), <d2/>) - ts_sum(sigmoid(ts_backfill(<field/>, <d1/>)), <d2/>), 0.5, densify(industry)))
|
|
2016
|
+
```
|
|
2017
|
+
| 占位符 | 可选值 | 说明 |
|
|
2018
|
+
|--------|--------|------|
|
|
2019
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
2020
|
+
| `<d1/>` | `180` | 回填窗口 |
|
|
2021
|
+
| `<d2/>` | `3` | 求和窗口 |
|
|
2022
|
+
|
|
2023
|
+
---
|
|
2024
|
+
|
|
2025
|
+
### TPL-1403: PnL反馈模板
|
|
2026
|
+
```
|
|
2027
|
+
模板: if_else(inst_pnl(<alpha/>) > <threshold/>, <alpha/>, nan)
|
|
2028
|
+
```
|
|
2029
|
+
| 占位符 | 可选值 | 说明 |
|
|
2030
|
+
|--------|--------|------|
|
|
2031
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
2032
|
+
| `<threshold/>` | `0`, `-0.05` | PnL阈值 |
|
|
2033
|
+
|
|
2034
|
+
**说明**: 基于单标的PnL进行条件交易
|
|
2035
|
+
|
|
2036
|
+
---
|
|
2037
|
+
|
|
2038
|
+
### TPL-1404: 流动性加权模板
|
|
2039
|
+
```
|
|
2040
|
+
模板: <alpha/> * log(volume)
|
|
2041
|
+
```
|
|
2042
|
+
| 占位符 | 可选值 | 说明 |
|
|
2043
|
+
|--------|--------|------|
|
|
2044
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
2045
|
+
|
|
2046
|
+
**说明**: 将仓位偏向高流动性股票
|
|
2047
|
+
|
|
2048
|
+
---
|
|
2049
|
+
|
|
2050
|
+
### TPL-1405: 市值回归中性化
|
|
2051
|
+
```
|
|
2052
|
+
模板: regression_neut(<alpha/>, log(cap))
|
|
2053
|
+
```
|
|
2054
|
+
| 占位符 | 可选值 | 说明 |
|
|
2055
|
+
|--------|--------|------|
|
|
2056
|
+
| `<alpha/>` | 主信号 | 原始Alpha |
|
|
2057
|
+
|
|
2058
|
+
**说明**: 剥离市值因子影响
|
|
2059
|
+
|
|
2060
|
+
---
|
|
2061
|
+
|
|
2062
|
+
## 第十六部分:百分位与分位数模板 (TPL-1501 ~ TPL-1510)
|
|
2063
|
+
|
|
2064
|
+
### TPL-1501: 时序百分位模板
|
|
2065
|
+
```
|
|
2066
|
+
模板: ts_percentage(<field/>, <d/>, percentage=<p/>)
|
|
2067
|
+
```
|
|
2068
|
+
| 占位符 | 可选值 | 说明 |
|
|
2069
|
+
|--------|--------|------|
|
|
2070
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
2071
|
+
| `<d/>` | `22`, `66`, `126` | 窗口 |
|
|
2072
|
+
| `<p/>` | `0.5`, `0.25`, `0.75` | 百分位 |
|
|
2073
|
+
|
|
2074
|
+
---
|
|
2075
|
+
|
|
2076
|
+
### TPL-1502: 分位数模板
|
|
2077
|
+
```
|
|
2078
|
+
模板: <ts_op/>(ts_quantile(<field/>, <d/>, <q/>), <d2/>)
|
|
2079
|
+
```
|
|
2080
|
+
| 占位符 | 可选值 | 说明 |
|
|
2081
|
+
|--------|--------|------|
|
|
2082
|
+
| `<ts_op/>` | `rank`, `zscore` | 标准化 |
|
|
2083
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
2084
|
+
| `<d/>` | `66`, `126` | 窗口 |
|
|
2085
|
+
| `<q/>` | `0.25`, `0.5`, `0.75` | 分位数 |
|
|
2086
|
+
| `<d2/>` | `22` | 操作窗口 |
|
|
2087
|
+
|
|
2088
|
+
---
|
|
2089
|
+
|
|
2090
|
+
### TPL-1503: Max-Min比率模板
|
|
2091
|
+
```
|
|
2092
|
+
模板: ts_max_diff(<field/>, <d/>) / ts_av_diff(<field/>, <d/>)
|
|
2093
|
+
```
|
|
2094
|
+
| 占位符 | 可选值 | 说明 |
|
|
2095
|
+
|--------|--------|------|
|
|
2096
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
2097
|
+
| `<d/>` | `22`, `66` | 窗口 |
|
|
2098
|
+
|
|
2099
|
+
---
|
|
2100
|
+
|
|
2101
|
+
### TPL-1504: 中位数模板
|
|
2102
|
+
```
|
|
2103
|
+
模板: <field/> - ts_median(<field/>, <d/>)
|
|
2104
|
+
```
|
|
2105
|
+
| 占位符 | 可选值 | 说明 |
|
|
2106
|
+
|--------|--------|------|
|
|
2107
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
2108
|
+
| `<d/>` | `22`, `66`, `252` | 窗口 |
|
|
2109
|
+
|
|
2110
|
+
---
|
|
2111
|
+
|
|
2112
|
+
### TPL-1505: 累积乘积模板
|
|
2113
|
+
```
|
|
2114
|
+
模板: ts_product(1 + <ret_field/>, <d/>)
|
|
2115
|
+
```
|
|
2116
|
+
| 占位符 | 可选值 | 说明 |
|
|
2117
|
+
|--------|--------|------|
|
|
2118
|
+
| `<ret_field/>` | `returns`, 收益率字段 | 收益字段 |
|
|
2119
|
+
| `<d/>` | `5`, `22`, `66` | 窗口 |
|
|
2120
|
+
|
|
2121
|
+
**说明**: 计算累积收益
|
|
2122
|
+
|
|
2123
|
+
---
|
|
2124
|
+
|
|
2125
|
+
## 第十七部分:实战表达式模板 (TPL-1601 ~ TPL-1700)
|
|
2126
|
+
|
|
2127
|
+
**说明**: 以下模板从社区高票帖子中提取,为实际验证过的表达式格式。
|
|
2128
|
+
|
|
2129
|
+
### TPL-1601: ts_max/ts_min替代公式
|
|
2130
|
+
```
|
|
2131
|
+
模板: {data} - ts_max_diff({data}, {d}) # 等效于 ts_max
|
|
2132
|
+
模板: (({data} - ts_max_diff({data}, {d})) * ts_scale({data}, {d}) - {data}) / (ts_scale({data}, {d}) - 1) # 等效于 ts_min
|
|
2133
|
+
```
|
|
2134
|
+
| 占位符 | 可选值 | 说明 |
|
|
2135
|
+
|--------|--------|------|
|
|
2136
|
+
| `{data}` | 任意MATRIX字段 | 数据字段 |
|
|
2137
|
+
| `{d}` | `22`, `66`, `126` | 窗口 |
|
|
2138
|
+
|
|
2139
|
+
**应用**: 当平台不支持ts_max/ts_min时的替代方案
|
|
2140
|
+
|
|
2141
|
+
---
|
|
2142
|
+
|
|
2143
|
+
### TPL-1602: 线性衰减权重公式
|
|
2144
|
+
```
|
|
2145
|
+
模板: weight = {d} + ts_step(0); ts_sum({data} * weight, {d}) / ts_sum(weight, {d}) # 等效于 ts_decay_linear
|
|
2146
|
+
```
|
|
2147
|
+
| 占位符 | 可选值 | 说明 |
|
|
2148
|
+
|--------|--------|------|
|
|
2149
|
+
| `{data}` | 任意字段 | 数据字段 |
|
|
2150
|
+
| `{d}` | `10`, `22`, `66` | 衰减窗口 |
|
|
2151
|
+
|
|
2152
|
+
---
|
|
2153
|
+
|
|
2154
|
+
### TPL-1603: 组归一化公式
|
|
2155
|
+
```
|
|
2156
|
+
模板: {data} / group_sum(abs({data}), {group}) # 等效于 group_normalize
|
|
2157
|
+
```
|
|
2158
|
+
| 占位符 | 可选值 | 说明 |
|
|
2159
|
+
|--------|--------|------|
|
|
2160
|
+
| `{data}` | 任意字段 | 数据字段 |
|
|
2161
|
+
| `{group}` | `industry`, `sector` | 分组字段 |
|
|
2162
|
+
|
|
2163
|
+
---
|
|
2164
|
+
|
|
2165
|
+
### TPL-1604: IR+峰度组合模板
|
|
2166
|
+
```
|
|
2167
|
+
模板:
|
|
2168
|
+
rank_data = rank({field});
|
|
2169
|
+
ts_ir(rank_data, {d}) + ts_kurtosis(rank_data, {d})
|
|
2170
|
+
```
|
|
2171
|
+
| 占位符 | 可选值 | 说明 |
|
|
2172
|
+
|--------|--------|------|
|
|
2173
|
+
| `{field}` | `volume`, `returns`, 任意字段 | 数据字段 |
|
|
2174
|
+
| `{d}` | `22`, `66` | 窗口 |
|
|
2175
|
+
|
|
2176
|
+
**说明**: IR和峰度组合捕捉信号强度和分布特征
|
|
2177
|
+
|
|
2178
|
+
---
|
|
2179
|
+
|
|
2180
|
+
### TPL-1605: VWAP相关性信号
|
|
2181
|
+
```
|
|
2182
|
+
模板: returns > -{threshold} ? (ts_ir(ts_corr(ts_returns(vwap, 1), ts_delay(group_neutralize({field}, market), {d1}), {d2}), {d2})) : -1
|
|
2183
|
+
```
|
|
2184
|
+
| 占位符 | 可选值 | 说明 |
|
|
2185
|
+
|--------|--------|------|
|
|
2186
|
+
| `{field}` | 任意数据字段 | 信号字段 |
|
|
2187
|
+
| `{threshold}` | `0.1`, `0.05` | 收益过滤阈值 |
|
|
2188
|
+
| `{d1}` | `30`, `60` | 延迟窗口 |
|
|
2189
|
+
| `{d2}` | `90`, `120` | 相关性窗口 |
|
|
2190
|
+
|
|
2191
|
+
---
|
|
2192
|
+
|
|
2193
|
+
### TPL-1606: 球队硬币因子 (ballteam_coin)
|
|
2194
|
+
```
|
|
2195
|
+
模板:
|
|
2196
|
+
# 基础版
|
|
2197
|
+
rank(ballteam_coin)
|
|
2198
|
+
|
|
2199
|
+
# 市值中性化版
|
|
2200
|
+
group_neutralize(rank(ballteam_coin), bucket(rank(assets), range='0.1,1,0.1'))
|
|
2201
|
+
```
|
|
2202
|
+
**说明**: 经典球队vs硬币因子,用于捕捉收益持续性
|
|
2203
|
+
|
|
2204
|
+
---
|
|
2205
|
+
|
|
2206
|
+
### TPL-1607: 偏度因子模板
|
|
2207
|
+
```
|
|
2208
|
+
模板: -group_rank(ts_skewness(returns, {d}), {group})
|
|
2209
|
+
```
|
|
2210
|
+
| 占位符 | 可选值 | 说明 |
|
|
2211
|
+
|--------|--------|------|
|
|
2212
|
+
| `{d}` | `22`, `66`, `126` | 偏度计算窗口 |
|
|
2213
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2214
|
+
|
|
2215
|
+
**说明**: 负偏度股票往往表现更好
|
|
2216
|
+
|
|
2217
|
+
---
|
|
2218
|
+
|
|
2219
|
+
### TPL-1608: 熵信号模板
|
|
2220
|
+
```
|
|
2221
|
+
模板: ts_zscore({field}, {d1}) * ts_entropy({field}, {d2})
|
|
2222
|
+
```
|
|
2223
|
+
| 占位符 | 可选值 | 说明 |
|
|
2224
|
+
|--------|--------|------|
|
|
2225
|
+
| `{field}` | `returns`, 任意字段 | 信号字段 |
|
|
2226
|
+
| `{d1}` | `14`, `22` | zscore窗口 |
|
|
2227
|
+
| `{d2}` | `14`, `22` | 熵窗口 |
|
|
2228
|
+
|
|
2229
|
+
**说明**: 结合标准化和不确定性度量
|
|
2230
|
+
|
|
2231
|
+
---
|
|
2232
|
+
|
|
2233
|
+
### TPL-1609: 分析师动量短长差模板
|
|
2234
|
+
```
|
|
2235
|
+
模板: log(ts_mean(anl4_{data}_{stats}, {d_short})) - log(ts_mean(anl4_{data}_{stats}, {d_long}))
|
|
2236
|
+
```
|
|
2237
|
+
| 占位符 | 可选值 | 说明 |
|
|
2238
|
+
|--------|--------|------|
|
|
2239
|
+
| `{data}` | `eps`, `revenue`, `netprofit` | 分析师预测类型 |
|
|
2240
|
+
| `{stats}` | `mean`, `low`, `high` | 统计量类型 |
|
|
2241
|
+
| `{d_short}` | `20`, `44` | 短期窗口 |
|
|
2242
|
+
| `{d_long}` | `44`, `126` | 长期窗口 |
|
|
2243
|
+
|
|
2244
|
+
---
|
|
2245
|
+
|
|
2246
|
+
### TPL-1610: 目标换手率分组排名
|
|
2247
|
+
```
|
|
2248
|
+
模板: -ts_mean(ts_target_tvr_hump(group_rank({field}, country), lambda_min=0, lambda_max=1, target_tvr={target}), {d})
|
|
2249
|
+
```
|
|
2250
|
+
| 占位符 | 可选值 | 说明 |
|
|
2251
|
+
|--------|--------|------|
|
|
2252
|
+
| `{field}` | 任意字段 | 数据字段 |
|
|
2253
|
+
| `{target}` | `0.1`, `0.15` | 目标换手率 |
|
|
2254
|
+
| `{d}` | `5`, `10` | 平均窗口 |
|
|
2255
|
+
|
|
2256
|
+
---
|
|
2257
|
+
|
|
2258
|
+
### TPL-1611: 最大差/均值差比率
|
|
2259
|
+
```
|
|
2260
|
+
模板: ts_max_diff({field}, {d}) / ts_av_diff({field}, {d})
|
|
2261
|
+
```
|
|
2262
|
+
| 占位符 | 可选值 | 说明 |
|
|
2263
|
+
|--------|--------|------|
|
|
2264
|
+
| `{field}` | 任意字段 | 数据字段 |
|
|
2265
|
+
| `{d}` | `22`, `66` | 窗口 |
|
|
2266
|
+
|
|
2267
|
+
**说明**: 捕捉极端值相对于平均变化的幅度
|
|
2268
|
+
|
|
2269
|
+
---
|
|
2270
|
+
|
|
2271
|
+
### TPL-1612: 模型数据三层嵌套
|
|
2272
|
+
```
|
|
2273
|
+
模板:
|
|
2274
|
+
a = rank(group_rank(ts_rank(ts_backfill({model_field}, 5), 5), sta1_top3000c20));
|
|
2275
|
+
trade_when(rank(a) > 0.03, -zscore(ts_zscore({model_field}, 25)) * a, 0.25 - rank(a))
|
|
2276
|
+
```
|
|
2277
|
+
| 占位符 | 可选值 | 说明 |
|
|
2278
|
+
|--------|--------|------|
|
|
2279
|
+
| `{model_field}` | `mdl175_01icc`, `mdl175_01dtsv` | 模型字段 |
|
|
2280
|
+
|
|
2281
|
+
---
|
|
2282
|
+
|
|
2283
|
+
### TPL-1613: 量价触发条件交易
|
|
2284
|
+
```
|
|
2285
|
+
模板:
|
|
2286
|
+
triggerTradeexp = (ts_arg_max(volume, {d}) < 1) && (volume > ts_sum(volume, {d}) / {d});
|
|
2287
|
+
triggerExitexp = -1;
|
|
2288
|
+
alphaexp = -rank(ts_delta(close, 2));
|
|
2289
|
+
trade_when(triggerTradeexp, alphaexp, triggerExitexp)
|
|
2290
|
+
```
|
|
2291
|
+
| 占位符 | 可选值 | 说明 |
|
|
2292
|
+
|--------|--------|------|
|
|
2293
|
+
| `{d}` | `5`, `10` | 窗口 |
|
|
2294
|
+
|
|
2295
|
+
**说明**: 今日成交量为近期最大且高于均值时交易
|
|
2296
|
+
|
|
2297
|
+
---
|
|
2298
|
+
|
|
2299
|
+
### TPL-1614: 情绪成交量交易
|
|
2300
|
+
```
|
|
2301
|
+
模板:
|
|
2302
|
+
sent_vol = vec_sum(scl12_alltype_buzzvec);
|
|
2303
|
+
trade_when(rank(sent_vol) > 0.95, -zscore(scl12_buzz) * sent_vol, -1)
|
|
2304
|
+
```
|
|
2305
|
+
**说明**: 高情绪量时反向交易情绪
|
|
2306
|
+
|
|
2307
|
+
---
|
|
2308
|
+
|
|
2309
|
+
### TPL-1615: 双层中性化模板
|
|
2310
|
+
```
|
|
2311
|
+
模板:
|
|
2312
|
+
a = ts_zscore({field}, 252);
|
|
2313
|
+
a1 = group_neutralize(a, industry);
|
|
2314
|
+
a2 = group_neutralize(a1, bucket(rank(cap), range='0.1,1,0.1'))
|
|
2315
|
+
```
|
|
2316
|
+
| 占位符 | 可选值 | 说明 |
|
|
2317
|
+
|--------|--------|------|
|
|
2318
|
+
| `{field}` | 任意字段 | 数据字段 |
|
|
2319
|
+
|
|
2320
|
+
**说明**: 先行业后市值的双重中性化
|
|
2321
|
+
|
|
2322
|
+
---
|
|
2323
|
+
|
|
2324
|
+
### TPL-1616: 相关性计算公式
|
|
2325
|
+
```
|
|
2326
|
+
模板:
|
|
2327
|
+
a = {field1};
|
|
2328
|
+
b = {field2};
|
|
2329
|
+
p = {d};
|
|
2330
|
+
c = ts_mean(ts_av_diff(a, p) * ts_av_diff(b, p), p);
|
|
2331
|
+
c / ts_std_dev(a, p) / ts_std_dev(b, p) # 近似 ts_corr
|
|
2332
|
+
```
|
|
2333
|
+
| 占位符 | 可选值 | 说明 |
|
|
2334
|
+
|--------|--------|------|
|
|
2335
|
+
| `{field1}` | `close`, `returns` | 第一字段 |
|
|
2336
|
+
| `{field2}` | `volume`, `open` | 第二字段 |
|
|
2337
|
+
| `{d}` | `5`, `22` | 窗口 |
|
|
2338
|
+
|
|
2339
|
+
---
|
|
2340
|
+
|
|
2341
|
+
### TPL-1617: 回归中性化双因子
|
|
2342
|
+
```
|
|
2343
|
+
模板:
|
|
2344
|
+
afr = vec_avg({analyst_field});
|
|
2345
|
+
short_mom = ts_mean(returns - group_mean(returns, 1, market), {d_short});
|
|
2346
|
+
long_mom = ts_delay(ts_mean(returns - group_mean(returns, 1, market), {d_long}), {d_long});
|
|
2347
|
+
regression_neut(regression_neut(afr, short_mom), long_mom)
|
|
2348
|
+
```
|
|
2349
|
+
| 占位符 | 可选值 | 说明 |
|
|
2350
|
+
|--------|--------|------|
|
|
2351
|
+
| `{analyst_field}` | 分析师VECTOR字段 | 分析师数据 |
|
|
2352
|
+
| `{d_short}` | `5`, `10` | 短期动量窗口 |
|
|
2353
|
+
| `{d_long}` | `20`, `22` | 长期动量窗口 |
|
|
2354
|
+
|
|
2355
|
+
**说明**: 剥离短期和长期动量后的分析师因子
|
|
2356
|
+
|
|
2357
|
+
---
|
|
2358
|
+
|
|
2359
|
+
### TPL-1618: 回归斜率趋势检测
|
|
2360
|
+
```
|
|
2361
|
+
模板: ts_regression(ts_zscore({field}, {d}), ts_step(1), {d}, rettype=2)
|
|
2362
|
+
```
|
|
2363
|
+
| 占位符 | 可选值 | 说明 |
|
|
2364
|
+
|--------|--------|------|
|
|
2365
|
+
| `{field}` | 任意MATRIX字段 | 数据字段 |
|
|
2366
|
+
| `{d}` | `252`, `500` | 窗口 |
|
|
2367
|
+
|
|
2368
|
+
**说明**: rettype=2返回回归斜率,检测长期趋势
|
|
2369
|
+
|
|
2370
|
+
---
|
|
2371
|
+
|
|
2372
|
+
### TPL-1619: 三因子乘积组合
|
|
2373
|
+
```
|
|
2374
|
+
模板:
|
|
2375
|
+
my_group = market;
|
|
2376
|
+
rank(
|
|
2377
|
+
group_rank(ts_decay_linear(volume / ts_sum(volume, 252), 10), my_group) *
|
|
2378
|
+
group_rank(ts_rank(vec_avg({fundamental}), {d}), my_group) *
|
|
2379
|
+
group_rank(-ts_delta(close, 5), my_group)
|
|
2380
|
+
)
|
|
2381
|
+
```
|
|
2382
|
+
| 占位符 | 可选值 | 说明 |
|
|
2383
|
+
|--------|--------|------|
|
|
2384
|
+
| `{fundamental}` | 基本面VECTOR字段 | 基本面数据 |
|
|
2385
|
+
| `{d}` | `252`, `504` | 排名窗口 |
|
|
2386
|
+
|
|
2387
|
+
**说明**: 成交量趋势 × 基本面排名 × 价格反转
|
|
2388
|
+
|
|
2389
|
+
---
|
|
2390
|
+
|
|
2391
|
+
### TPL-1620: 波动率条件反转
|
|
2392
|
+
```
|
|
2393
|
+
模板:
|
|
2394
|
+
vol = ts_std_dev(returns, {d});
|
|
2395
|
+
vol_mean = group_mean(vol, 1, market);
|
|
2396
|
+
flip_ret = if_else(vol < vol_mean, -returns, returns);
|
|
2397
|
+
-ts_mean(flip_ret, {d})
|
|
2398
|
+
```
|
|
2399
|
+
| 占位符 | 可选值 | 说明 |
|
|
2400
|
+
|--------|--------|------|
|
|
2401
|
+
| `{d}` | `20`, `22` | 窗口 |
|
|
2402
|
+
|
|
2403
|
+
**说明**: 低波动做反转,高波动做动量
|
|
2404
|
+
|
|
2405
|
+
---
|
|
2406
|
+
|
|
2407
|
+
### TPL-1621: 恐惧指标复合
|
|
2408
|
+
```
|
|
2409
|
+
模板:
|
|
2410
|
+
fear = ts_mean(
|
|
2411
|
+
abs(returns - group_mean(returns, 1, market)) /
|
|
2412
|
+
(abs(returns) + abs(group_mean(returns, 1, market)) + 0.1),
|
|
2413
|
+
{d}
|
|
2414
|
+
);
|
|
2415
|
+
-group_neutralize(fear * {signal}, bucket(rank(cap), range='0.1,1,0.1'))
|
|
2416
|
+
```
|
|
2417
|
+
| 占位符 | 可选值 | 说明 |
|
|
2418
|
+
|--------|--------|------|
|
|
2419
|
+
| `{d}` | `20`, `22` | 窗口 |
|
|
2420
|
+
| `{signal}` | 主信号 | 待组合信号 |
|
|
2421
|
+
|
|
2422
|
+
---
|
|
2423
|
+
|
|
2424
|
+
### TPL-1622: 财务质量单因子
|
|
2425
|
+
```
|
|
2426
|
+
模板: group_neutralize(rank({fundamental_field}), bucket(rank(cap), range='0,1,0.1'))
|
|
2427
|
+
```
|
|
2428
|
+
| 占位符 | 可选值 | 说明 |
|
|
2429
|
+
|--------|--------|------|
|
|
2430
|
+
| `{fundamental_field}` | `roe`, `roa`, `net_income/assets` | 财务质量指标 |
|
|
2431
|
+
|
|
2432
|
+
---
|
|
2433
|
+
|
|
2434
|
+
### TPL-1623: 老虎哥回归模板
|
|
2435
|
+
```
|
|
2436
|
+
模板: group_rank(ts_regression(ts_zscore({field1}, {d}), ts_zscore(vec_sum({field2}), {d}), {d}), densify(sector))
|
|
2437
|
+
```
|
|
2438
|
+
| 占位符 | 可选值 | 说明 |
|
|
2439
|
+
|--------|--------|------|
|
|
2440
|
+
| `{field1}` | 任意MATRIX字段 | Y变量 |
|
|
2441
|
+
| `{field2}` | 任意VECTOR字段 | X变量 |
|
|
2442
|
+
| `{d}` | `252`, `504` | 回归窗口 |
|
|
2443
|
+
|
|
2444
|
+
---
|
|
2445
|
+
|
|
2446
|
+
### TPL-1624: 综合数据清洗模板
|
|
2447
|
+
```
|
|
2448
|
+
模板: ts_decay_linear(-densify(zscore(winsorize(ts_backfill({field}, 115), std=4))), 10)
|
|
2449
|
+
```
|
|
2450
|
+
| 占位符 | 可选值 | 说明 |
|
|
2451
|
+
|--------|--------|------|
|
|
2452
|
+
| `{field}` | 低频字段如 `anl4_adjusted_netincome_ft` | 需要处理的字段 |
|
|
2453
|
+
|
|
2454
|
+
---
|
|
2455
|
+
|
|
2456
|
+
### TPL-1625: 延迟最大值位置模板
|
|
2457
|
+
```
|
|
2458
|
+
模板: ts_max({field}, {d}) = ts_delay({field}, ts_arg_max({field}, {d})) # 等效公式
|
|
2459
|
+
```
|
|
2460
|
+
| 占位符 | 可选值 | 说明 |
|
|
2461
|
+
|--------|--------|------|
|
|
2462
|
+
| `{field}` | 任意字段 | 数据字段 |
|
|
2463
|
+
| `{d}` | `22`, `66` | 窗口 |
|
|
2464
|
+
|
|
2465
|
+
---
|
|
2466
|
+
|
|
2467
|
+
### TPL-1626: 数据探索通用模板
|
|
2468
|
+
```
|
|
2469
|
+
模板: zscore(ts_delta(rank(ts_zscore({field}, {d1})), {d2}))
|
|
2470
|
+
```
|
|
2471
|
+
| 占位符 | 可选值 | 说明 |
|
|
2472
|
+
|--------|--------|------|
|
|
2473
|
+
| `{field}` | 任意MATRIX字段 | 待探索数据字段 |
|
|
2474
|
+
| `{d1}` | `60`, `126`, `252` | zscore窗口 |
|
|
2475
|
+
| `{d2}` | `5`, `10`, `22` | delta窗口 |
|
|
2476
|
+
|
|
2477
|
+
**说明**: 顾问推荐的新数据探索模板,可替换op和时间参数
|
|
2478
|
+
|
|
2479
|
+
---
|
|
2480
|
+
|
|
2481
|
+
### TPL-1627: 自定义衰减权重模板
|
|
2482
|
+
```
|
|
2483
|
+
模板:
|
|
2484
|
+
weight = {d} + ts_step(0); # 线性递增权重
|
|
2485
|
+
ts_sum({data} * weight, {d}) / ts_sum(weight, {d}) # 加权平均
|
|
2486
|
+
|
|
2487
|
+
# 替代版 (ts_step递减)
|
|
2488
|
+
ts_sum({alpha} * ts_step(1), {d}) / ts_sum(ts_step(1), {d})
|
|
2489
|
+
```
|
|
2490
|
+
| 占位符 | 可选值 | 说明 |
|
|
2491
|
+
|--------|--------|------|
|
|
2492
|
+
| `{data}` | 任意字段 | 数据字段 |
|
|
2493
|
+
| `{alpha}` | 主信号 | 原始Alpha |
|
|
2494
|
+
| `{d}` | `10`, `22`, `66` | 衰减窗口 |
|
|
2495
|
+
|
|
2496
|
+
**说明**: 当没有ts_decay_linear权限时的替代方案
|
|
2497
|
+
|
|
2498
|
+
---
|
|
2499
|
+
|
|
2500
|
+
### TPL-1628: log_diff相对增长模板
|
|
2501
|
+
```
|
|
2502
|
+
模板: group_rank(log_diff({field}), {group})
|
|
2503
|
+
```
|
|
2504
|
+
| 占位符 | 可选值 | 说明 |
|
|
2505
|
+
|--------|--------|------|
|
|
2506
|
+
| `{field}` | 财务指标如 `sales`, `eps`, `assets` | 数据字段 |
|
|
2507
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2508
|
+
|
|
2509
|
+
**说明**: 检测相对增长率,对乘性变化更敏感
|
|
2510
|
+
|
|
2511
|
+
---
|
|
2512
|
+
|
|
2513
|
+
### TPL-1629: ts_product累积收益模板
|
|
2514
|
+
```
|
|
2515
|
+
模板: group_rank(ts_product(1 + {ret_field}, {d}), {group})
|
|
2516
|
+
```
|
|
2517
|
+
| 占位符 | 可选值 | 说明 |
|
|
2518
|
+
|--------|--------|------|
|
|
2519
|
+
| `{ret_field}` | `returns`, 收益率字段 | 收益字段 |
|
|
2520
|
+
| `{d}` | `22`, `66`, `126` | 窗口 |
|
|
2521
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2522
|
+
|
|
2523
|
+
**说明**: 计算累积收益排名
|
|
2524
|
+
|
|
2525
|
+
---
|
|
2526
|
+
|
|
2527
|
+
### TPL-1630: ts_percentage阈值模板
|
|
2528
|
+
```
|
|
2529
|
+
模板:
|
|
2530
|
+
high_threshold = ts_percentage({field}, {d}, percentage=0.5);
|
|
2531
|
+
low_threshold = ts_percentage({field}, {d}, percentage=0.5);
|
|
2532
|
+
{signal}
|
|
2533
|
+
```
|
|
2534
|
+
| 占位符 | 可选值 | 说明 |
|
|
2535
|
+
|--------|--------|------|
|
|
2536
|
+
| `{field}` | `close`, 价格字段 | 阈值计算字段 |
|
|
2537
|
+
| `{d}` | `22`, `66` | 窗口 |
|
|
2538
|
+
| `{signal}` | 主信号 | 条件信号 |
|
|
2539
|
+
|
|
2540
|
+
**说明**: 用于震荡带突破策略的阈值构建
|
|
2541
|
+
|
|
2542
|
+
---
|
|
2543
|
+
|
|
2544
|
+
### TPL-1631: 动量反转切换模板
|
|
2545
|
+
```
|
|
2546
|
+
模板:
|
|
2547
|
+
mom = ts_sum(returns, {d_long}) - ts_sum(returns, {d_short});
|
|
2548
|
+
reversal = -ts_delta(close, {d_short});
|
|
2549
|
+
if_else(ts_rank(ts_std_dev(returns, {d_short}), {d_long}) > 0.5, mom, reversal)
|
|
2550
|
+
```
|
|
2551
|
+
| 占位符 | 可选值 | 说明 |
|
|
2552
|
+
|--------|--------|------|
|
|
2553
|
+
| `{d_short}` | `5`, `10` | 短期窗口 |
|
|
2554
|
+
| `{d_long}` | `22`, `66` | 长期窗口 |
|
|
2555
|
+
|
|
2556
|
+
**说明**: 高波动环境用动量,低波动环境用反转
|
|
2557
|
+
|
|
2558
|
+
---
|
|
2559
|
+
|
|
2560
|
+
### TPL-1632: 市场收益率近似模板 (CHN)
|
|
2561
|
+
```
|
|
2562
|
+
模板:
|
|
2563
|
+
value = rank(cap) > 0.9 ? cap : 0;
|
|
2564
|
+
market_return = group_sum(returns * value, country) / group_sum(value, country);
|
|
2565
|
+
market_return
|
|
2566
|
+
```
|
|
2567
|
+
**说明**: 用市值加权近似沪深300指数收益率,设置neutralization=NONE, decay=0
|
|
2568
|
+
|
|
2569
|
+
---
|
|
2570
|
+
|
|
2571
|
+
### TPL-1633: Beta回归中性化模板
|
|
2572
|
+
```
|
|
2573
|
+
模板:
|
|
2574
|
+
market_return = group_mean(returns, 1, market);
|
|
2575
|
+
ts_regression({field}, market_return, {d}) # 返回残差(Y - E[Y])
|
|
2576
|
+
```
|
|
2577
|
+
| 占位符 | 可选值 | 说明 |
|
|
2578
|
+
|--------|--------|------|
|
|
2579
|
+
| `{field}` | 任意MATRIX字段 | 待中性化字段 |
|
|
2580
|
+
| `{d}` | `126`, `252` | 回归窗口 |
|
|
2581
|
+
|
|
2582
|
+
**说明**: 使用一元线性回归剥离市场因子
|
|
2583
|
+
|
|
2584
|
+
---
|
|
2585
|
+
|
|
2586
|
+
### TPL-1634: ts_moment高阶矩k值模板
|
|
2587
|
+
```
|
|
2588
|
+
模板: ts_moment({field}, {d}, k={k})
|
|
2589
|
+
|
|
2590
|
+
k=2: 方差 (等价于 ts_std_dev^2)
|
|
2591
|
+
k=3: 偏度 (等价于 ts_skewness)
|
|
2592
|
+
k=4: 峰度 (等价于 ts_kurtosis)
|
|
2593
|
+
```
|
|
2594
|
+
| 占位符 | 可选值 | 说明 |
|
|
2595
|
+
|--------|--------|------|
|
|
2596
|
+
| `{field}` | 任意MATRIX字段 | 数据字段 |
|
|
2597
|
+
| `{d}` | `22`, `66`, `126` | 窗口 |
|
|
2598
|
+
| `{k}` | `2`, `3`, `4` | 阶数 |
|
|
2599
|
+
|
|
2600
|
+
---
|
|
2601
|
+
|
|
2602
|
+
### TPL-1635: 龙头股因子增强模板
|
|
2603
|
+
```
|
|
2604
|
+
模板: sigmoid(rank(star_pm_global_rank))
|
|
2605
|
+
```
|
|
2606
|
+
**说明**: 对龙头股因子进行sigmoid增强
|
|
2607
|
+
|
|
2608
|
+
---
|
|
2609
|
+
|
|
2610
|
+
### TPL-1636: purify数据清洗嵌套模板
|
|
2611
|
+
```
|
|
2612
|
+
模板: group_rank(ts_rank(purify({field}), {d}), {group})
|
|
2613
|
+
```
|
|
2614
|
+
| 占位符 | 可选值 | 说明 |
|
|
2615
|
+
|--------|--------|------|
|
|
2616
|
+
| `{field}` | 任意字段 | 待清洗数据 |
|
|
2617
|
+
| `{d}` | `22`, `66` | 排名窗口 |
|
|
2618
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2619
|
+
|
|
2620
|
+
**说明**: purify自动化清洗异常值和噪声
|
|
2621
|
+
|
|
2622
|
+
---
|
|
2623
|
+
|
|
2624
|
+
### TPL-1637: 理想振幅因子模板
|
|
2625
|
+
```
|
|
2626
|
+
模板:
|
|
2627
|
+
amplitude = (high - low) / close;
|
|
2628
|
+
ideal_amp = ts_percentage(amplitude, {d}, percentage=0.5);
|
|
2629
|
+
group_rank(amplitude - ideal_amp, {group})
|
|
2630
|
+
```
|
|
2631
|
+
| 占位符 | 可选值 | 说明 |
|
|
2632
|
+
|--------|--------|------|
|
|
2633
|
+
| `{d}` | `22`, `66` | 百分位窗口 |
|
|
2634
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2635
|
+
|
|
2636
|
+
**说明**: 实际振幅偏离理想振幅的程度
|
|
2637
|
+
|
|
2638
|
+
---
|
|
2639
|
+
|
|
2640
|
+
### TPL-1638: 异同离差乖离率因子 (MACD风格)
|
|
2641
|
+
```
|
|
2642
|
+
模板:
|
|
2643
|
+
ema_short = ts_decay_exp_window({field}, {d_short}, 0.9);
|
|
2644
|
+
ema_long = ts_decay_exp_window({field}, {d_long}, 0.9);
|
|
2645
|
+
dif = ema_short - ema_long;
|
|
2646
|
+
ts_zscore(dif, {d_signal})
|
|
2647
|
+
```
|
|
2648
|
+
| 占位符 | 可选值 | 说明 |
|
|
2649
|
+
|--------|--------|------|
|
|
2650
|
+
| `{field}` | `close`, 价格字段 | 数据字段 |
|
|
2651
|
+
| `{d_short}` | `12`, `22` | 短期EMA窗口 |
|
|
2652
|
+
| `{d_long}` | `26`, `66` | 长期EMA窗口 |
|
|
2653
|
+
| `{d_signal}` | `9`, `22` | 信号线窗口 |
|
|
2654
|
+
|
|
2655
|
+
---
|
|
2656
|
+
|
|
2657
|
+
### TPL-1639: 收益率条件筛选反转
|
|
2658
|
+
```
|
|
2659
|
+
模板:
|
|
2660
|
+
high_ret = ts_rank(returns, {d1}) > 0.8;
|
|
2661
|
+
low_ret = ts_rank(returns, {d1}) < 0.2;
|
|
2662
|
+
if_else(high_ret, -returns, if_else(low_ret, returns, 0))
|
|
2663
|
+
```
|
|
2664
|
+
| 占位符 | 可选值 | 说明 |
|
|
2665
|
+
|--------|--------|------|
|
|
2666
|
+
| `{d1}` | `22`, `66` | 排名窗口 |
|
|
2667
|
+
|
|
2668
|
+
**说明**: 只对极端收益做反转
|
|
2669
|
+
|
|
2670
|
+
---
|
|
2671
|
+
|
|
2672
|
+
### TPL-1640: 三阶模板优化版
|
|
2673
|
+
```
|
|
2674
|
+
模板: <group_op/>(<ts_op1/>(<ts_op2/>(<field/>, <d1/>), <d2/>), <group/>)
|
|
2675
|
+
```
|
|
2676
|
+
| 占位符 | 可选值 | 说明 |
|
|
2677
|
+
|--------|--------|------|
|
|
2678
|
+
| `<group_op/>` | `group_rank`, `group_zscore` | 外层分组操作 |
|
|
2679
|
+
| `<ts_op1/>` | `ts_rank`, `ts_delta`, `ts_mean` | 中层时序操作 |
|
|
2680
|
+
| `<ts_op2/>` | `ts_zscore`, `ts_rank`, `ts_ir` | 内层时序操作 |
|
|
2681
|
+
| `<field/>` | 任意字段 | 数据字段 |
|
|
2682
|
+
| `<d1/>` | `60`, `126`, `252` | 内层窗口 |
|
|
2683
|
+
| `<d2/>` | `5`, `22`, `66` | 外层窗口 |
|
|
2684
|
+
| `<group/>` | `sector`, `industry` | 分组 |
|
|
2685
|
+
|
|
2686
|
+
**说明**: 经典三阶嵌套结构,可灵活替换各层操作符
|
|
2687
|
+
|
|
2688
|
+
---
|
|
2689
|
+
|
|
2690
|
+
### TPL-1641: ts_entropy信号检测模板
|
|
2691
|
+
```
|
|
2692
|
+
模板: ts_entropy({field}, {d})
|
|
2693
|
+
```
|
|
2694
|
+
| 占位符 | 可选值 | 说明 |
|
|
2695
|
+
|--------|--------|------|
|
|
2696
|
+
| `{field}` | `returns`, `volume`, 任意MATRIX字段 | 数据字段 |
|
|
2697
|
+
| `{d}` | `14`, `22`, `66` | 窗口 |
|
|
2698
|
+
|
|
2699
|
+
**说明**: 衡量时序数据的不确定性,高熵值表示更多随机性
|
|
2700
|
+
|
|
2701
|
+
---
|
|
2702
|
+
|
|
2703
|
+
### TPL-1642: 熵+ZScore组合模板
|
|
2704
|
+
```
|
|
2705
|
+
模板: ts_zscore({field}, {d}) * ts_entropy({field}, {d})
|
|
2706
|
+
```
|
|
2707
|
+
| 占位符 | 可选值 | 说明 |
|
|
2708
|
+
|--------|--------|------|
|
|
2709
|
+
| `{field}` | 任意MATRIX字段 | 数据字段 |
|
|
2710
|
+
| `{d}` | `14`, `22` | 窗口 |
|
|
2711
|
+
|
|
2712
|
+
**说明**: RSI超买超卖 + 熵不确定性组合,捕捉可能的修正
|
|
2713
|
+
|
|
2714
|
+
---
|
|
2715
|
+
|
|
2716
|
+
### TPL-1643: ts_ir+ts_entropy信号组合
|
|
2717
|
+
```
|
|
2718
|
+
模板:
|
|
2719
|
+
signal = ts_ir({field}, {d}) + ts_entropy({field}, {d});
|
|
2720
|
+
group_rank(signal, {group})
|
|
2721
|
+
```
|
|
2722
|
+
| 占位符 | 可选值 | 说明 |
|
|
2723
|
+
|--------|--------|------|
|
|
2724
|
+
| `{field}` | 任意MATRIX字段 | 数据字段 |
|
|
2725
|
+
| `{d}` | `22`, `66` | 窗口 |
|
|
2726
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2727
|
+
|
|
2728
|
+
**说明**: IR(信息比率)和Entropy组合捕捉信号稳定性和分布特征
|
|
2729
|
+
|
|
2730
|
+
---
|
|
2731
|
+
|
|
2732
|
+
### TPL-1644: trade_when市值过滤模板
|
|
2733
|
+
```
|
|
2734
|
+
模板: trade_when(rank(cap) > {threshold}, {alpha}, -1)
|
|
2735
|
+
```
|
|
2736
|
+
| 占位符 | 可选值 | 说明 |
|
|
2737
|
+
|--------|--------|------|
|
|
2738
|
+
| `{threshold}` | `0.3`, `0.5`, `0.7` | 市值排名阈值 |
|
|
2739
|
+
| `{alpha}` | 主信号 | 原始Alpha |
|
|
2740
|
+
|
|
2741
|
+
**说明**: 仅交易大市值股票,降低prod corr
|
|
2742
|
+
|
|
2743
|
+
---
|
|
2744
|
+
|
|
2745
|
+
### TPL-1645: trade_when盈利过滤模板
|
|
2746
|
+
```
|
|
2747
|
+
模板: trade_when(eps > {threshold} * est_eps, group_rank((eps - est_eps)/est_eps, industry), -1)
|
|
2748
|
+
```
|
|
2749
|
+
| 占位符 | 可选值 | 说明 |
|
|
2750
|
+
|--------|--------|------|
|
|
2751
|
+
| `{threshold}` | `1.0`, `1.1`, `1.2` | 盈利超预期比例 |
|
|
2752
|
+
|
|
2753
|
+
**说明**: 只交易盈利超预期的股票
|
|
2754
|
+
|
|
2755
|
+
---
|
|
2756
|
+
|
|
2757
|
+
### TPL-1646: trade_when量价触发模板
|
|
2758
|
+
```
|
|
2759
|
+
模板:
|
|
2760
|
+
triggerTrade = (ts_arg_max(volume, {d}) < 1) && (volume > ts_sum(volume, {d})/{d});
|
|
2761
|
+
trade_when(triggerTrade, {alpha}, -1)
|
|
2762
|
+
```
|
|
2763
|
+
| 占位符 | 可选值 | 说明 |
|
|
2764
|
+
|--------|--------|------|
|
|
2765
|
+
| `{d}` | `5`, `10` | 判断窗口 |
|
|
2766
|
+
| `{alpha}` | `-rank(ts_delta(close, 2))` | 主信号 |
|
|
2767
|
+
|
|
2768
|
+
**说明**: 量价突破触发条件交易
|
|
2769
|
+
|
|
2770
|
+
---
|
|
2771
|
+
|
|
2772
|
+
### TPL-1647: trade_when情绪量过滤模板
|
|
2773
|
+
```
|
|
2774
|
+
模板:
|
|
2775
|
+
sent_vol = vec_sum({sentiment_vec});
|
|
2776
|
+
trade_when(rank(sent_vol) > {threshold}, -zscore({sentiment_field}) * sent_vol, -1)
|
|
2777
|
+
```
|
|
2778
|
+
| 占位符 | 可选值 | 说明 |
|
|
2779
|
+
|--------|--------|------|
|
|
2780
|
+
| `{sentiment_vec}` | `scl12_alltype_buzzvec` 等VECTOR字段 | 情绪向量 |
|
|
2781
|
+
| `{sentiment_field}` | `scl12_buzz`, `scl12_sentiment` | 情绪字段 |
|
|
2782
|
+
| `{threshold}` | `0.9`, `0.95` | 情绪量阈值 |
|
|
2783
|
+
|
|
2784
|
+
**说明**: 高情绪量时反向交易情绪
|
|
2785
|
+
|
|
2786
|
+
---
|
|
2787
|
+
|
|
2788
|
+
### TPL-1648: bucket市值分组中性化模板
|
|
2789
|
+
```
|
|
2790
|
+
模板:
|
|
2791
|
+
my_group2 = bucket(rank(cap), range='{range}');
|
|
2792
|
+
group_neutralize({alpha}, my_group2)
|
|
2793
|
+
```
|
|
2794
|
+
| 占位符 | 可选值 | 说明 |
|
|
2795
|
+
|--------|--------|------|
|
|
2796
|
+
| `{range}` | `'0,1,0.1'`, `'0.1,1,0.1'` | 分桶范围 |
|
|
2797
|
+
| `{alpha}` | 主信号 | 原始Alpha |
|
|
2798
|
+
|
|
2799
|
+
**说明**: 按市值分桶进行中性化,去除规模效应
|
|
2800
|
+
|
|
2801
|
+
---
|
|
2802
|
+
|
|
2803
|
+
### TPL-1649: group_zscore时序组合模板
|
|
2804
|
+
```
|
|
2805
|
+
模板: group_zscore(ts_ir({field}, {d}), {group})
|
|
2806
|
+
```
|
|
2807
|
+
| 占位符 | 可选值 | 说明 |
|
|
2808
|
+
|--------|--------|------|
|
|
2809
|
+
| `{field}` | 任意MATRIX字段 | 数据字段 |
|
|
2810
|
+
| `{d}` | `22`, `66`, `126` | IR窗口 |
|
|
2811
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2812
|
+
|
|
2813
|
+
**说明**: 在分组内进行IR的Z-score标准化
|
|
2814
|
+
|
|
2815
|
+
---
|
|
2816
|
+
|
|
2817
|
+
### TPL-1650: scale+rank+ts组合模板
|
|
2818
|
+
```
|
|
2819
|
+
模板: scale(rank(ts_zscore({field}, {d})))
|
|
2820
|
+
```
|
|
2821
|
+
| 占位符 | 可选值 | 说明 |
|
|
2822
|
+
|--------|--------|------|
|
|
2823
|
+
| `{field}` | 任意MATRIX字段 | 数据字段 |
|
|
2824
|
+
| `{d}` | `66`, `126`, `252` | 窗口 |
|
|
2825
|
+
|
|
2826
|
+
**说明**: 多层标准化处理信号
|
|
2827
|
+
|
|
2828
|
+
---
|
|
2829
|
+
|
|
2830
|
+
### TPL-1651: Betting Against Beta模板
|
|
2831
|
+
```
|
|
2832
|
+
模板:
|
|
2833
|
+
market_return = group_mean(returns, 1, market);
|
|
2834
|
+
beta = ts_regression(returns, market_return, {d}, rettype=2);
|
|
2835
|
+
-group_rank(beta, industry)
|
|
2836
|
+
```
|
|
2837
|
+
| 占位符 | 可选值 | 说明 |
|
|
2838
|
+
|--------|--------|------|
|
|
2839
|
+
| `{d}` | `126`, `252` | 回归窗口 |
|
|
2840
|
+
|
|
2841
|
+
**说明**: 反Beta投注因子,做多低Beta股票
|
|
2842
|
+
|
|
2843
|
+
---
|
|
2844
|
+
|
|
2845
|
+
### TPL-1652: 跳跃因子模板
|
|
2846
|
+
```
|
|
2847
|
+
模板:
|
|
2848
|
+
jump_up = ts_count(returns > ts_std_dev(returns, {d}) * {threshold}, {d});
|
|
2849
|
+
jump_down = ts_count(returns < -ts_std_dev(returns, {d}) * {threshold}, {d});
|
|
2850
|
+
group_rank(jump_down - jump_up, {group})
|
|
2851
|
+
```
|
|
2852
|
+
| 占位符 | 可选值 | 说明 |
|
|
2853
|
+
|--------|--------|------|
|
|
2854
|
+
| `{d}` | `22`, `66` | 统计窗口 |
|
|
2855
|
+
| `{threshold}` | `2`, `2.5`, `3` | 标准差倍数 |
|
|
2856
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2857
|
+
|
|
2858
|
+
**说明**: 统计尾部跳跃事件的不对称性
|
|
2859
|
+
|
|
2860
|
+
---
|
|
2861
|
+
|
|
2862
|
+
### TPL-1653: 量小换手率模板
|
|
2863
|
+
```
|
|
2864
|
+
模板:
|
|
2865
|
+
turnover = volume / sharesout;
|
|
2866
|
+
low_turnover = ts_percentage(turnover, {d}, percentage=0.2);
|
|
2867
|
+
group_rank(turnover < low_turnover, {group})
|
|
2868
|
+
```
|
|
2869
|
+
| 占位符 | 可选值 | 说明 |
|
|
2870
|
+
|--------|--------|------|
|
|
2871
|
+
| `{d}` | `22`, `66` | 百分位窗口 |
|
|
2872
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2873
|
+
|
|
2874
|
+
**说明**: 识别低换手率状态
|
|
2875
|
+
|
|
2876
|
+
---
|
|
2877
|
+
|
|
2878
|
+
### TPL-1654: 隔夜收益因子模板
|
|
2879
|
+
```
|
|
2880
|
+
模板:
|
|
2881
|
+
overnight_ret = open / ts_delay(close, 1) - 1;
|
|
2882
|
+
group_rank(ts_mean(overnight_ret, {d}), {group})
|
|
2883
|
+
```
|
|
2884
|
+
| 占位符 | 可选值 | 说明 |
|
|
2885
|
+
|--------|--------|------|
|
|
2886
|
+
| `{d}` | `5`, `22`, `66` | 平均窗口 |
|
|
2887
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2888
|
+
|
|
2889
|
+
**说明**: 隔夜"拉锯战"因子
|
|
2890
|
+
|
|
2891
|
+
---
|
|
2892
|
+
|
|
2893
|
+
### TPL-1655: sta1分组三因子模板
|
|
2894
|
+
```
|
|
2895
|
+
模板:
|
|
2896
|
+
a = rank(group_rank(ts_rank(ts_backfill({field1}, {d1}), {d2}), sta1_top3000c20));
|
|
2897
|
+
trade_when(rank(a) > {threshold}, -zscore(ts_zscore({field2}, {d3})) * a, {exit_threshold} - rank(a))
|
|
2898
|
+
```
|
|
2899
|
+
| 占位符 | 可选值 | 说明 |
|
|
2900
|
+
|--------|--------|------|
|
|
2901
|
+
| `{field1}` | 任意字段 | 第一因子字段 |
|
|
2902
|
+
| `{field2}` | 模型字段如`mdl175_01dtsv` | 第二因子字段 |
|
|
2903
|
+
| `{d1}`, `{d2}`, `{d3}` | 各窗口参数 | 时间窗口 |
|
|
2904
|
+
| `{threshold}` | `0.03`, `0.1` | 入场阈值 |
|
|
2905
|
+
| `{exit_threshold}` | `0.25`, `0.5` | 出场阈值 |
|
|
2906
|
+
|
|
2907
|
+
**说明**: 使用sta1预定义分组的复合策略
|
|
2908
|
+
|
|
2909
|
+
---
|
|
2910
|
+
|
|
2911
|
+
### TPL-1656: macro泛化模板
|
|
2912
|
+
```
|
|
2913
|
+
模板: group_rank(ts_delta(ts_zscore({macro_field}, {d1}), {d2}), country)
|
|
2914
|
+
```
|
|
2915
|
+
| 占位符 | 可选值 | 说明 |
|
|
2916
|
+
|--------|--------|------|
|
|
2917
|
+
| `{macro_field}` | 宏观数据字段 | 宏观数据 |
|
|
2918
|
+
| `{d1}` | `126`, `252` | zscore窗口 |
|
|
2919
|
+
| `{d2}` | `5`, `22` | delta窗口 |
|
|
2920
|
+
|
|
2921
|
+
**说明**: 基于Labs分析macro的泛化模板
|
|
2922
|
+
|
|
2923
|
+
---
|
|
2924
|
+
|
|
2925
|
+
### TPL-1657: ASI broker模板
|
|
2926
|
+
```
|
|
2927
|
+
模板:
|
|
2928
|
+
signal = group_rank(ts_rank({broker_field}, {d}), market);
|
|
2929
|
+
trade_when(volume > adv20, signal, -1)
|
|
2930
|
+
```
|
|
2931
|
+
| 占位符 | 可选值 | 说明 |
|
|
2932
|
+
|--------|--------|------|
|
|
2933
|
+
| `{broker_field}` | broker数据字段 | 券商数据 |
|
|
2934
|
+
| `{d}` | `22`, `66` | 排名窗口 |
|
|
2935
|
+
|
|
2936
|
+
**说明**: ASI区域broker因子,需设置max_trade=ON
|
|
2937
|
+
|
|
2938
|
+
---
|
|
2939
|
+
|
|
2940
|
+
### TPL-1658: Earnings超预期模板
|
|
2941
|
+
```
|
|
2942
|
+
模板:
|
|
2943
|
+
surprise = (actual_eps - est_eps) / abs(est_eps);
|
|
2944
|
+
group_rank(ts_zscore(surprise, {d}), industry)
|
|
2945
|
+
```
|
|
2946
|
+
| 占位符 | 可选值 | 说明 |
|
|
2947
|
+
|--------|--------|------|
|
|
2948
|
+
| `{d}` | `66`, `126` | zscore窗口 |
|
|
2949
|
+
|
|
2950
|
+
**说明**: 盈利超预期因子
|
|
2951
|
+
|
|
2952
|
+
---
|
|
2953
|
+
|
|
2954
|
+
### TPL-1659: CCI技术指标模板
|
|
2955
|
+
```
|
|
2956
|
+
模板:
|
|
2957
|
+
tp = (high + low + close) / 3;
|
|
2958
|
+
cci = (tp - ts_mean(tp, {d})) / (0.015 * ts_mean(abs(tp - ts_mean(tp, {d})), {d}));
|
|
2959
|
+
group_rank(-cci, {group})
|
|
2960
|
+
```
|
|
2961
|
+
| 占位符 | 可选值 | 说明 |
|
|
2962
|
+
|--------|--------|------|
|
|
2963
|
+
| `{d}` | `14`, `20` | CCI窗口 |
|
|
2964
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2965
|
+
|
|
2966
|
+
**说明**: 商品通道指数(CCI)反转策略
|
|
2967
|
+
|
|
2968
|
+
---
|
|
2969
|
+
|
|
2970
|
+
### TPL-1660: 0.618黄金比例幂变换模板
|
|
2971
|
+
```
|
|
2972
|
+
模板:
|
|
2973
|
+
power_signal = signed_power({field}, 0.618);
|
|
2974
|
+
group_rank(ts_zscore(power_signal, {d}), {group})
|
|
2975
|
+
```
|
|
2976
|
+
| 占位符 | 可选值 | 说明 |
|
|
2977
|
+
|--------|--------|------|
|
|
2978
|
+
| `{field}` | 任意MATRIX字段 | 数据字段 |
|
|
2979
|
+
| `{d}` | `66`, `126` | zscore窗口 |
|
|
2980
|
+
| `{group}` | `sector`, `industry` | 分组 |
|
|
2981
|
+
|
|
2982
|
+
**说明**: 使用黄金比例0.618进行幂次变换
|
|
2983
|
+
|
|
2984
|
+
---
|
|
2985
|
+
|
|
2986
|
+
## 附录A:标准时间窗口
|
|
2987
|
+
|
|
2988
|
+
| 窗口代号 | 天数 | 含义 |
|
|
2989
|
+
|---------|------|------|
|
|
2990
|
+
| `d_week` | 5 | 一周 |
|
|
2991
|
+
| `d_month` | 22 | 一月 |
|
|
2992
|
+
| `d_quarter` | 66 | 一季度 |
|
|
2993
|
+
| `d_half` | 126 | 半年 |
|
|
2994
|
+
| `d_year` | 252 | 一年 |
|
|
2995
|
+
| `d_2year` | 504 | 两年 |
|
|
2996
|
+
|
|
2997
|
+
**使用规则**:
|
|
2998
|
+
- 反转因子: 短窗口 `{3, 5, 22}`
|
|
2999
|
+
- 动量因子: 中窗口 `{22, 66}`
|
|
3000
|
+
- 长期趋势: 长窗口 `{126, 252, 504}`
|
|
3001
|
+
- 回归/波动: 超长窗口 `{250, 500, 750}`
|
|
3002
|
+
|
|
3003
|
+
---
|
|
3004
|
+
|
|
3005
|
+
## 附录B:常用操作符分类
|
|
3006
|
+
|
|
3007
|
+
### 时序操作符 `<ts_op/>`
|
|
3008
|
+
| 操作符 | 用途 |
|
|
3009
|
+
|--------|------|
|
|
3010
|
+
| `ts_mean` | 移动平均 |
|
|
3011
|
+
| `ts_rank` | 时序排名 |
|
|
3012
|
+
| `ts_delta` | 差分 |
|
|
3013
|
+
| `ts_std_dev` | 移动标准差 |
|
|
3014
|
+
| `ts_ir` | 信息比率 |
|
|
3015
|
+
| `ts_zscore` | 时序Z-score |
|
|
3016
|
+
| `ts_corr` | 滚动相关性 |
|
|
3017
|
+
| `ts_regression` | 滚动回归 |
|
|
3018
|
+
| `ts_decay_linear` | 线性衰减 |
|
|
3019
|
+
| `ts_decay_exp_window` | 指数衰减 |
|
|
3020
|
+
| `ts_sum` | 滚动求和 |
|
|
3021
|
+
| `ts_backfill` | 数据回填 |
|
|
3022
|
+
| `ts_arg_min` | 最小值位置 |
|
|
3023
|
+
| `ts_arg_max` | 最大值位置 |
|
|
3024
|
+
| `ts_max` | 滚动最大值 |
|
|
3025
|
+
| `ts_min` | 滚动最小值 |
|
|
3026
|
+
| `ts_delay` | 延迟 |
|
|
3027
|
+
| `ts_moment` | k阶中心矩 |
|
|
3028
|
+
| `ts_co_skewness` | 协偏度 |
|
|
3029
|
+
| `ts_co_kurtosis` | 协峰度 |
|
|
3030
|
+
| `ts_partial_corr` | 偏相关 |
|
|
3031
|
+
| `ts_triple_corr` | 三元相关 |
|
|
3032
|
+
| `ts_theilsen` | Theil-Sen回归 |
|
|
3033
|
+
| `ts_poly_regression` | 多项式回归残差 |
|
|
3034
|
+
| `ts_vector_neut` | 向量中性化 |
|
|
3035
|
+
| `ts_weighted_decay` | 加权衰减 |
|
|
3036
|
+
| `ts_min_max_cps` | 最小最大压缩 |
|
|
3037
|
+
| `ts_max_diff` | 与最大值差 |
|
|
3038
|
+
| `ts_av_diff` | 与均值差 |
|
|
3039
|
+
| `ts_quantile` | 分位数 |
|
|
3040
|
+
| `ts_percentage` | 百分位 |
|
|
3041
|
+
| `ts_median` | 中位数 |
|
|
3042
|
+
| `ts_product` | 累积乘积 |
|
|
3043
|
+
| `ts_count_nans` | NaN计数 |
|
|
3044
|
+
| `ts_scale` | 时序缩放 |
|
|
3045
|
+
| `ts_target_tvr_hump` | 目标换手率Hump |
|
|
3046
|
+
| `ts_target_tvr_delta_limit` | Delta换手率限制 |
|
|
3047
|
+
|
|
3048
|
+
### 分组操作符 `<group_op/>`
|
|
3049
|
+
| 操作符 | 用途 |
|
|
3050
|
+
|--------|------|
|
|
3051
|
+
| `group_rank` | 分组排名 |
|
|
3052
|
+
| `group_neutralize` | 分组中性化 |
|
|
3053
|
+
| `group_zscore` | 分组Z-score |
|
|
3054
|
+
| `group_mean` | 分组均值 |
|
|
3055
|
+
| `group_sum` | 分组求和 |
|
|
3056
|
+
| `group_extra` | 分组提取/填补 |
|
|
3057
|
+
| `group_backfill` | 分组回填 |
|
|
3058
|
+
| `group_normalize` | 分组归一化 |
|
|
3059
|
+
| `group_vector_neut` | 分组向量中性化 |
|
|
3060
|
+
| `group_vector_proj` | 分组向量投影 |
|
|
3061
|
+
| `group_count` | 分组计数 |
|
|
3062
|
+
| `group_std_dev` | 分组标准差 |
|
|
3063
|
+
|
|
3064
|
+
### 向量操作符 `<vec_op/>`
|
|
3065
|
+
| 操作符 | 用途 |
|
|
3066
|
+
|--------|------|
|
|
3067
|
+
| `vec_avg` | 向量平均 |
|
|
3068
|
+
| `vec_sum` | 向量求和 |
|
|
3069
|
+
| `vec_max` | 向量最大 |
|
|
3070
|
+
| `vec_min` | 向量最小 |
|
|
3071
|
+
| `vec_stddev` | 向量标准差 |
|
|
3072
|
+
| `vec_count` | 向量计数 |
|
|
3073
|
+
| `vec_norm` | 向量归一化 |
|
|
3074
|
+
| `vec_zscore` | 向量Z-score |
|
|
3075
|
+
| `vec_range` | 向量范围 |
|
|
3076
|
+
|
|
3077
|
+
### 事件/时间操作符
|
|
3078
|
+
| 操作符 | 用途 |
|
|
3079
|
+
|--------|------|
|
|
3080
|
+
| `days_from_last_change` | 距离上次变化天数 |
|
|
3081
|
+
| `last_diff_value` | 最近不同值 |
|
|
3082
|
+
| `ts_step` | 时间步长 |
|
|
3083
|
+
|
|
3084
|
+
### 信号处理操作符
|
|
3085
|
+
| 操作符 | 用途 |
|
|
3086
|
+
|--------|------|
|
|
3087
|
+
| `signed_power` | 带符号幂变换 |
|
|
3088
|
+
| `clamp` | 边界限制 |
|
|
3089
|
+
| `left_tail` | 左尾截断 |
|
|
3090
|
+
| `right_tail` | 右尾截断 |
|
|
3091
|
+
| `fraction` | 分数映射 |
|
|
3092
|
+
| `nan_out` | NaN外推 |
|
|
3093
|
+
| `purify` | 数据清洗 |
|
|
3094
|
+
| `keep` | 条件保留 |
|
|
3095
|
+
| `scale_down` | 缩放降维 |
|
|
3096
|
+
| `hump` | Hump平滑 |
|
|
3097
|
+
| `hump_decay` | Hump衰减 |
|
|
3098
|
+
|
|
3099
|
+
### 其他常用操作符
|
|
3100
|
+
| 操作符 | 用途 |
|
|
3101
|
+
|--------|------|
|
|
3102
|
+
| `rank` | 截面排名 |
|
|
3103
|
+
| `zscore` | 截面Z-score |
|
|
3104
|
+
| `sigmoid` | Sigmoid归一化 |
|
|
3105
|
+
| `winsorize` | 极端值截断 |
|
|
3106
|
+
| `truncate` | 截断 |
|
|
3107
|
+
| `tail` | 尾部处理 |
|
|
3108
|
+
| `scale` | 缩放 |
|
|
3109
|
+
| `filter` | 过滤 |
|
|
3110
|
+
| `densify` | 稠密化 |
|
|
3111
|
+
| `bucket` | 分桶 |
|
|
3112
|
+
| `log` | 对数 |
|
|
3113
|
+
| `abs` | 绝对值 |
|
|
3114
|
+
| `if_else` | 条件判断 |
|
|
3115
|
+
| `trade_when` | 条件交易 |
|
|
3116
|
+
| `regression_neut` | 回归中性化 |
|
|
3117
|
+
| `regression_proj` | 回归投影 |
|
|
3118
|
+
| `is_nan` | NaN检测 |
|
|
3119
|
+
| `is_not_nan` | 非NaN检测 |
|
|
3120
|
+
| `inst_pnl` | 单标的PnL |
|
|
3121
|
+
| `convert` | 单位转换 |
|
|
3122
|
+
| `pasteurize` | 去无效值 |
|
|
3123
|
+
|
|
3124
|
+
---
|
|
3125
|
+
|
|
3126
|
+
## 附录C:数据字段分类
|
|
3127
|
+
|
|
3128
|
+
### 量价类 `<pv_field/>`
|
|
3129
|
+
```
|
|
3130
|
+
close, open, high, low, vwap
|
|
3131
|
+
returns, volume, adv20, sharesout, cap
|
|
3132
|
+
```
|
|
3133
|
+
|
|
3134
|
+
### 基本面类 `<fundamental_field/>`
|
|
3135
|
+
```
|
|
3136
|
+
assets, sales, ebitda, net_income, eps, operating_income
|
|
3137
|
+
goodwill, debt, cash, equity, gross_profit
|
|
3138
|
+
fnd6_*, fnd72_*, mdl175_*, mdl163_*
|
|
3139
|
+
debt_to_equity, roe, roa
|
|
3140
|
+
```
|
|
3141
|
+
|
|
3142
|
+
### 分析师类 `<analyst_field/>` (VECTOR)
|
|
3143
|
+
```
|
|
3144
|
+
anl4_eps_mean, anl4_eps_low, anl4_eps_high
|
|
3145
|
+
anl4_revenue_mean, anl4_fcf_value, anl4_netprofit_mean
|
|
3146
|
+
anl4_adjusted_netincome_ft, anl4_bvps_flag
|
|
3147
|
+
oth41_s_west_*, analyst_*
|
|
3148
|
+
```
|
|
3149
|
+
|
|
3150
|
+
### 情绪类 `<sentiment_field/>`
|
|
3151
|
+
```
|
|
3152
|
+
scl12_sentiment, scl12_buzz, scl12_alltype_buzzvec
|
|
3153
|
+
snt_value, snt_buzz, snt_buzz_ret, snt_buzz_bfl
|
|
3154
|
+
nws18_relevance, nws18_ber
|
|
3155
|
+
nws12_prez_result2, nws12_prez_short_interest
|
|
3156
|
+
mws85_sentiment, mws46_mcv
|
|
3157
|
+
```
|
|
3158
|
+
|
|
3159
|
+
### 期权类 `<option_field/>`
|
|
3160
|
+
```
|
|
3161
|
+
option8_*, option14_*
|
|
3162
|
+
implied_volatility_call_120, implied_volatility_call_270
|
|
3163
|
+
parkinson_volatility_120, parkinson_volatility_270
|
|
3164
|
+
pcr_vol_10, pcr_vol_30
|
|
3165
|
+
put_delta, call_delta, put_gamma, call_gamma
|
|
3166
|
+
put_theta, call_theta, put_vega, call_vega
|
|
3167
|
+
call_breakeven_10, put_breakeven_10
|
|
3168
|
+
```
|
|
3169
|
+
|
|
3170
|
+
### 模型类 `<model_field/>`
|
|
3171
|
+
```
|
|
3172
|
+
mdl175_01dtsv, mdl175_01icc
|
|
3173
|
+
mdl163_*, mdl*
|
|
3174
|
+
```
|
|
3175
|
+
|
|
3176
|
+
### 分组类 `<group/>`
|
|
3177
|
+
```
|
|
3178
|
+
industry, sector, subindustry
|
|
3179
|
+
market, country, exchange
|
|
3180
|
+
sta1_top3000c20, sta1_*
|
|
3181
|
+
pv13_*, pv27_*
|
|
3182
|
+
```
|