Files
playbook/skills/tsl-api-reference/references/codegen/dotnet/financial/financial_engineering-capm.md
T
2026-08-12 08:38:08 +08:00

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