7.6 KiB
7.6 KiB
金融 / 金融工程 / CAPM
bkRiskAndReturn_pgm(bk_name, index_id, beg_t, end_t, show_type)
声明:function
返回组合的贝塔值与风险(组合采取等资金加权)
| 参数 | 类型 | 说明 |
|---|---|---|
bk_name |
string | 板块名称 |
index_id |
string | 指数代码 |
beg_t |
datetime | 开始日期 |
end_t |
datetime | 截止日期 |
show_type |
integer | 显示设置 |
返回:array
示例
范例01:返回深证A股板块及其下个股加权beta/alpha/平均收益率/标准差/残差标准差/相关系数
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
返回不同组合的贝塔值与风险比较(组合采取等资金加权)
| 参数 | 类型 | 说明 |
|---|---|---|
bk_names |
string | 板块列表 |
index_id |
string | 基准代码 |
beg_t |
datetime | 开始日期 |
end_t |
datetime | 截止日期 |
返回:array
示例
范例01:返回深证A股及上证A股的风险指标
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
| 参数 | 类型 | 说明 |
|---|---|---|
alpha_arr |
array | 一维数字数组 |
w |
array | 一维数字数组 |
返回:real
示例
范例01:调用函数
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
| 参数 | 类型 | 说明 |
|---|---|---|
beta_arr |
array | 一维数字数组 |
w |
array | 一维数字数组 |
返回:real
示例
范例01:调用函数
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
获取一组股票的α系数,β系数,平均收益率,收益率标准差,残差标准差
| 参数 | 类型 | 说明 |
|---|---|---|
stock_arr |
array | 一维字符串数组 |
index_id |
string | 字符串 |
begt |
tdate_time | 日期,开始时间 |
end_t |
tdate_time | 日期,截止时间 |
sim_rm |
real | 实数(无用) |
返回:array
示例
范例01:返回一组股票的α系数、β系数、平均收益率、收益率标准差、残差标准差及相关系数
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]
| 参数 | 类型 | 说明 |
|---|---|---|
ri_arr |
array | 一维数字数组 |
w |
array | 一维数字数组 |
返回:real
示例
范例01:调用函数
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
返回组合残差标准差
| 参数 | 类型 | 说明 |
|---|---|---|
rd_ri |
array | 一维数字数组 |
w |
array | 一维数字数组 |
返回:real
示例
范例01:调用函数
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