# 金融 / 组合评价 / 绩效归因 / 多期收益分解

## `pf_md_arithmetic(t_1, t_2, t_3, ret)`

声明：function

返回多期收益率分解--算术几何法 在收益率分解过程中会遇到多期收益率无法跨期相加的问题，现 提供算术分解法解决多期收益率的分解。 假设R(p,t)为组合收益率，R(b,t)为基准收益率，r(1,t)、r(2,t)、r(3,t)分别为分解项 在单期下存在： R(p,t)-R(b,t)=r(1,t)+r(2,t)+r(3,t) 经过调整后,单期存在： ln(1+R(p,t))-ln(1+R(b,t))=k1\*(r(1,t)+r(2,t)+r(3,t)) 其中: k1=(ln(1+R(p,t))-ln(1+R(b,t)))/(R(p,t)-R(b,t)) 多期累加： ln(1+Rp)-ln(1+Rb)=∑k1\*(r(1,t)+r(2,t)+r(3,t)) 经调整： Rp-Rb=k2\*∑k1\*(r(1,t)+r(2,t)+r(3,t)) 其中: k2=(Rp-Rb)/((ln(1+Rp)-ln(1+Rb))

<!-- tags: 金融 组合评价 绩效归因 多期收益分解 返回 获取 -->

| 参数  | 类型            | 说明                                                                                                                   |
| ----- | --------------- | ---------------------------------------------------------------------------------------------------------------------- |
| `t_1` | array           | Array,一维数组:组合收益率（%）                                                                                         |
| `t_2` | array of number | 一维数组:基准收益率（%）                                                                                               |
| `t_3` | array           | Array,一维或二位数组:收益分解项（%），要求每期 收益分解项+基准收益率=组合收益率，为一维数组时，等同于列名为0的二维数组 |
| `ret` | array           | Array,变参,返回经调整后的各分解项每期的收益                                                                            |

返回：table

### 示例

范例01：组合：各资产等权，每期再平衡；以债券收益为基准

```tsl
// 组合：各资产等权，每期再平衡；以债券收益为基准
data := TSUT_Data_ZSZF();
data[:, 1:] := data[:, 1:]/4;
data[:, '组合(%)'] := sum(data[:, 1:], 1);
FJ := select ["沪深300"], ["中证500"], ["中证1000"] from data end;
return pf_MD_Arithmetic(data[:, "组合(%)"], data[:, "国债指数"], FJ);
```

## `pf_md_returnAttribution(t, pf_field, attr_fields, attr_type, r_type)`

声明：function

返回多期收益分解，底层调用pf_MD_Contribution 或 pf_MD_Arithmetic 注：不考虑基准与超额，直接对组合收益与各分解项

<!-- tags: 金融 组合评价 绩效归因 多期收益分解 返回 获取 -->

| 参数          | 类型        | 说明                                                                                                 |
| ------------- | ----------- | ---------------------------------------------------------------------------------------------------- |
| `t`           | db_data     | 数据表类型,组合收益数据，单期分解，包含“截止日”、组合收益率及分解项字段；单期满足:组合收益率=∑分解项 |
| `pf_field`    | string      | 字符串,组合收益率字段，缺省为“组合收益率(%)”                                                         |
| `attr_fields` | array       | 一维字符串数组,分解项字段，缺省为除“截止日”、pfField的列名                                           |
| `attr_type`   | user_define | 用户自定义,多期收益分解方法，默认为0                                                                 |
| `r_type`      | user_define | 用户自定义,返回类型，默认为0                                                                         |

返回：array

### 示例

范例01：调用 pf_MD_ReturnAttribution

```tsl
data := TSUT_Data_ZSZF();
data[:, 1:] := data[:, 1:]/4;
data[:, '组合(%)'] := sum(data[:, 1:], 1);
pfField := '组合(%)';
AttrFields := array("沪深300", "中证500", "中证1000", "国债指数");
AttrType := 1;
rType := -1;
return pf_MD_ReturnAttribution(data, pfField, AttrFields, AttrType, rType);
```
