📦 deps(tsl): sync tsl-playbook from a71480a4

Source-Commit: a71480a4ae
This commit is contained in:
ci[bot]
2026-08-12 08:38:08 +08:00
parent 683f83d17c
commit 670ba950a6
1496 changed files with 292667 additions and 220122 deletions
@@ -0,0 +1,299 @@
# 金融 / 金融工程 / CAPM
## `bkRiskAndReturn_pgm(bk_name, index_id, beg_t, end_t, show_type)`
声明:function
返回组合的贝塔值与风险(组合采取等资金加权)
<!-- tags: 金融 金融工程 CAPM 返回 获取 -->
| 参数 | 类型 | 说明 |
| ----------- | -------- | -------- |
| `bk_name` | string | 板块名称 |
| `index_id` | string | 指数代码 |
| `beg_t` | datetime | 开始日期 |
| `end_t` | datetime | 截止日期 |
| `show_type` | integer | 显示设置 |
返回:array
### 示例
范例01:返回深证A股板块及其下个股加权beta/alpha/平均收益率/标准差/残差标准差/相关系数
```tsl
bkname := "深证A股";
indexid := 'SH000001';
begt := inttodate(20120425);
endt := inttodate(20121017);
return BkRiskAndReturn_Pgm(bkname, indexid, begt, endt, 1);
// 输出:深证A股板块及其下个股加权beta/alpha/平均收益率/标准差/残差标准差/相关系数
```
## `bksRiskAndReturn_pgm(bk_names, index_id, beg_t, end_t)`
声明:function
返回不同组合的贝塔值与风险比较(组合采取等资金加权)
<!-- tags: 金融 金融工程 CAPM 返回 获取 -->
| 参数 | 类型 | 说明 |
| ---------- | -------- | -------- |
| `bk_names` | string | 板块列表 |
| `index_id` | string | 基准代码 |
| `beg_t` | datetime | 开始日期 |
| `end_t` | datetime | 截止日期 |
返回:array
### 示例
范例01:返回深证A股及上证A股的风险指标
```tsl
bkname := "深证A股;上证A股";
indexid := 'SH000001';
begt := inttodate(20120425);
endt := inttodate(20121017);
return BksRiskAndReturn_Pgm(bkname, indexid, begt, endt);
// 输出:深证A股及上证A股的风险指标
```
## `stocksAlpha(alpha_arr, w)`
声明:function
返回组合Alpha
<!-- tags: 金融 金融工程 CAPM 返回 获取 -->
| 参数 | 类型 | 说明 |
| ----------- | ----- | ------------ |
| `alpha_arr` | array | 一维数字数组 |
| `w` | array | 一维数字数组 |
返回:real
### 示例
范例01:调用函数
```tsl
o_v := BackupSystemParameters2();
// 假设组合为申万采掘,先计算其下个股的区间alpha
stock_arr := getBk('申万采掘');
index_id := 'SH000001';
beg_t := intToDate(20110101);
end_t := intToDate(20110630);
t := array();
n := 0;
for i := 0 to length(stock_arr)-1 do
begin
stockid := stock_arr[i];
setSysParam(pn_stock(), stockid);
if not isStockGoMarket(begt) then continue;
tmp := stockBetaAlpha2(index_id, beg_t, end_t);
t[n]['代码'] := stockid;
t[n]['名称'] := stockName(stockid);
t[n]['alpha'] := tmp['Alpha'];
n++;
end
// 按总股本加权,计算组合alpha
t2 := pf_percent(t[:, '代码'], end_t, 0);
t := select [1].['alpha'], [2].['比例(%)'] from t
left join t2 with([1].['代码'] on [2].['代码'])
end;
return stocksAlpha(t[:, 'alpha'], t[:, '比例(%)']);
// 输出:0.0374
```
## `stocksBeta(beta_arr, w)`
声明:function
返回组合Beta
<!-- tags: 金融 金融工程 CAPM 返回 获取 -->
| 参数 | 类型 | 说明 |
| ---------- | ----- | ------------ |
| `beta_arr` | array | 一维数字数组 |
| `w` | array | 一维数字数组 |
返回:real
### 示例
范例01:调用函数
```tsl
o_v := BackupSystemParameters2();
// 假设组合为申万采掘,先计算其下个股的区间beta
stock_arr := getBk('申万采掘');
index_id := 'SH000001';
beg_t := intToDate(20110101);
end_t := intToDate(20110630);
t := array();
n := 0;
for i := 0 to length(stock_arr)-1 do
begin
stockid := stock_arr[i];
setSysParam(pn_stock(), stockid);
if not isStockGoMarket(begt) then continue;
tmp := stockBetaAlpha2(index_id, beg_t, end_t);
t[n]['代码'] := stockid;
t[n]['名称'] := stockName(stockid);
t[n]['beta'] := tmp['Beta'];
n++;
end
// 按总股本加权,计算组合beta
t2 := pf_percent(t[:, '代码'], end_t, 0);
t := select [1].['beta'], [2].['比例(%)'] from t
left join t2 with([1].['代码'] on [2].['代码']) end;
return stocksBeta(t[:, 'beta'], t[:, '比例(%)']);
// 输出:1.0095
```
## `stocksBetaAlpha(stock_arr, index_id, begt, end_t, sim_rm)`
声明:function
获取一组股票的α系数,β系数,平均收益率,收益率标准差,残差标准差
<!-- tags: 金融 金融工程 CAPM 获取 查询 -->
| 参数 | 类型 | 说明 |
| ----------- | ---------- | -------------- |
| `stock_arr` | array | 一维字符串数组 |
| `index_id` | string | 字符串 |
| `begt` | tdate_time | 日期,开始时间 |
| `end_t` | tdate_time | 日期,截止时间 |
| `sim_rm` | real | 实数(无用) |
返回:array
### 示例
范例01:返回一组股票的α系数、β系数、平均收益率、收益率标准差、残差标准差及相关系数
```tsl
StockArr := array("SH600460", "SZ000920", "SH600718");
IndexId := 'SH000300';
begt := inttodate(20110101);
endt := inttodate(20110630);
// 剔除begt还没上市的股票
delete from stockArr where spec(IsStockGoMarket(begt), thisrow)=0;
return StocksBetaAlpha(StockArr, IndexId, begt, endt);
// 输出:一组股票的α系数、β系数、平均收益率、收益率标准差、残差标准差及相关系数
```
## `stocksExpectedReturn(ri_arr, w)`
声明:function
返回SIM法投资组合的期望率,计算公式:E(Rp)= W[nI]\*Ri[nI]
<!-- tags: 金融 金融工程 CAPM 返回 获取 SIM -->
| 参数 | 类型 | 说明 |
| -------- | ----- | ------------ |
| `ri_arr` | array | 一维数字数组 |
| `w` | array | 一维数字数组 |
返回:real
### 示例
范例01:调用函数
```tsl
o_v := BackupSystemParameters2();
// 假设组合为申万采掘,先计算其下个股的区间收益率
stock_arr := getBk('申万采掘');
beg_t := intToDate(20110101);
end_t := intToDate(20110630);
t := array();
n := 0;
for i := 0 to length(stock_arr)-1 do
begin
stockid := stock_arr[i];
setSysParam(pn_stock(), stockid);
if not isStockGoMarket(begt) then continue;
tmp := stockZf(beg_t, end_t);
t[n]['代码'] := stockid;
t[n]['名称'] := stockName(stockid);
t[n]['涨幅(%)'] := tmp;
n++;
end
// 按总股本加权,计算组合收益率
t2 := pf_percent(t[:, '代码'], end_t, 0);
t := select [1].['涨幅(%)'], [2].['比例(%)'] from t
left join t2 with([1].['代码'] on [2].['代码'])
end;
return stocksExpectedReturn(t[:, '涨幅(%)'], t[:, '比例(%)']);
// 输出:3.8980
```
## `stocksResidual(rd_ri, w)`
声明:function
返回组合残差标准差
<!-- tags: 金融 金融工程 CAPM 返回 获取 -->
| 参数 | 类型 | 说明 |
| ------- | ----- | ------------ |
| `rd_ri` | array | 一维数字数组 |
| `w` | array | 一维数字数组 |
返回:real
### 示例
范例01:调用函数
```tsl
o_v := BackupSystemParameters2();
// 假设组合为申万采掘,先计算其下个股的区间残差标准差
stock_arr := getBk('申万采掘');
index_id := 'SH000001';
beg_t := intToDate(20110101);
end_t := intToDate(20110630);
t := array();
n := 0;
for i := 0 to length(stock_arr)-1 do
begin
stockid := stock_arr[i];
setSysParam(pn_stock(), stockid);
if not isStockGoMarket(begt) then continue;
tmp := stockBetaAlpha2(index_id, beg_t, end_t);
t[n]['代码'] := stockid;
t[n]['名称'] := stockName(stockid);
t[n]['Residual'] := tmp['Residual'];
n++;
end
// 按总股本加权,计算组合残差标准差
t2 := pf_percent(t[:, '代码'], end_t, 0);
t := select [1].['Residual'], [2].['比例(%)'] from t
left join t2 with([1].['代码'] on [2].['代码'])
end;
return stocksAlpha(t[:, 'Residual'], t[:, '比例(%)']);
// 输出:1.230
```