+299
@@ -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
|
||||
```
|
||||
Reference in New Issue
Block a user