# 量化择时 / 宏观因子

## `ts_HGDataProcess`

声明：class

基于宏观因子的批量择时数据处理框架

<!-- tags: 因子分析 因子指标 宏观经济 宏观择时 批量计算 数据处理 -->

### `FactorArr`

声明：field

因子列表

可见性：`public`

类型：array

### `FBegT`

声明：field

开始日 2023/1/1

可见性：`public`

类型：date

### `FEndT`

声明：field

截止日 2024/12/31

可见性：`public`

类型：date

### `FCycle`

声明：field

数据频率 月线

可见性：`public`

类型：string

### `FFactorArr`

声明：field

因子设置 array()

可见性：`public`

类型：array

### `FUnifiedType`

声明：field

统一口径处理 0

可见性：`public`

类型：int

### `FSmoothType`

声明：field

平滑处理 0

可见性：`public`

类型：int

### `FFillMoveN`

声明：field

填充移动期数 4

可见性：`public`

类型：int

### `FtbMoveN`

声明：field

同比移动期数 12

可见性：`public`

类型：int

### `FInvalidDataPro`

声明：field

无效数据处理 1

可见性：`public`

类型：int

### `FSmoothMoveN`

声明：field

平滑移动期数 4

可见性：`public`

类型：int

### `FhpLambda`

声明：field

HP 滤波平滑参数 1

可见性：`public`

类型：real

### `FComFactorArr`

声明：field

合成因子库 array()

可见性：`public`

类型：array

### `FWeightType`

声明：field

加权方式 0

可见性：`public`

类型：int

### `GetRawData(beg_t, end_t)`

声明：function

获取区间原始数据

<!-- tags: 查询 原始宏观数据 时序数据 区间数据 -->

可见性：`public`

| 参数    | 类型 | 说明             |
| ------- | ---- | ---------------- |
| `beg_t` | date | Date，区间开始日 |
| `end_t` | date | Date，区间截止日 |

返回：array

### `GetPostProcessData(beg_t, end_t)`

声明：function

获取区间数据处理后的宏观数据

<!-- tags: 查询 宏观经济 -->

可见性：`public`

| 参数    | 类型 | 说明             |
| ------- | ---- | ---------------- |
| `beg_t` | date | Date，区间开始日 |
| `end_t` | date | Date，区间截止日 |

返回：array

### `GetMidProcessData(beg_t, end_t)`

声明：function

获取区间数据处理的中间过程

<!-- tags: 查询 中间过程 数据处理 时序数据 -->

可见性：`public`

| 参数    | 类型 | 说明             |
| ------- | ---- | ---------------- |
| `beg_t` | date | Date，区间开始日 |
| `end_t` | date | Date，区间截止日 |

返回：array

### `GetComData(beg_t, end_t)`

声明：function

获取区间合成大类宏观因子

<!-- tags: 查询 因子分析 因子指标 宏观经济 组件对象模型 自动化 -->

可见性：`public`

| 参数    | 类型 | 说明             |
| ------- | ---- | ---------------- |
| `beg_t` | date | Date，区间开始日 |
| `end_t` | date | Date，区间截止日 |

返回：array

### `GetComWeight()`

声明：function

合成因子权重，各大类因子在小类因子上的合成比例

<!-- tags: 查询 因子分析 因子指标 组合权重 资产配置 组件对象模型 自动化 -->

可见性：`public`

返回：array

### `Tsd_HG_GetDataByQK(beg_t, end_t, cycle, zb_arr)`

声明：function

提取区间宏观数据，仅支持以"HG000001" 代码取数的天软宏观数据

<!-- tags: 查询 宏观经济 -->

可见性：`public`

| 参数     | 类型   | 说明                                                                                                                                                                                                                                                                                             |
| -------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `beg_t`  | date   | Date，区间开始日                                                                                                                                                                                                                                                                                 |
| `end_t`  | date   | Date，区间截止日                                                                                                                                                                                                                                                                                 |
| `cycle`  | string | String，取数周期，目前仅支持月线与季线，根据 zbArr中的宏观因子数据频率来定                                                                                                                                                                                                                       |
| `zb_arr` | array  | Array，指标列表 字段 类型 含义 非空 备注 因子名称 String 宏观因子名称 是 因子 ID Int 宏观指标 ID 是 框架自动取天软宏观因子 滞后期 Int 宏观数据公布滞后性 否 默认取 0，不考虑滞后，主要用于事后分析 如： 因子名称 因子 ID 滞后期 工业增加值同比(%) 802004 1 PMI 823002 0 社零总额同比(%) 805028 1 |

返回：array

### `Tsd_HG_FillMiss(data, fill_type, move_n, date_field)`

声明：function

时序数据缺失值填充

<!-- tags: 填充 缺失值 时序数据 -->

可见性：`public`

| 参数         | 类型   | 说明                                                                                                                                                                                                                |
| ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `data`       | array  | Array，原始时序数据，支持一维数组与二维数据表类型 二维时，对每列进行填充，不含【DateField】列                                                                                                                       |
| `fill_type`  | int    | Int，缺失值填充方法，详情可参考缺失值处理 取值 含义 方法说明 0（默认） 不处理 1 移动平均 历史 N 期均值 2 移动中位数 历史 N 期中位数 3 一阶差分中位数 上期+历史 N 期一阶差分中位数 4 线性插值 前后两期有效值线性插值 |
| `move_n`     | int    | Int，移动期数，当 FillType取 1或 2时使用                                                                                                                                                                            |
| `date_field` | string | String，日期列名，默认"截止日"，当 Data为二维数据表时，对除【DateField】列 进行填充                                                                                                                                 |

返回：array

### `Tsd_HG_UnifiedCaliber(data, unified_type, tb_move_n, invalid_data_pro, date_field)`

声明：function

时序数据统一口径处理

<!-- tags: 统一口径 频率转换 时序数据 -->

可见性：`public`

| 参数               | 类型   | 说明                                                                                                                                                                                    |
| ------------------ | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `data`             | array  | Array，原始时序数据，支持一维数组与二维数据表类型                                                                                                                                       |
| `unified_type`     | int    | Int，统一口径处理方法 取值 含义 方法说明 0（默认） 不处理 1 同比增速(%) （本期-去年同期)/去年同期*100 2 同比差分 本期-去年同期 3 环比增速(%) （本期-上期)/上期*100 4 环比差分 本期-上期 |
| `tb_move_n`        | int    | Int，同比移动期数，默认取 12，当 UnifiedType取 1 或 2 时使用                                                                                                                            |
| `invalid_data_pro` | int    | Int，无效数据处理，当 UnifiedType取非 0值时，开头数据无效，默认会剔除 取值 含义 备注 0（默认） 剔除 影响输出数据长度 1 填第一个有效值 不影响数据长度 2 填 nil 不推荐使用                |
| `date_field`       | string | String，日期列名，默认"截止日"，当 Data为二维数据表时，对除【DateField】列 进行统一口径处理                                                                                             |

返回：array

### `Tsd_HG_Smooth(data, smooth_type, move_n, hp_lambda, date_field)`

声明：function

时序数据平滑处理

<!-- tags: 平滑 滤波 时序数据 -->

可见性：`public`

| 参数          | 类型   | 说明                                                                                                                               |
| ------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------- |
| `data`        | array  | Array，原始时序数据，支持一维数组与二维数据表类型 二维时，对每列进行平滑处理，不含【DateField】列                                  |
| `smooth_type` | int    | Int，平滑处理方法 取值 含义 方法说明 0（默认） 不处理 1 移动平均 历史 N 期均值，不足 N 期使用已有数据 2 HP 滤波 使用模型 filter_hp |
| `move_n`      | int    | Int，移动期数，默认取 6，当 SmoothType取 1 时使用                                                                                  |
| `hp_lambda`   | real   | Real，HP滤波平滑参数，默认取 1，当 SmoothType取 2时使用                                                                            |
| `date_field`  | string | String，日期列名，默认"截止日"，当 Data为二维数据表时，对除【DateField】列 进行平滑处理                                            |

返回：array

### `Tsd_ET_ShortTermHighLow_Avg(data, k, b, col_name)`

声明：function

短期高低点-均线

<!-- tags: 择时信号 短期高低点 均线 -->

可见性：`public`

| 参数       | 类型   | 说明                                                                |
| ---------- | ------ | ------------------------------------------------------------------- |
| `data`     | array  | Array，时序数据，包含"截止日"与"ColName"字段，按"截止日"升序排列    |
| `k`        | int    | Int，历史 K 期，默认取 12                                           |
| `b`        | real   | Real，b倍标准差，默认取 2                                           |
| `col_name` | string | String，字段名称，仅支持单个字段，默认取 Data除"截止日"的第一个字段 |

返回：array

### `Tsd_ET_ShortTermHighLow_Percent(data, k, percent, col_name)`

声明：function

短期高低点-分位点

<!-- tags: 择时信号 短期高低点 分位数 -->

可见性：`public`

| 参数       | 类型   | 说明                                                                           |
| ---------- | ------ | ------------------------------------------------------------------------------ |
| `data`     | array  | Array，时序数据，包含"截止日"与"ColName"字段，按"截止日"升序排列               |
| `k`        | int    | Int，历史 K 期，默认取 12                                                      |
| `percent`  | real   | Real，分位点，默认取 0.75，当 Percent>0.5表示上分位点、Percent<0.5表示下分位点 |
| `col_name` | string | String，字段名称，仅支持单个字段，默认取 Data除"截止日"的第一个字段            |

返回：array

### `Tsd_ET_ShortTermNewHighLow(data, k, col_name)`

声明：function

短期新高新低

<!-- tags: 择时信号 新高新低 突破 -->

可见性：`public`

| 参数       | 类型   | 说明                                                                |
| ---------- | ------ | ------------------------------------------------------------------- |
| `data`     | array  | Array，时序数据，包含"截止日"与"ColName"字段，按"截止日"升序排列    |
| `k`        | int    | Int，历史 K 期，默认取 12                                           |
| `col_name` | string | String，字段名称，仅支持单个字段，默认取 Data除"截止日"的第一个字段 |

返回：array

### `Tsd_ET_HistNewHighLow(data, col_name)`

声明：function

历史新高新低，以传入 Data作为全区间数据来衡量，Data第 1 期至第 T-1期作为第 T 期的历

<!-- tags: 创建 宏观择时 -->

可见性：`public`

| 参数       | 类型   | 说明                                                                |
| ---------- | ------ | ------------------------------------------------------------------- |
| `data`     | array  | Array，时序数据，包含"截止日"与"ColName"字段，按"截止日"升序排列    |
| `col_name` | string | String，字段名称，仅支持单个字段，默认取 Data除"截止日"的第一个字段 |

返回：array

### `Tsd_ET_ContinueUpDown(data, k, col_name)`

声明：function

连续上涨下跌

<!-- tags: 择时信号 连续涨跌 趋势 -->

可见性：`public`

| 参数       | 类型   | 说明                                                                |
| ---------- | ------ | ------------------------------------------------------------------- |
| `data`     | array  | Array，时序数据，包含"截止日"与"ColName"字段，按"截止日"升序排列    |
| `k`        | int    | Int，连续 K 期，默认取 3                                            |
| `col_name` | string | String，字段名称，仅支持单个字段，默认取 Data除"截止日"的第一个字段 |

返回：array

### `Tsd_ET_ReversalUpDown(data, k, col_name)`

声明：function

反转上涨下跌

<!-- tags: 择时信号 涨跌反转 反转 -->

可见性：`public`

| 参数       | 类型   | 说明                                                                |
| ---------- | ------ | ------------------------------------------------------------------- |
| `data`     | array  | Array，时序数据，包含"截止日"与"ColName"字段，按"截止日"升序排列    |
| `k`        | int    | Int，连续 K 期，默认取 3                                            |
| `col_name` | string | String，字段名称，仅支持单个字段，默认取 Data除"截止日"的第一个字段 |

返回：array

### `Tsd_ET_SignalGenerator(data, col_name, event_arr, drop_first_n)`

声明：function

多事件信号发生器，支持单个宏观指标。底层调用单事件各接口，将"信号标记"整合到一

<!-- tags: 执行 打标 事件驱动 事件研究 宏观经济 -->

可见性：`public`

| 参数           | 类型   | 说明                                                                                                                                                                                                                                                                                                                              |
| -------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `data`         | array  | Array，时序数据，包含"截止日"与"ColName"字段，按"截止日"升序排列                                                                                                                                                                                                                                                                  |
| `col_name`     | string | String，字段名称，仅支持单个字段，默认取 Data除"截止日"的第一个字段                                                                                                                                                                                                                                                               |
| `event_arr`    | array  | Array，事件列表， 二维数据表，可参考事件列表 字段 类型 含义 是否非空 说明 事件名称 String 信号标记，事件配对出现 是 不可重复 事件公式 String 事件构造公式，包括函数及参 数 是 eval 解析，参数 Data、ColName固定不变，其 他参数可调整 是否生效 Bool 事件是否生效 是 1 表示生效；0 表示不生效 公式说明 String 对事件公式进行说明 否 |
| `drop_first_n` | int    | Int，剔除历史前 N期数据，默认取 12，前期事件信号可能存在噪音，为了信号准 确性，Data尽可能取长一些                                                                                                                                                                                                                                 |

返回：array

### `Tsd_ET_SignalStat(signal_data, index_id, cycle, n)`

声明：function

事件信号统计评价，支持多事件、单资产

<!-- tags: 评估 汇总 事件驱动 事件研究 -->

可见性：`public`

| 参数          | 类型   | 说明                                                                                             |
| ------------- | ------ | ------------------------------------------------------------------------------------------------ |
| `signal_data` | array  | Array，多事件信号时序数据，包含"截止日"与各事件信号发生标记，可参考 TSD_ET_SignalGenerator的返回 |
| `index_id`    | string | String，标的指数代码，仅支持单个指数（单资产）                                                   |
| `cycle`       | string | String，指数未来收益周期，默认为月线，一般与 SignalData数据周期相同                              |
| `n`           | int    | Int，指数未来收益期数，默认为 1，如未来 1个月的收益                                              |
