143 KiB
金融工程
内容
- CAPM
- Dev
- 策略验证
- 量化选股
- 股权分置
- 价值评估
- 期权定价
- 套利
- 投资组合
- 新股定价
- 指数研究
- 基金研究
- 量化数据接口
- 量化套利
- 债券研究
- 绩效分析
- 风险模型
- 因子研究
- 量化择时
- 期权基本函数
CAPM
内容
- BkRiskAndReturn_Pgm
- BksRiskAndReturn_Pgm
- StocksAlpha
- StocksBeta
- StocksBetaAlpha
- StocksExpectedReturn
- StocksResidual
BkRiskAndReturn_Pgm
用途:CAPM相关函数。 参数:arg1,arg2,arg3,arg4,arg5(按示例顺序传入)。 返回:处理后的结果值。
范例
// 返回深证A股板块及其下个股加权beta/alpha/平均收益率/标准差/残差标准差/相关系数
bkname := "深证A股";
indexid := 'SH000001';
begt := inttodate(20120425);
endt := inttodate(20121017);
return BkRiskAndReturn_Pgm(bkname, indexid, begt, endt, 1);
BksRiskAndReturn_Pgm
用途:CAPM相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
// 返回深证A股及上证A股的风险指标
bkname := "深证A股;上证A股";
indexid := 'SH000001';
begt := inttodate(20120425);
endt := inttodate(20121017);
return BksRiskAndReturn_Pgm(bkname, indexid, begt, endt);
StocksAlpha
用途:CAPM相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
算法在已知个股Alpha情况下,对个股Alpha按照给定的比例加权计算组合Alpha范例
oV := BackupSystemParameters2();
// 假设组合为申万采掘,先计算其下个股的区间alpha
stockArr := getbk('申万采掘');
IndexId := 'SH000001';
BegT := inttodate(20110101);
EndT := inttodate(20110630);
t := array();
n := 0;
for i := 0 to length(stockArr) - 1 do
begin
stockid := stockArr[i];
setsysparam(pn_stock(), stockid);
if not IsStockGoMarket(begt) then continue;
tmp := StockBetaAlpha2(IndexId, BegT, EndT);
t[n]['代码'] := stockid;
t[n]['名称'] := stockname(stockid);
t[n]['alpha'] := tmp['Alpha'];
n++;
end;
// 按总股本加权,计算组合alpha
t2 := pf_percent(t[:, '代码'], EndT, 0);
t := select [1].['alpha'], [2].['比例(%)'] from t
left join t2 with([1].['代码'] on [2].['代码'])
end;
return stocksalpha(t[:, 'alpha'], t[:, '比例(%)']);
// 结果:0.0374
StocksBeta
用途:CAPM相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
算法在已知个股Beta的情况下,按给定的比例计算组合加权beta范例
oV := BackupSystemParameters2();
// 假设组合为申万采掘,先计算其下个股的区间beta
stockArr := getbk('申万采掘');
IndexId := 'SH000001';
BegT := inttodate(20110101);
EndT := inttodate(20110630);
t := array();
n := 0;
for i := 0 to length(stockArr) - 1 do
begin
stockid := stockArr[i];
setsysparam(pn_stock(), stockid);
if not IsStockGoMarket(begt) then continue;
tmp := StockBetaAlpha2(IndexId, BegT, EndT);
t[n]['代码'] := stockid;
t[n]['名称'] := stockname(stockid);
t[n]['beta'] := tmp['Beta'];
n++;
end;
// 按总股本加权,计算组合beta
t2 := pf_percent(t[:, '代码'], EndT, 0);
t := select [1].['beta'], [2].['比例(%)'] from t
left join t2 with([1].['代码'] on [2].['代码']) end;
return StocksBeta(t[:, 'beta'], t[:, '比例(%)']);
// 结果:1.0095
StocksBetaAlpha
用途:CAPM相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
// 返回一组股票的α系数、β系数、平均收益率、收益率标准差、残差标准差及相关系数
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
用途:CAPM相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
oV := BackupSystemParameters2();
// 假设组合为申万采掘,先计算其下个股的区间收益率
stockArr := getbk('申万采掘');
BegT := inttodate(20110101);
EndT := inttodate(20110630);
t := array();
n := 0;
for i := 0 to length(stockArr) - 1 do
begin
stockid := stockArr[i];
setsysparam(pn_stock(), stockid);
if not IsStockGoMarket(begt) then continue;
tmp := stockzf(BegT, EndT);
t[n]['代码'] := stockid;
t[n]['名称'] := stockname(stockid);
t[n]['涨幅(%)'] := tmp;
n++;
end;
// 按总股本加权,计算组合收益率
t2 := pf_percent(t[:, '代码'], EndT, 0);
t := select [1].['涨幅(%)'], [2].['比例(%)'] from t
left join t2 with([1].['代码'] on [2].['代码'])
end;
return StocksExpectedReturn(t[:, '涨幅(%)'], t[:, '比例(%)']);
// 结果:3.8980
StocksResidual
算法in (12Wi/100*rdRii)范例
oV := BackupSystemParameters2();
// 假设组合为申万采掘,先计算其下个股的区间残差标准差
stockArr := getbk('申万采掘');
IndexId := 'SH000001';
BegT := inttodate(20110101);
EndT := inttodate(20110630);
t := array();
n := 0;
for i := 0 to length(stockArr) - 1 do
begin
stockid := stockArr[i];
setsysparam(pn_stock(), stockid);
if not IsStockGoMarket(begt) then continue;
tmp := StockBetaAlpha2(IndexId, BegT, EndT);
t[n]['代码'] := stockid;
t[n]['名称'] := stockname(stockid);
t[n]['Residual'] := tmp['Residual'];
n++;
end;
// 按总股本加权,计算组合残差标准差
t2 := pf_percent(t[:, '代码'], EndT, 0);
t := select [1].['Residual'], [2].['比例(%)'] from t
left join t2 with([1].['代码'] on [2].['代码'])
end;
return stocksalpha(t[:, 'Residual'], t[:, '比例(%)']);
// 结果:1.230
Dev
内容
- BuySample
- SelectStockIndex
- SellSample
- TradingStrategyByBk
- TradingStrategyByBk2
- TradingByJSZB
- PortfolioCalcSys
- SetRetBuyPrice
- SetRetSellPrice
- SetStockBuyInfo
- StockBuyInfo
- SetStockBuyPrice
- StockBuyPrice
- SetStockBuyTime
- StockBuyTime
- StockHoldingCount
- SelectStockIndex_Call
- TrueTransactionYtm
- TSB_Data1
- TSB_Data2
- StockBuyDiff
- StockBuyTimeDiff
BuySample
用途:Dev相关函数。 参数:无。 返回:处理后的结果值。
范例
SetSysParam(PN_Stock(), 'SZ000002');
SetSysParam(pn_date(), inttodate(20121017));
return BuySample();
// 结果:0
SelectStockIndex
用途:Dev相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:整数。
范例
SetSysParam(PN_CYCLE(), cy_day());
return SelectStockIndex("SZ000541;SH600000", inttodate(20120620),
inttodate(20120930), @BsByMACD(12, 26, 9, 2), @SsByMACD(12, 26, 9, 2), "SH000001", 1); // 返回股票组合array(SZ000541;SH600000)在2012-06-20到2012-09-30在给出的买入条件和卖出条件下的等比投资的交易情况
SellSample
用途:Dev相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(PN_Stock(), 'SZ000002');
SetSysParam(pn_date(), inttodate(20121017));
return sellSample(); // 判断万科A在2012-10-17在卖出策略sellSample()下是否卖出, 结果:0
TradingStrategyByBk
用途:Dev相关函数。 参数:无。 返回:处理后的结果值。
范例
return TradingStrategyByBk("上证180;中证800",
inttodate(20120625),
inttodate(20121017),
"SH000001",
@BK_UpPercent3() >= 60,
@StockZf3(), 1, 10, 10, 1);
TradingStrategyByBk2
用途:Dev相关函数。 参数:无。 返回:处理后的结果值。
范例
return TradingStrategyByBk2(
"上证180",
inttodate(20120725),
inttodate(20121017),
"SH000001",
"BK_UpPercent3()+Ref(BK_UpPercent3(),1)+Ref(BK_UpPercent3(),2)",
3, 20);
TradingByJSZB
用途:Dev相关函数。 参数:无。 返回:处理后的结果值。
范例
return TradingByJSZB(
"SZ000002;SH600718;SH600000;SH600001",
inttodate(20100125),
inttodate(20101017),
@IsHighOfNDay(0),
@Close() < hhv(High(), 0) - 10 * ATR_v(45),
-10, 20, 20);
PortfolioCalcSys
用途:Dev相关函数。 参数:无。 返回:处理后的结果值。
范例
return PortfolioCalcSys(
"申万煤炭开采",
1000000,
inttodate(20120825),
inttodate(20121023),
0,
0.2,
0.05,
@(StockZF3() > 8),
@(StockZF3() < - 3),
100,
100,
@close(),
@close(),
@close(),
0.1,
0.1,
5,
100,
1,
10000,
100);
SetRetBuyPrice
用途:Dev相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
SetRetBuyPrice(20);
return GetSysParam('tmpBuyPrice'); // 结果:20
SetRetSellPrice
用途:Dev相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
SetRetSellPrice(50);
return GetSysParam('tmpSellPrice'); // 结果:50
SetStockBuyInfo
用途:Dev相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
SetStockBuyInfo("SZ000002", 'BuyPrice', 8);
return GetSysParam('BuyPrice');
StockBuyInfo
用途:Dev相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
SetStockBuyInfo("SZ000002", 'BuyPrice', 'kkkk');
SetSysParam(pn_stock(), 'SZ000002');
return StockBuyInfo("BuyPrice"); // 结果:’kkkk’
SetStockBuyPrice
范例
SetStockBuyTime('SZ000002', inttodate(20121023));
return GetSysParam("BuyTime");
StockBuyPrice
用途:Dev相关函数。 参数:无。 返回:处理后的结果值。
范例
SetStockBuyInfo('SZ000002', 'BuyPrice', 5);
SetSysParam(PN_Stock(), 'SZ000002');
return StockBuyPrice(); // 结果:5
SetStockBuyTime
用途:日期时间处理函数。 参数:arg1,arg2(按示例顺序传入)。 返回:日期或时间值。
范例
SetStockBuyTime('SZ000002', inttodate(20121023));
return GetSysParam("BuyTime");
StockBuyTime
用途:日期时间处理函数。 参数:无。 返回:日期或时间值。
范例
SetStockBuyInfo('SZ000002', 'BuyTime', inttodate(20121023));
SetSysParam(Pn_Stock(), 'SZ000002');
return StockBuyTime(); // 结果:41205
StockHoldingCount
用途:Dev相关函数。 参数:无。 返回:整数。
范例
SetStockBuyInfo('SZ000002', 'HoldingInfo', 9);
SetSysParam(Pn_Stock(), 'SZ000002');
return StockHoldingCount();
结果:9
SelectStockIndex_Call
用途:Dev相关函数。 参数:无。 返回:整数。
范例
StockArr := array("SH600460", "SZ000920", "SH600718");
BegT := inttodate(20120925);
EndT := inttodate(20121017);
return SelectStockIndex_Call(StockArr,
BegT, EndT, @BsByMACD(12, 26, 9, 2), true, @SsByMACD(12, 26, 9, 2), false);
TrueTransactionYtm
范例
return SelectStockIndex_Call(
array("SH600460", "SZ000920", "SH600718"),
inttodate(20120925),
inttodate(20121017),
@BsByMACD(12, 26, 9, 2),
true,
@SsByMACD(12, 26, 9, 2),
false);
TSB_Data1
用途:Dev相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
return TSB_Data1("上证180", inttodate(20120625), inttodate(20121017),
"BK_UpPercent3()+Ref(BK_UpPercent3(),1)+Ref(BK_UpPercent3(),2)",
3, 20);
TSB_Data2
用途:Dev相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
return TSB_Data2("上证180;中证500", inttodate(20120925),
inttodate(20121017));
StockBuyDiff
用途:Dev相关函数。 参数:无。 返回:处理后的结果值。
范例
SetStockBuyPrice('SZ000002', 8.04);
SetSysParam(PN_Stock(), 'SZ000002');
return StockBuyDiff(); // 结果:4.47761
StockBuyTimeDiff
用途:日期时间处理函数。 参数:无。 返回:日期或时间值。
范例
SetStockBuyTime('SZ000002', inttodate(20121018));
SetSysParam(pn_date(), inttodate(20121022));
SetSysParam(PN_Stock(), 'SZ000002');
return StockBuyTimeDiff(); // 结果:4
策略验证
内容
- TSBackTesting
- TSFL_TSBackTesting_File
- TSFL_TSBackTesting_PercentPortfolio
- TSFL_TSBackTesting_HighFrequencyTrading
- PortfolioBackTesting_IndexFund
- PortfolioBackTesting_Trading
- PortfolioBackTesting_Percent
- PortfolioBackTesting _Quantity
- TSFL_TSMutiFactor_01
- 比例类中间函数
- 交易类中间函数
- 数量类中间函数
- 指数基金中间函数
- 中间函数
TSBackTesting
范例参考2014-04-11-应用专题-回测框架01:策略回测框架TSBackTesting
TSFL_TSBackTesting_File
参考2014-04-11-应用专题-回测框架01:策略回测框架TSBackTesting
TSFL_TSBackTesting_PercentPortfolio
参考2014-04-11-应用专题-回测框架01:策略回测框架TSBackTesting
TSFL_TSBackTesting_HighFrequencyTrading
参考2014-04-11-应用专题-回测框架01:策略回测框架TSBackTesting
PortfolioBackTesting_IndexFund
范例参考2012-03-20-模型更新-指数基金模拟ToolBox使用说明
PortfolioBackTesting_Trading
范例
参考附件:深圳天软科技-模型更新-策略验证(交易类)ToolBox使用说明.pdf
PortfolioBackTesting_Percent
参考附件:深圳天软科技-模型更新-策略验证(配置类)ToolBox使用说明.pdf
PortfolioBackTesting _Quantity
范例
pfInfoData := array();
BegT := 39812;
EndT := 39820;
tAllJYMX := array(
("代码":"SH600036", "名称":"招商银行", "截止日":39818.00, "动作":0.00, "成交价":12.59, "成交量":794200.00, "费率(%)":0.1, "费用":0.00, "多空":1.00, "乘数":1.00, "保证金比例(%)":1.00),
("代码":"SH600068", "名称":"葛洲坝 ", "截止日":39818.00, "动作":0.00, "成交价":8.96, "成交量":1116000.00, "费率(%)":0.1, "费用":0.00, "多空":1.00, "乘数":1.00, "保证金比例(%)":1.00),
("代码":"SZ002232", "名称":"启明信息", "截止日":39818.00, "动作":0.00, "成交价":13.96, "成交量":716300.00, "费率(%)":0.1, "费用":0.00, "多空":1.00, "乘数":1.00, "保证金比例(%)":1.00),
("代码":"SH600036", "名称":"招商银行", "截止日":39819.00, "动作":0.00, "成交价":13.1, "成交量":458000.00, "费率(%)":0.1, "费用":0.00, "多空":1.00, "乘数":1.00, "保证金比例(%)":1.00),
("代码":"SH600036", "名称":"招商银行", "截止日":39819.00, "动作":0.00, "成交价":13.1, "成交量":305300.00, "费率(%)":0.1, "费用":0.00, "多空":1.00, "乘数":1.00, "保证金比例(%)":1.00),
("代码":"SH600036", "名称":"招商银行", "截止日":39819.00, "动作":0.00, "成交价":12.45, "成交量":240900.00, "费率(%)":0.1, "费用":0.00, "多空":1.00, "乘数":1.00, "保证金比例(%)":1.00));
tAllTA := array();
tAllZCPZ := array();
tAllHYPZ := array();
tAllCCMX := array();
tAllJZ := array();
tAllLS := array();
PortfolioBackTesting_Quantity(pfInfoData,
BegT,
EndT,
tAllJYMX,
tAllTA,
tAllZCPZ,
tAllHYPZ,
tAllCCMX,
tAllJZ,
tAllLS);
return array('行业配置':tAllHYPZ, 't日持股明细':tAllJYMX);
TSFL_TSMutiFactor_01
范例参见2014-06-08-深圳天软科技-应用专题-多因子框架01:天软多因子框架TSMultiFactor
比例类中间函数
####### 内容
- PortfolioBackTesting_Percent_Change
- PortfolioBackTesting_Percent_DataCheck
- PortfolioBackTesting_Percent_ToQuantity
- PortfolioBackTesting_Percent_SetPercentforNOTUserDefined
####### PortfolioBackTesting_Percent_Change
范例
a := array(2, 3, 4, 5, 8);
SetSysParam('TZZHRiMatrix', a);
w := array(1, 4, 6, 3, 7);
return GetTrueRp(w); // 结果:5.19048
####### PortfolioBackTesting_Percent_DataCheck
用途:策略验证相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
tPercent := array(('日期':41215, '截止日':nil, '方向':1, '乘数':nil, '保证金比例(%)':nil), ('日期':41213, '截止日':nil, '方向':nil, '乘数':nil, '保证金比例(%)':nil));
tTA := array();
PortfolioBackTesting_Percent_DataCheck(PFInfoData, tPercent, tTA);
return array('检查后的组合信息':PFInfoData, '检查后的申购,赎回':tPercent);
####### PortfolioBackTesting_Percent_ToQuantity
用途:策略验证相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
PFInfoData := array(array('组合名称':'我的组合', '成交量取整模式':0));
tpZCPZ := array(array('现金市值':1000000, '资产净值':1000000));
tPercent := array(
("日期":40543.00, "代码":"SH600000", "名称":"浦发银行", "方向":1.00, "调仓前比例(%)":0.00, "调仓后比例(%)":25.00, "调仓前数量":0.00, "成交价":12.39, "开仓费率(%)":0.165, "平仓费率(%)":0.065, "乘数":1.00, "保证金比例(%)":100.00),
("日期":40543.00, "代码":"SH600004", "名称":"白云机场", "方向":1.00, "调仓前比例(%)":0.00, "调仓后比例(%)":25.00, "调仓前数量":0.00, "成交价":8.82, "开仓费率(%)":0.165, "平仓费率(%)":0.065, "乘数":1.00, "保证金比例(%)":100.00),
("日期":40543.00, "代码":"SZ000001", "名称":"深发展A", "方向":1.00, "调仓前比例(%)":0.00, "调仓后比例(%)":25.00, "调仓前数量":0.00, "成交价":15.79, "开仓费率(%)":0.11975, "平仓费率(%)":0.01975, "乘数":1.00, "保证金比例(%)":100.00),
("日期":40543.00, "代码":"SZ000002", "名称":"万科A", "方向":1.00, "调仓前比例(%)":0.00, "调仓后比例(%)":25.00, "调仓前数量":0.00, "成交价":8.22, "开仓费率(%)":0.11975, "平仓费率(%)":0.01975, "乘数":1.00, "保证金比例(%)":100.00));
ro := array();
return PortfolioBackTesting_Percent_ToQuantity(PFInfoData, tpZCPZ, tPercent, rO);
####### PortfolioBackTesting_Percent_SetPercentforNOTUserDefined
用途:策略验证相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
tPercent := array(
("截止日":43550.0, "代码":"SZ000001"),
("截止日":43550.0, "代码":"SZ000002"),
("截止日":43550.0, "代码":"SH600000")
);
EndT := inttodate(20190326);
RateType := 0;
return PortfolioBackTesting_Percent_SetPercentforNOTUserDefined(tPercent, EndT, RateType);
交易类中间函数
####### 内容
- PortfolioBackTesting_TradingEvaluation
- TE_ExtremeSummary
- TE_MatchOCTradeData
####### PortfolioBackTesting_TradingEvaluation
用途:策略验证相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
PFInfoData := array();
t := array(
("代码":"CU1201", "名称":"CU1201", "乘数":5.00, "方向":1.00, "开仓日期":40724.00, "开仓价":69450.00, "开仓数量":1.00, "开仓费率(%)":0.0125, "平仓日期":40763.00, "平仓价":67740.00, "平仓数量":1.00, "平仓费率(%)":0.0125),
("代码":"CU1201", "名称":"CU1201", "乘数":5.00, "方向":0.00, "开仓日期":40787.00, "开仓价":68200.00, "开仓数量":1.00, "开仓费率(%)":0.0125, "平仓日期":40801.00, "平仓价":65020.00, "平仓数量":1.00, "平仓费率(%)":0.0125),
("代码":"RU1201", "名称":"RU1201", "乘数":5.00, "方向":1.00, "开仓日期":40695.00, "开仓价":33365.00, "开仓数量":2.00, "开仓费率(%)":0.02, "平仓日期":40725.00, "平仓价":32175.00, "平仓数量":2.00, "平仓费率(%)":0.02),
("代码":"RU1201", "名称":"RU1201", "乘数":5.00, "方向":1.00, "开仓日期":40805.00, "开仓价":31925.00, "开仓数量":3.00, "开仓费率(%)":0.02, "平仓日期":40847.00, "平仓价":27105.00, "平仓数量":3.00, "平仓费率(%)":0.02),
("代码":"SZ000002", "名称":"万科A", "乘数":1.00, "方向":1.00, "开仓日期":40556.00, "开仓价":9.01, "开仓数量":1100.00, "开仓费率(%)":0.01, "平仓日期":40569.00, "平仓价":8.5, "平仓数量":1100.00, "平仓费率(%)":0.01),
("代码":"SZ000002", "名称":"万科A", "乘数":1.00, "方向":1.00, "开仓日期":40596.00, "开仓价":8.17, "开仓数量":1200.00, "开仓费率(%)":0.01, "平仓日期":40604.00, "平仓价":8.19, "平仓数量":1200.00, "平仓费率(%)":0.01),
("代码":"SZ000002", "名称":"万科A", "乘数":1.00, "方向":1.00, "开仓日期":40616.00, "开仓价":8.28, "开仓数量":1200.00, "开仓费率(%)":0.01, "平仓日期":40627.00, "平仓价":8.67, "平仓数量":1200.00, "平仓费率(%)":0.01),
("代码":"SZ000002", "名称":"万科A", "乘数":1.00, "方向":1.00, "开仓日期":40630.00, "开仓价":8.82, "开仓数量":1100.00, "开仓费率(%)":0.01, "平仓日期":40660.00, "平仓价":8.45, "平仓数量":1100.00, "平仓费率(%)":0.01),
("代码":"SZ000002", "名称":"万科A", "乘数":1.00, "方向":1.00, "开仓日期":40714.00, "开仓价":8.16, "开仓数量":1200.00, "开仓费率(%)":0.01, "平仓日期":40746.00, "平仓价":8.41, "平仓数量":1200.00, "平仓费率(%)":0.01),
("代码":"SZ000002", "名称":"万科A", "乘数":1.00, "方向":1.00, "开仓日期":40770.00, "开仓价":8.44, "开仓数量":1100.00, "开仓费率(%)":0.01, "平仓日期":40781.00, "平仓价":8.38, "平仓数量":1100.00, "平仓费率(%)":0.01));
return PortfolioBackTesting_TradingEvaluation(PfInfoData, t);
####### TE_ExtremeSummary
####### TE_MatchOCTradeData
数量类中间函数
####### 内容
- PortfolioBackTesting_Quantity_CompositeDetail
- PortfolioBackTesting_Quantity_DataCheck
- PortfolioBackTesting_Quantity_InvestmentRatio
- PortfolioBackTesting_Quantity_FA_EndT
- PortfolioBackTesting_Quantity_IndustryComposite
- PortfolioBackTesting_Quantity_NetAsset
- PortfolioBackTesting_Quantity_InvalidData
- PortfolioBackTesting_Quantity_TransactionLog
- PortfolioBackTesting_Quantity_TradeDetails
- PortfolioBackTesting_Quantity_TradeOfMoneyMarketFund
- PortfolioBackTesting_Quantity_CashAllocation
- PortfolioBackTesting_Quantity_SellByCommonCondition
- PortfolioBackTesting_Quantity_TradeOfRightsIssue
- PortfolioBackTesting_Quantity_TradeOfDividendandSplit
- PortfolioBackTesting_Quantity_VolAfterDividendandSplit
- PortfolioBackTesting_Quantity_TradeOfDelist
- PortfolioBackTesting_Quantity_VolAfterSplit
- 中间函数
- PortfolioBackTesting_Quantity_GetClose
####### PortfolioBackTesting_Quantity_CompositeDetail
用途:策略验证相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:整数。
范例
endt := IntToDate(20120711);
tpGP := array(
("截止日":39818.00, "代码":"SZ002232", "数量":716300.00, "市值":9999548.00, "总成本":9999548.00, "成本价":13.96, "浮动盈亏":0.00, "浮盈率(%)":0.00, "收盘":13.96, "方向":1.00, "乘数":1.00, "保证金比例(%)":100.00, "红利比":0.00, "实得比":0.00, "送股比":0.00, "分红金额":0.00, "今数量":716300.00, "今总成本":9999548.00, "今成本价":13.96),
("截止日":39818.00, "代码":"SH600068", "数量":1116000.00, "市值":9999360.00, "总成本":9999360.00, "成本价":8.96, "浮动盈亏":0.00, "浮盈率(%)":0.00, "收盘":8.96, "方向":1.00, "乘数":1.00, "保证金比例(%)":100.00, "红利比":0.00, "实得比":0.00, "送股比":0.00, "分红金额":0.00, "今数量":1116000.00, "今总成本":9999360.00, "今成本价":8.96),
("截止日":39818.00, "代码":"SH600036", "数量":794200.00, "市值":9998978.00, "总成本":9998978.00, "成本价":12.59, "浮动盈亏":0.00, "浮盈率(%)":0.00, "收盘":12.59, "方向":1.00, "乘数":1.00, "保证金比例(%)":100.00, "红利比":0.00, "实得比":0.00, "送股比":0.00, "分红金额":0.00, "今数量":794200.00, "今总成本":9998978.00, "今成本价":12.59));
tLS := array(
("代码":"SH600036", "名称":"招商银行", "截止日":39819.00, "动作":0.00, "成交价":13.1, "成交量":305300.00, "费率(%)":0.1, "乘数":1.00, "保证金比例(%)":100.00, "方向":1.00, "成交金额(税前)":3999430.00, "费用":3999.43, "买入金额":3999430.00, "卖出金额":0.00, "上一笔数量":794200.00, "上一笔总成本":9998978.00, "上一笔成本价":12.59, "数量":1099500.00, "总成本":13998408.00, "成本价":12.73, "备注":""),
("代码":"SH600036", "名称":"招商银行", "截止日":39819.00, "动作":0.00, "成交价":12.45, "成交量":240900.00, "费率(%)":0.1, "乘数":1.00, "保证金比例(%)":100.00, "方向":1.00, "成交金额(税前)":2999205.00, "费用":2999.2, "买入金额":2999205.00, "卖出金额":0.00, "上一笔数量":1099500.00, "上一笔总成本":13998408.00, "上一笔成本价":12.73, "数量":1340400.00, "总成本":16997613.00, "成本价":12.68, "备注":""),
("代码":"SH600036", "名称":"招商银行", "截止日":39819.00, "动作":0.00, "成交价":13.1, "成交量":458000.00, "费率(%)":0.1, "乘数":1.00, "保证金比例(%)":100.00, "方向":1.00, "成交金额(税前)":5999800.00, "费用":5999.8, "买入金额":5999800.00, "卖出金额":0.00, "上一笔数量":1340400.00, "上一笔总成本":16997613.00, "上一笔成本价":12.68, "数量":1798400.00, "总成本":22997413.00, "成本价":12.79, "备注":""),
("代码":"SZ000002", "名称":"万科A", "截止日":39819.00, "动作":0.00, "成交价":7.00, "成交量":428500.00, "费率(%)":0.1, "乘数":1.00, "保证金比例(%)":100.00, "方向":1.00, "成交金额(税前)":2999500.00, "费用":2999.5, "买入金额":2999500.00, "卖出金额":0.00, "上一笔数量":0.00, "上一笔总成本":0.00, "上一笔成本价":0.00, "数量":428500.00, "总成本":2999500.00, "成本价":7.00, "备注":""),
("代码":"SZ000002", "名称":"万科A", "截止日":39819.00, "动作":0.00, "成交价":6.9, "成交量":289800.00, "费率(%)":0.1, "乘数":1.00, "保证金比例(%)":100.00, "方向":1.00, "成交金额(税前)":1999620.00, "费用":1999.62, "买入金额":1999620.00, "卖出金额":0.00, "上一笔数量":428500.00, "上一笔总成本":2999500.00, "上一笔成本价":7.00, "数量":718300.00, "总成本":4999120.00, "成本价":6.96, "备注":""));
return PortfolioBackTesting_Quantity_CompositeDetail(EndT, tpGP, tLS);
####### PortfolioBackTesting_Quantity_DataCheck
用途:策略验证相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
tPercent := array(('日期':41215, '截止日':nil, '方向':1, '乘数':nil, '保证金比例(%)':nil), ('日期':41213, '截止日':nil, '方向':nil, '乘数':nil, '保证金比例(%)':nil));
tTA := array();
PortfolioBackTesting_Quantity_DataCheck(PFInfoData, tPercent, tTA);
return array('检查后的组合信息':PFInfoData, '检查后的申购,赎回':tPercent);
####### PortfolioBackTesting_Quantity_InvestmentRatio
用途:策略验证相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6(按示例顺序传入)。 返回:处理后的结果值。
范例
endt := inttodate(20090105);
tZCPZ := array(
("截止日":41540.00, "资产净值":2000000.00, "保证金占用":0.00, "可用资金":2000000.00));
tLS := array(
("截止日":41541.00, "代码":"SH600036", "方向":1.00, "动作编号":0.00, "成交量":5000.00, "成交价":10.98, "乘数":1.00, "保证金比例(%)":100.00, "费率(%)":0.1, "费用":54.9, "成交金额":54900.00, "买入金额":54900.00, "卖出金额":0.00, "上一笔数量":0.00, "上一笔总成本":0.00, "上一笔成本价":0.00, "数量":5000.00, "总成本":54900.00, "成本价":10.98),
("截止日":41541.00, "代码":"SH600036", "方向":1.00, "动作编号":0.00, "成交量":6000.00, "成交价":10.89, "乘数":1.00, "保证金比例(%)":100.00, "费率(%)":0.1, "费用":65.34, "成交金额":65340.00, "买入金额":65340.00, "卖出金额":0.00, "上一笔数量":5000.00, "上一笔总成本":54900.00, "上一笔成本价":10.98, "数量":11000.00, "总成本":120240.00, "成本价":10.93),
("截止日":41541.00, "代码":"IF1312", "方向":1.00, "动作编号":0.00, "成交量":4.00, "成交价":2461.2, "乘数":300.00, "保证金比例(%)":15.00, "费率(%)":0.00, "费用":73.84, "成交金额":2953440.00, "买入金额":2953440.00, "卖出金额":0.00, "上一笔数量":1.00, "上一笔总成本":743340.00, "上一笔成本价":2477.8, "数量":5.00, "总成本":3696780.00, "成本价":2464.52));
tGP := array(
("截止日":41541.00, "代码":"SH600036", "证券类别":2.00, "方向":1.00, "乘数":1.00, "保证金比例(%)":100.00, "数量":18000.00, "总成本":196540.00, "成本价":10.92, "收盘价":10.88, "市值":195840.00, "保证金占用":195840.00, "买入金额":196540.00, "卖出金额":0.00, "买持仓量":18000.00, "卖持仓量":0.00, "浮动盈亏":-700.00, "浮盈率(%)":-0.36, "分红金额":0.00, "市值变动":195840.00, "当日盈亏":-700.00, "冻结资金":0.00),
("截止日":41541.00, "代码":"IF1312", "证券类别":27.00, "方向":1.00, "乘数":300.00, "保证金比例(%)":15.00, "数量":5.00, "总成本":3696780.00, "成本价":2464.52, "收盘价":2458.6, "市值":3687900.15, "保证金占用":553185.02, "买入金额":3696780.00, "卖出金额":0.00, "买持仓量":5.00, "卖持仓量":0.00, "浮动盈亏":-8879.85, "浮盈率(%)":-0.24, "分红金额":0.00, "市值变动":3687900.15, "当日盈亏":-8879.85, "冻结资金":544305.17));
tta := array(
("截止日":41542.00, "业务类型":2.00, "成交金额":0.00));
vzcjz := array();
return PortfolioBackTesting_Quantity_InvestmentRatio(EndT, tZCPZ, tLS, tGP, tta, vZCJZ);
####### PortfolioBackTesting_Quantity_FA_EndT
用途:策略验证相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12(按示例顺序传入)。 返回:处理后的结果值。
范例
pfInfoData := array(
("初始资金":10000000.00, "分红再投资":0.00, "自动参与配股":1.00, "费用类别":1.00, "货币基金自动分红再投资":1.00, "自动调整昨日持仓":1.00));
endt := inttodate(20121231);
tm := 2000000;
tpzcpz := array(
("截止日":41541.00, "资产净值":60000.00, "保证金占用":0.00, "可用资金":60000.00));
tpgp := array();
tjy := array(
("代码":"IF01", "方向":1.00, "动作编号":0.00, "成交量":1.00, "成交价":2305.4, "乘数":300.00, "保证金比例(%)":12.00, "费率(%)":0.0025),
("代码":"IF01", "方向":1.00, "动作编号":0.00, "成交量":3.00, "成交价":2309.8, "乘数":300.00, "保证金比例(%)":12.00, "费率(%)":0.0025));
tta := array();
tzcpz := array();
tHYPZ := array();
tgp := array();
tjz := array();
tls := array();
return PortfolioBackTesting_Quantity_FA_EndT(pfInfoData, EndT, TM, tpZCPZ, tpGP, tJY, tTA, tZCPZ, tHYPZ, tGP, tJZ, tLS);
结果:1
####### PortfolioBackTesting_Quantity_IndustryComposite
用途:策略验证相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:整数。
范例
tGP := array(
("组合编号":59.00, "截止日":39816.00, "代码":"SH600001", "名称":"平安银行", "昨持仓":0.00, "数量":150000.00, "板块名称":"金融", "市值":472000.00, "占净值比例(%)":10.00, "证券类别":2),
("组合编号":59.00, "截止日":39816.00, "代码":"SH600000", "名称":"浦发银行", "昨持仓":0.00, "数量":200000.00, "板块名称":"金融", "市值":456000.00, "占净值比例(%)":20.00, "证券类别":2),
("组合编号":59.00, "截止日":39817.00, "代码":"SZ000002", "名称":"万科A", "昨持仓":0.00, "数量":100000.00, "板块名称":"金属、非金属", "市值":478000.00, "占净值比例(%)":40.00, "证券类别":1),
("组合编号":59.00, "截止日":39818.00, "代码":"SH600595", "名称":"中孚实业", "昨持仓":0.00, "数量":100000.00, "板块名称":"金属、非金属", "市值":596000.00, "占净值比例(%)":30.00, "证券类别":1));
endt := 39818;
return PortfolioBackTesting_Quantity_IndustryComposite(EndT, tGP);
####### PortfolioBackTesting_Quantity_NetAsset
用途:策略验证相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
return PortfolioBackTesting_Quantity_NetAsset(39818, 12, 36, 10);
####### PortfolioBackTesting_Quantity_InvalidData
用途:策略验证相关函数。 参数:无。 返回:处理后的结果值。
范例
endt := 39818;
tAllZCPZ := array(
("组合编号":59.00, "截止日":39818, "股票市值":0.00, "股票占资产净值比例(%)":0.00, "现金市值":100000000.00, "现金占资产净值比例(%)":100.00, "资产净值":100000000.00), ("组合编号":59.00, "截止日":39817, "股票市值":0.00, "股票占资产净值比例(%)":0.00, "现金市值":100000000.00, "现金占资产净值比例(%)":100.00, "资产净值":100000000.00), ("组合编号":59.00, "截止日":39818, "股票市值":0.00, "股票占资产净值比例(%)":0.00, "现金市值":100000000.00, "现金占资产净值比例(%)":100.00, "资产净值":100000000.00)); // 资产配置数据
tAllHYPZ := array(); // 行业配置数据
tAllCCMX := array(); // 持股明细数据
tAllJZ := array(); // 净值数据
tAllLS := array();
PortfolioBackTesting_Quantity_InvalidData(EndT,
tAllZCPZ,
tAllHYPZ,
tAllCCMX,
tAllJZ,
tAllLS);
return tAllZCPZ;
####### PortfolioBackTesting_Quantity_TransactionLog
用途:策略验证相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
endt := 38734;
tpGP := array(
("组合编号":151.00, "截止日":38733.00, "代码":"OF020001", "名称":"", "数量":10000.00, "市值":10810.00, "占净值比例(%)":0.0108, "板块名称":"开放式基金", "占流通股比例(%)":0.0014, "总成本":10452.96, "成本价":1.0453, "浮动盈亏":357.04, "浮盈率(%)":3.4153, "排名":1.00),
("组合编号":0.00, "截止日":0.00, "代码":"OF510180", "名称":"", "数量":10000.00, "市值":0.00, "占净值比例(%)":0.00, "板块名称":"", "占流通股比例(%)":0.00, "总成本":0.00, "成本价":0.00, "浮动盈亏":0.00, "浮盈率(%)":0.00, "排名":0.00),
("组合编号":0.00, "截止日":0.00, "代码":"OF510170", "名称":"", "数量":10000.00, "市值":0.00, "占净值比例(%)":0.00, "板块名称":"", "占流通股比例(%)":0.00, "总成本":0.00, "成本价":0.00, "浮动盈亏":0.00, "浮盈率(%)":0.00, "排名":0.00));
tJY := array(
("组合编号":59, "代码":"OF020001", "本次持有数量":100, "截止日":38734.00, "成交量":-70000.00, "成交价":13.8876, "成交金额":972132.00, "总成本":1000, "乘数":1, "动作":1, "成交时间":40369.9642),
("组合编号":59, "代码":"SH600595", "本次持有数量":150, "截止日":38734.00, "成交量":2000000.00, "成交价":13.8876, "成交金额":-27775200.00, "总成本":1200, "乘数":1, "动作":0, "成交时间":40369.9646),
("组合编号":59, "代码":"SZ000002", "本次持有数量":200, "截止日":38734.00, "成交量":400000.00, "成交价":9.582, "成交金额":-3832800.00, "总成本":2000, "乘数":1, "动作":0, "成交时间":40370.0404));
return PortfolioBackTesting_Quantity_TransactionLog(EndT, tpGP, tJY, bFHZTZ);
####### PortfolioBackTesting_Quantity_TradeDetails
用途:策略验证相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
pfInfoData := array((
"费用类别":1,
"最低费用类别":0,
"开仓最低费用":5,
"平仓最低费用":5,
));
Endt := IntToDate(20120711);
tpGP := array(
("截止日":39818.00, "代码":"SZ002232", "数量":716300.00, "市值":9999548.00, "总成本":9999548.00, "成本价":13.96, "浮动盈亏":0.00, "浮盈率(%)":0.00, "收盘":13.96, "方向":1.00, "乘数":1.00, "保证金比例(%)":100.00, "红利比":0.00, "实得比":0.00, "送股比":0.00, "分红金额":0.00, "今数量":716300.00, "今总成本":9999548.00, "今成本价":13.96),
("截止日":39818.00, "代码":"SH600068", "数量":1116000.00, "市值":9999360.00, "总成本":9999360.00, "成本价":8.96, "浮动盈亏":0.00, "浮盈率(%)":0.00, "收盘":8.96, "方向":1.00, "乘数":1.00, "保证金比例(%)":100.00, "红利比":0.00, "实得比":0.00, "送股比":0.00, "分红金额":0.00, "今数量":1116000.00, "今总成本":9999360.00, "今成本价":8.96),
("截止日":39818.00, "代码":"SH600036", "数量":794200.00, "市值":9998978.00, "总成本":9998978.00, "成本价":12.59, "浮动盈亏":0.00, "浮盈率(%)":0.00, "收盘":12.59, "方向":1.00, "乘数":1.00, "保证金比例(%)":100.00, "红利比":0.00, "实得比":0.00, "送股比":0.00, "分红金额":0.00, "今数量":794200.00, "今总成本":9998978.00, "今成本价":12.59)
);
tJY := array(
("代码":"SH600036", "名称":"招商银行", "截止日":39819.00, "方向":1, "动作":0.00, "成交价":13.1, "成交量":305300.00, "费率(%)":0.1, "乘数":1.00, "保证金比例(%)":100.00, "备注":""),
("代码":"SH600036", "名称":"招商银行", "截止日":39819.00, "方向":1, "动作":0.00, "成交价":12.45, "成交量":240900.00, "费率(%)":0.1, "乘数":1.00, "保证金比例(%)":100.00, "备注":""),
("代码":"SH600036", "名称":"招商银行", "截止日":39819.00, "方向":1, "动作":0.00, "成交价":13.1, "成交量":458000.00, "费率(%)":0.1, "乘数":1.00, "保证金比例(%)":100.00, "备注":""),
("代码":"SZ000002", "名称":"万科A", "截止日":39819.00, "方向":1, "动作":0.00, "成交价":7.00, "成交量":428500.00, "费率(%)":0.1, "乘数":1.00, "保证金比例(%)":100.00, "备注":""),
("代码":"SZ000002", "名称":"万科A", "截止日":39819.00, "方向":1, "动作":0.00, "成交价":6.9, "成交量":289800.00, "费率(%)":0.1, "乘数":1.00, "保证金比例(%)":100.00, "备注":"")
);
return PortfolioBackTesting_Quantity_TradeDetails(pfInfoData, EndT, tpGP, tJY);
结果
####### PortfolioBackTesting_Quantity_TradeOfMoneyMarketFund
用途:策略验证相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
pfInfoData := array((
"货币基金自动分红再投资":1,
));
endt := inttodate(20190327);
tpGP := array(
("组ID":"", "截止日":43550.0, "代码":"OF519800", "名称":"华夏保证金理财A", "方向":1, "数量":10000000.0, "收盘":0.01, "市值":100000.0, "总成本":100000.0, "成本价":0.01, "浮动盈亏":0.0, "浮盈率(%)":0.0, "证券类别":17, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "保证金占用":100000.0, "市值变动":100000.0, "当日盈亏(净额)":0.0, "费用":100.0, "当日盈亏":-100.0, "占净值比例(%)":0.0100200410841725),
("组ID":"", "截止日":43550.0, "代码":"SH511700", "名称":"场内货币", "方向":1, "数量":10000000.0, "收盘":99.999, "市值":999990000.0, "总成本":999990000.0, "成本价":99.999, "浮动盈亏":0.0, "浮盈率(%)":0.0, "证券类别":6, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "保证金占用":999990000.0, "市值变动":999990000.0, "当日盈亏(净额)":0.0, "费用":999990.0, "当日盈亏":-999990.0, "占净值比例(%)":100.199408837616)
);
tpJYMXarr := array(
("组ID":"", "截止日":43550.0, "代码":"OF519800", "方向":1, "成交量":10000000.0, "名称":"华夏保证金理财A", "动作":0, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "到期日":0, "应计利息":0, "费率(%)":0.1, "备注":"", "证券类别":17, "成交价":0.01, "是否达到约束":1, "利率(%)":0, "成交金额(税前)":100000.0, "成交金额":100100.0, "费用":100.0),
("组ID":"", "截止日":43550.0, "代码":"SH511700", "方向":1, "成交量":10000000.0, "名称":"场内货币", "动作":0, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "到期日":0, "应计利息":0, "费率(%)":0.1, "备注":"", "证券类别":6, "成交价":99.999, "是否达到约束":1, "利率(%)":0, "成交金额(税前)":999990000.0, "成交金额":1000989990.0, "费用":999990.0)
);
return PortfolioBackTesting_Quantity_TradeOfMoneyMarketFund(pfInfoData, EndT, tpGP, tpJYMXarr);
####### PortfolioBackTesting_Quantity_CashAllocation
用途:策略验证相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8(按示例顺序传入)。 返回:处理后的结果值。
范例
PortfolioBackTesting_Quantity_CashAllocation(10000000, 5, 4, 10, 5, 0, Number, CashPerUnit);
return array('实际可买入个数':Number, '分配资金':CashPerUnit);
####### PortfolioBackTesting_Quantity_SellByCommonCondition
用途:策略验证相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7(按示例顺序传入)。 返回:处理后的结果值。
范例
EndT := inttodate(20070301);
tpGP := array(
("截止日":39141.0, "方向":0.0, "代码":"SZ000562", "今数量":679.0, "今成本价":14.72, "今总成本":10000.0, "乘数":1.0, "保证金比例(%)":100.0, "买入日期":39121.0),
("截止日":39141.0, "方向":0.0, "代码":"SZ000001", "今数量":493.0, "今成本价":18.27, "今总成本":9000.0, "乘数":1.0, "保证金比例(%)":100.0, "买入日期":39111.0)
);
return PortfolioBackTesting_Quantity_SellByCommonCondition(EndT, tpGP, 15, 20, -20, 0, 0.01);
####### PortfolioBackTesting_Quantity_TradeOfRightsIssue
用途:进行字符串提取或替换处理。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
pfInfoData := array(('自动参与配股':1));
EndT := 20230810t;
tpGP := array(
("组ID":"", "截止日":45147.0, "代码":"SH600081", "名称":"东风科技", "方向":1, "数量":10000000.0, "收盘":11.64, "市值":116400000.0, "总成本":124800000.0, "成本价":12.48, "浮动盈亏":-8400000.0, "浮盈率(%)":-6.73076923076923, "证券类别":2, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "保证金占用":116400000.0, "占净值比例(%)":11.7400818497528)
);
return PortfolioBackTesting_Quantity_TradeOfRightsIssue(pfInfoData, EndT, tpGP);
####### PortfolioBackTesting_Quantity_TradeOfDividendandSplit
用途:策略验证相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
pfInfoData := array(('分红再投资':0));
EndT := inttodate(20230810);
tpGP := array(
("组ID":"", "截止日":45147.0, "代码":"SH600369", "名称":"西南证券", "方向":1, "数量":10000000.0, "收盘":4.7, "市值":47000000.0, "总成本":37100000.0, "成本价":3.71, "浮动盈亏":9900000.0, "浮盈率(%)":26.6846361185984, "证券类别":2, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "保证金占用":47000000.0, "占净值比例(%)":4.65409710565662)
);
return PortfolioBackTesting_Quantity_TradeOfDividendandSplit(pfInfoData, EndT, tpGP);
####### PortfolioBackTesting_Quantity_VolAfterDividendandSplit
用途:策略验证相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
PfInfoData := array((
"自动参与配股":1,
"分红再投资":0
));
EndT := inttodate(20230810);
tpGP := array(
("组ID":"", "截止日":45147.0, "代码":"SH600081", "名称":"东风科技", "方向":1, "数量":20000.0, "收盘":11.64, "市值":232800.0, "总成本":249600.0, "成本价":12.48, "浮动盈亏":-16800.0, "浮盈率(%)":-6.73076923076923, "证券类别":2, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "保证金占用":232800.0, "市值变动":0.0, "买入金额":0, "卖出金额":0, "买入金额2":0, "卖出金额2":0, "分红金额":0, "配股金额":0, "迁入金额":0, "迁出金额":0, "迁入金额2":0, "迁出金额2":0, "买入金额(税后)":0, "卖出金额(税后)":0, "买入金额2(税后)":0, "卖出金额2(税后)":0, "迁入金额(税后)":0, "迁出金额(税后)":0, "迁入金额2(税后)":0, "迁出金额2(税后)":0, "调入金额":0, "调出金额":0, "调入金额2":0, "调出金额2":0, "当日盈亏(净额)":0.0, "费用":0, "当日盈亏":0.0, "冻结资金":0, "昨数量":20000.0, "昨收盘":11.64, "行业名称":"申万汽车", "应计利息":0, "剩余期限":0, "组合类型":"", "占净值比例(%)":0.0232799376982307, "Flag":0),
("组ID":"", "截止日":45147.0, "代码":"SH600369", "名称":"西南证券", "方向":1, "数量":20000.0, "收盘":4.7, "市值":94000.0, "总成本":74200.0, "成本价":3.71, "浮动盈亏":19800.0, "浮盈率(%)":26.6846361185984, "证券类别":2, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "保证金占用":94000.0, "市值变动":-1600.0, "买入金额":0, "卖出金额":0, "买入金额2":0, "卖出金额2":0, "分红金额":0, "配股金额":0, "迁入金额":0, "迁出金额":0, "迁入金额2":0, "迁出金额2":0, "买入金额(税后)":0, "卖出金额(税后)":0, "买入金额2(税后)":0, "卖出金额2(税后)":0, "迁入金额(税后)":0, "迁出金额(税后)":0, "迁入金额2(税后)":0, "迁出金额2(税后)":0, "调入金额":0, "调出金额":0, "调入金额2":0, "调出金额2":0, "当日盈亏(净额)":-1600.0, "费用":0, "当日盈亏":-1600.0, "冻结资金":0, "昨数量":20000.0, "昨收盘":4.78, "行业名称":"申万非银金融", "应计利息":0, "剩余期限":0, "组合类型":"", "占净值比例(%)":0.00939997484378732, "Flag":0)
);
tFHSG := array(
("组ID":"", "截止日":45148.0, "代码":"SH600369", "名称":"西南证券", "方向":1, "动作":2, "成交量":0, "成交价":0, "成交金额":600.0, "乘数":1, "保证金比例(%)":100, "费率(%)":0, "备注":"分红", "昨数量":20000.0, "红利比":0.03, "实得比":0.03, "送股比":0, "送股数量":0, "分红金额":600.0, "分红再投资数量":0, "组合类型":""),
("组ID":"", "截止日":45148.0, "代码":"SH600081", "方向":1, "动作":4, "成交量":6000.0, "成交价":9.59, "成交金额":57540.0, "乘数":1, "保证金比例(%)":100, "费率(%)":0, "备注":"配股", "组合类型":"")
);
return PortfolioBackTesting_Quantity_VolAfterDividendandSplit(pfInfoData, EndT, tpGP, tFHSG);
####### PortfolioBackTesting_Quantity_TradeOfDelist
用途:策略验证相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
// 换股退市
PfInfoData := array((
"现金选择权":0,
"到期自动平仓":1
));
EndT := inttodate(20230317);
tpgp := array(
("截止日":45001.0, "代码":"SZ002013", "名称":"中航机电", "方向":1, "数量":100000.0, "收盘":10.78, "市值":1078000.0, "总成本":1022000.0, "成本价":10.22, "浮动盈亏":56000.0, "证券类别":1, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "今数量":100000.0, "今成本价":10.22, "今总成本":1022000.0),
("截止日":45001.0, "代码":"SZ003816", "名称":"中国广核", "方向":1, "数量":100000.0, "收盘":2.89, "市值":289000.0, "总成本":270000.0, "成本价":2.7, "浮动盈亏":19000.0, "证券类别":1, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "今数量":100000.0, "今成本价":2.7, "今总成本":270000.0)
);
return PortfolioBackTesting_Quantity_TradeOfDelist(pfInfoData, EndT, tpGP);
结果
范例二:
// 现金退市
PfInfoData := array((
"现金选择权":1,
"到期自动平仓":1
));
EndT := inttodate(20230317);
tpgp := array(
("截止日":45001.0, "代码":"SZ002013", "名称":"中航机电", "方向":1, "数量":100000.0, "收盘":10.78, "市值":1078000.0, "总成本":1022000.0, "成本价":10.22, "浮动盈亏":56000.0, "证券类别":1, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "今数量":100000.0, "今成本价":10.22, "今总成本":1022000.0),
("截止日":45001.0, "代码":"SZ003816", "名称":"中国广核", "方向":1, "数量":100000.0, "收盘":2.89, "市值":289000.0, "总成本":270000.0, "成本价":2.7, "浮动盈亏":19000.0, "证券类别":1, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "今数量":100000.0, "今成本价":2.7, "今总成本":270000.0)
);
return PortfolioBackTesting_Quantity_TradeOfDelist(pfInfoData, EndT, tpGP);
结果
####### PortfolioBackTesting_Quantity_VolAfterSplit
用途:策略验证相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
tpGP := array(
("截止日":45147.0, "代码":"SH600369", "方向":1.0, "数量":117600.0, "总成本":436296.0, "成本价":3.71, "乘数":1.0, "保证金比例(%)":100.0),
("截止日":45147.0, "代码":"SH600081", "方向":1.0, "数量":96400.0, "总成本":1203072.0, "成本价":12.48, "乘数":1.0, "保证金比例(%)":100.0),
("截止日":45147.0, "代码":"SH600006", "方向":1.0, "数量":21400.0, "总成本":129684.0, "成本价":6.03, "乘数":1.0, "保证金比例(%)":100.0));
EndT := inttodate(20230810);
pfInfoData := array(
("初始资金":10000000.0, "分红再投资":0.0, "自动参与配股":1.0, "费用类别":1.0));
return PortfolioBackTesting_Quantity_VolAfterSplit(tpGP, EndT, pfInfoData);
结果
####### 中间函数
######## 内容
- GetContractMultiplier
- GetMarginRatio
- GetMarginRatio2
- DepositOfOption
- DepositOfSecurity
- GetTradeDeposit
- GetPriceOfUnderlying
- DepositOfOptionByGroup
- GetGroupDeposit
- BondPayMentByEndt
- GetBondMaturityTradeData
- GetLowestFee
- TSTrade_CalCC
######## GetContractMultiplier
范例
setsysparam(pn_stock(), 'IF2301');
setsysparam(pn_date(), inttodate(20230105));
return GetContractMultiplier();
// 结果:300
######## GetMarginRatio
范例
setsysparam(pn_stock(), 'IO2306-C-3100');
setsysparam(pn_date(), inttodate(20230105));
return GetMarginRatio();
// 结果:12
######## GetMarginRatio2
范例
setsysparam(pn_stock(), 'IO2306-C-3100');
setsysparam(pn_date(), inttodate(20230105));
return GetMarginRatio2();
// 结果:50
######## DepositOfOption
范例
setsysparam(pn_date(), inttodate(20230104));
OptionID := 'OP10004679';
OptionPrice := 0.4855;
StockPrice := 2.66;
p1 := 12;
p2 := 7;
return DepositOfOption(OptionID, OptionPrice, StockPrice, p1, p2);
// 结果:0.8047
######## DepositOfSecurity
范例
// 期权保证金
setsysparam(pn_date(), inttodate(20230104));
StockID := 'OP10004679';
position := 0;
price := 0.4855;
price2 := 2.66;
margin := 12;
margin2 := 7;
stockvol := 100;
stockunit := 10142;
return DepositOfSecurity(StockID, position, price, price2, margin, margin2, stockvol, stockunit);
// 结果:816126.74
范例二:
// 期货保证金
setsysparam(pn_date(), inttodate(20230104));
StockID := 'IF01';
position := 1;
price := 3895;
price2 := 0;
margin := 8;
margin2 := 0;
stockvol := 100;
stockunit := 300;
return DepositOfSecurity(StockID, position, price, price2, margin, margin2, stockvol, stockunit);
// 结果:9348000
######## GetTradeDeposit
范例
tjy := array(
("截止日":44930.0, "代码":"SZ000001", "方向":1.0, "动作":0, "乘数":1.0, "保证金比例(%)":100.0, "保证金比例II(%)":0, "成交量":10000.0, "成交价":14.32),
("截止日":44930.0, "代码":"IF01", "方向":1.0, "动作":0, "乘数":300.0, "保证金比例(%)":8.0, "保证金比例II(%)":0, "成交量":100.0, "成交价":3895.0),
("截止日":44930.0, "代码":"OP10004688", "方向":1.0, "动作":0, "乘数":10142.0, "保证金比例(%)":12.0, "保证金比例II(%)":7.0, "成交量":100.0, "成交价":0.0142),
("截止日":44930.0, "代码":"OP10004679", "方向":0, "动作":0, "乘数":10142.0, "保证金比例(%)":12.0, "保证金比例II(%)":7.0, "成交量":100.0, "成交价":0.473),
("截止日":44930.0, "代码":"CF307C14000", "方向":0, "动作":0, "乘数":5.0, "保证金比例(%)":5.0, "保证金比例II(%)":0, "成交量":100.0, "成交价":877.0)
);
GetTradeDeposit(tjy);
return tjy;
结果
######## GetPriceOfUnderlying
范例
范例一:
// 期权标的证券系统昨收
OptionID := 'OP10004679';
EndT := inttodate(20230104);
isOpen := 1;
return GetPriceOfUnderlying(OptionID, EndT, isOpen);
// 结果:2.651
范例二:
// 期权标的证券收盘
OptionID := 'OP10004679';
EndT := inttodate(20230104);
return GetPriceOfUnderlying(OptionID, EndT);
// 结果:2.66
######## DepositOfOptionByGroup
范例
// 这两个合约构成认沽熊市价差策略PNSJC
// PNSJC组合策略的保证金计算方式是:两个期权合约的行权价之差
setsysparam(pn_date(), inttodate(20190731));
Option := 1;
OptionID := 'OP10001902';
position := 1;
OptionID2 := 'OP10001906';
position2 := 0;
Price := spec(settlement(), OptionID);
price2 := spec(settlement(), OptionID2);
// 两个期权合约标的物SH510050
StockPrice := spec(close(), 'SH510050');
P1 := 12;
P2 := 7;
margin := 0;
stockvol := 5;
stockunit := 10000;
return DepositOfOptionByGroup(Option, OptionID, position, OptionID2, position2, Price, price2, StockPrice, P1, P2, margin, stockvol, stockunit);
// 结果:5000
######## GetGroupDeposit
范例
// 这两个合约构成认沽熊市价差策略PNSJC
setsysparam(pn_date(), inttodate(20190731));
IDTYPE := 'PNSJC';
OptionID := 'OP10001902';
position := 1;
OptionID2 := 'OP10001906';
position2 := 0;
Price := spec(settlement(), OptionID);
price2 := spec(settlement(), OptionID2);
// 两个期权合约标的物SH510050
StockPrice := spec(close(), 'SH510050');
P1 := 12;
P2 := 7;
stockvol := 5;
stockunit := 10000;
return GetGroupDeposit(IDTYPE, OptionID, position, OptionID2, position2, Price, price2, StockPrice, P1, P2, stockvol, stockunit);
// 结果:5000
######## BondPayMentByEndt
范例
Bondarr := array('SH196237', 'SZ101516', 'SH175901');
Endt := inttodate(20230116);
return BondPayMentByEndt(Bondarr, Endt);
结果
######## GetBondMaturityTradeData
范例
EndT := inttodate(20170613);
tpgp := array(
("截止日":42734.0, "代码":"BK078020", "方向":1.0, "乘数":1.0, "保证金比例(%)":100.0, "保证金比例II(%)":nil, "数量":1330.0, "收盘":103.68, "市值":137899.32, "保证金占用":137899.32, "占净值比例(%)":0.14, "总成本":134984.59, "成本价":101.49, "浮动盈亏":2914.73, "浮盈率(%)":2.16, "证券类别":18.0, "行业名称":0.0),
("截止日":42734.0, "代码":"BK030014", "方向":1.0, "乘数":1.0, "保证金比例(%)":100.0, "保证金比例II(%)":nil, "数量":25131.0, "收盘":76.76, "市值":1929151.06, "保证金占用":1929151.06, "占净值比例(%)":1.9, "总成本":1895204.27, "成本价":75.41, "浮动盈亏":33946.78, "浮盈率(%)":1.79, "证券类别":18.0, "行业名称":0.0)
);
return GetBondMaturityTradeData(EndT, tpgp);
结果
######## GetLowestFee
范例
return array(
'不启用最低费用':GetLowestFee(999536, 0.01, 0, 0, 100, 100),
'启用最低费用': GetLowestFee(999536, 0.01, 0, 1, 100, 100)
);
// 结果:array("不启用最低费用":99.9536,"启用最低费用":100)
######## TSTrade_CalCC
范例
EndT := inttodate(20150215);
tpGP := array(
("主码":"JY020101", "截止日":42049.0, "代码":"SH204014", "方向":1.0, "数量":10000.0, "成本价":90.0, "总成本":900000.0, "乘数":1.0, "保证金比例(%)":100.0, "组ID":""),
("主码":"JY020102", "截止日":42049.0, "代码":"SH204014", "方向":1.0, "数量":3000.0, "成本价":80.0, "总成本":240000.0, "乘数":1.0, "保证金比例(%)":100.0, "组ID":""),
("主码":"JY020103", "截止日":42049.0, "代码":"SZ131802", "方向":1.0, "数量":3000.0, "成本价":70.0, "总成本":210000.0, "乘数":1.0, "保证金比例(%)":100.0, "组ID":""),
("主码":"JY020104", "截止日":42049.0, "代码":"SZ131802", "方向":1.0, "数量":4000.0, "成本价":60.0, "总成本":240000.0, "乘数":1.0, "保证金比例(%)":100.0, "组ID":"")
);
tjy := array(
("主码":"JY021501", "截止日":42050.0, "代码":"SZ131802", "方向":1.0, "动作":1.0, "成交价":90.0, "成交量":4000.0, "成交金额(税前)":360000.0, "费用":36.0, "成交金额2":360000.0, "序号":1.0, "乘数":1.0, "保证金比例(%)":100.0, "利息":3600.0, "组ID":""),
("主码":"JY021502", "截止日":42050.0, "代码":"SH204014", "方向":1.0, "动作":1.0, "成交价":80.0, "成交量":5000.0, "成交金额(税前)":400000.0, "费用":45.0, "成交金额2":400000.0, "序号":2.0, "乘数":1.0, "保证金比例(%)":100.0, "利息":4000.0, "组ID":""),
("主码":"JY021503", "截止日":42050.0, "代码":"SH204014", "方向":1.0, "动作":1.0, "成交价":85.0, "成交量":6000.0, "成交金额(税前)":510000.0, "费用":80.0, "成交金额2":510000.0, "序号":3.0, "乘数":1.0, "保证金比例(%)":100.0, "利息":5100.0, "组ID":""),
("主码":"JY021504", "截止日":42050.0, "代码":"SZ131802", "方向":1.0, "动作":1.0, "成交价":100.0, "成交量":2000.0, "成交金额(税前)":200000.0, "费用":40.0, "成交金额2":200000.0, "序号":4.0, "乘数":1.0, "保证金比例(%)":100.0, "利息":2000.0, "组ID":""),
("主码":"JY021505", "截止日":42050.0, "代码":"SH204014", "方向":1.0, "动作":0.0, "成交价":95.0, "成交量":1000.0, "成交金额(税前)":95000.0, "费用":35.0, "成交金额2":95000.0, "序号":5.0, "乘数":1.0, "保证金比例(%)":100.0, "利息":950.0, "组ID":"")
);
return TSTrade_CalCC(EndT, tpGP, tjy);
结果
####### PortfolioBackTesting_Quantity_GetClose
用途:策略验证相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
setsysparam(pn_stock(), 'IF01');
setsysparam(pn_cycle(), cy_day());
Endt := inttodate(20230104);
Stype := stocktype(DefaultStockID());
closePrice := PortfolioBackTesting_Quantity_GetClose(Endt, Stype, 0);
settleprice := PortfolioBackTesting_Quantity_GetClose(Endt, Stype, 1);
return array(
'收盘价':closePrice,
'结算价':settleprice
);
// 结果:array("收盘价":3898.0,"结算价":3895.0);
指数基金中间函数
####### 内容
- PortfolioBackTesting_IndexFund_DataCheck
- PortfolioBackTesting_IndexFund_GetIndexSamples
- PortfolioBackTesting_IndexFund_GetIndexSamplesByMarketValue
- PortfolioBackTesting_IndexFund_GetTradingData
- PortfolioBackTesting_IndexFund_GetIndexSamplesPercent
####### PortfolioBackTesting_IndexFund_DataCheck
用途:策略验证相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:整数。
范例
PfInfoData := array();
return PortfolioBackTesting_IndexFund_DataCheck(PFInfoData, 'SH000300');
####### PortfolioBackTesting_IndexFund_GetIndexSamples
用途:策略验证相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:整数。
范例
PfInfoData := array(
("初始资金":2000000000.00, "指数成分数据来源":0.00, "初始建仓策略":0.00, "首日建仓比例(%)":20.00, "每日建仓比例变化(%)":0.00, "目标建仓比例(%)":0.00, "涨停不交易":1.00, "跌停不交易":1.00, "停牌不交易":1.00, "成交价类别":1.00, "成交量取整模式":1.00, "分红再投资":0.00, "最大成交金额占可交易金额比例(%)":5.00, "最小调仓比例(%)":0.01, "开仓费率(%)":0.1, "平仓费率(%)":0.1, "指数成分源数据目录":"C:\\Test\\指数成分-输入\\", "指数成分输出目录":"C:\\Test\\指数成分-输出\\", "指数每日交易输出目录":"C:\\Test\\指数交易-输出\\")); PortfolioBackTesting_IndexFund_GetIndexSamples(PfInfoData, 'SH000300', 39086, r);
return r;
####### PortfolioBackTesting_IndexFund_GetIndexSamplesByMarketValue
用途:策略验证相关函数。 参数:无。 返回:整数。
范例
return PortfolioBackTesting_IndexFund_GetIndexSamplesByMarketValue(
'SH000300',
inttodate(20121029),
inttodate(20121030));
####### PortfolioBackTesting_IndexFund_GetTradingData
范例
PfInfoData := array(
("初始资金":2000000000.00, "指数成分数据来源":0.00, "初始建仓策略":0.00, "首日建仓比例(%)":20.00, "每日建仓比例变化(%)":0.00, "目标建仓比例(%)":0.00, "涨停不交易":1.00, "跌停不交易":1.00, "停牌不交易":1.00, "成交价类别":1.00, "成交量取整模式":1.00, "分红再投资":0.00, "最大成交金额占可交易金额比例(%)":5.00, "最小调仓比例(%)":0.01, "开仓费率(%)":0.1, "平仓费率(%)":0.1, "指数成分源数据目录":"C:\\Test\\指数成分-输入\\", "指数成分输出目录":"C:\\Test\\指数成分-输出\\", "指数每日交易输出目录":"C:\\Test\\指数交易-输出\\"));
PortfolioBackTesting_IndexFund_GetIndexSamples(PfInfoData, 'SH000300', 39086, r);
return r;
####### PortfolioBackTesting_IndexFund_GetIndexSamplesPercent
用途:策略验证相关函数。 参数:arg1,arg2,arg3,arg4,arg5(按示例顺序传入)。 返回:整数。
范例
PfInfoData := array(
("初始资金":2000000000.00, "指数成分数据来源":0.00, "初始建仓策略":0.00, "首日建仓比例(%)":20.00, "每日建仓比例变化(%)":0.00, "目标建仓比例(%)":95.00));
tpIS := array(array('比例(%)':30));
PortfolioBackTesting_IndexFund_GetIndexSamplesPercent(PfInfoData, 'SH000300', INTTODATE(20121029), INTTODATE(20121031), TPIS);
return tpIS;
中间函数
####### 内容
- PortfolioBackTesting_InitInvestmentRatio
- PortfolioBackTesting_BenchmarkReturn
- PortfolioBackTesting_BuySellDefaultRatio
- PortfolioBackTesting_TransactionPrice
- PortfolioBackTesting_AdjustVolByBonusShare
- PortfolioBackTesting_GetBenchmarkReturn
- PortfolioBackTesting_TransactionVol
- PortfolioBackTesting_CalBenchmarkReturn
####### PortfolioBackTesting_InitInvestmentRatio
用途:策略验证相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
return PortfolioBackTesting_InitInvestmentRatio(inttodate(20121029), 100000); // 对资产配资初始化
####### PortfolioBackTesting_BenchmarkReturn
用途:策略验证相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
t := array(('截止日':41213, '净值收益率(%)':0.012), ('截止日':41214, '净值收益率(%)':0.018), ('截止日':41215, '净值收益率(%)':0.022));
PortfolioBackTesting_BenchmarkReturn('SH000300', t);
return T;
####### PortfolioBackTesting_BuySellDefaultRatio
用途:策略验证相关函数。 参数:无。 返回:处理后的结果值。
范例
BuyRatio := 0.3;
SellRatio := nil;
BuyOtherFee := nil;
PortfolioBackTesting_BuySellDefaultRatio(
'SH000300',
inttodate(20121029),
BuyRatio,
SellRatio,
BuyOtherFee,
SellOtherFee);
return array(BuyRatio, SellRatio, BuyOtherFee);
####### PortfolioBackTesting_TransactionPrice
用途:策略验证相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
return PortfolioBackTesting_TransactionPrice('SH600000', inttodate(20121029), 1);
// 结果:7.46
####### PortfolioBackTesting_AdjustVolByBonusShare
用途:策略验证相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
tpGP := array(
("代码":"SH600143", "名称":"金发科技", "数量":288760.00),
("代码":"SH600601", "名称":"方正科技", "数量":1334310.00),
("代码":"SH600839", "名称":"四川长虹", "数量":1368608.00));
return PortfolioBackTesting_AdjustVolByBonusShare(tpGP, inttodate(20070702));
####### PortfolioBackTesting_GetBenchmarkReturn
用途:策略验证相关函数。 参数:无。 返回:处理后的结果值。
范例
return PortfolioBackTesting_GetBenchmarkReturn(
'SH000300',
inttodate(20070701),
inttodate(20120301),
95);
####### PortfolioBackTesting_TransactionVol
用途:策略验证相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
return PortfolioBackTesting_TransactionVol(1, 0.3, 0.2, 20030); // 结果:20000
####### PortfolioBackTesting_CalBenchmarkReturn
用途:策略验证相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
范例一:
// 单个市场指数作为基准:沪深300作为基准
BMinfo := array(
"复合收益率计算方法":0,
"基准类型":0,
"基准代码":"沪深300"
);
BMArr := array(
("截止日":44930.0, "基准收益率(%)":0.129851617552233),
("截止日":44931.0, "基准收益率(%)":1.9427566417088),
("截止日":44932.0, "基准收益率(%)":0.310201774529736),
("截止日":44935.0, "基准收益率(%)":0.809638289821103),
("截止日":44936.0, "基准收益率(%)":0.10849664186435),
("截止日":44937.0, "基准收益率(%)":-0.185260702515608),
("截止日":44938.0, "基准收益率(%)":0.19546732171066),
("截止日":44939.0, "基准收益率(%)":1.40641711283184),
("截止日":44942.0, "基准收益率(%)":1.56065815408548),
("截止日":44943.0, "基准收益率(%)":-0.017450609711639),
("截止日":44944.0, "基准收益率(%)":-0.167452125476234),
("截止日":44945.0, "基准收益率(%)":0.622068882263999),
("截止日":44946.0, "基准收益率(%)":0.614026773819506)
);
t := array(
("截止日":44930.0, "净值收益率(%)":-0.332793457),
("截止日":44931.0, "净值收益率(%)":-0.263773111664858),
("截止日":44932.0, "净值收益率(%)":0.0354019916831471),
("截止日":44935.0, "净值收益率(%)":0.277866916531731),
("截止日":44936.0, "净值收益率(%)":0.351341637362642),
("截止日":44937.0, "净值收益率(%)":-0.857619853637283),
("截止日":44938.0, "净值收益率(%)":-0.829772904725061),
("截止日":44939.0, "净值收益率(%)":-1.37385104622509),
("截止日":44942.0, "净值收益率(%)":-0.698157299507218),
("截止日":44943.0, "净值收益率(%)":-1.30100783081455),
("截止日":44944.0, "净值收益率(%)":0.328379438447828),
("截止日":44945.0, "净值收益率(%)":0.204243778249732),
("截止日":44946.0, "净值收益率(%)":-0.398048534322399)
);
return PortfolioBackTesting_CalBenchmarkReturn(BMinfo, BMArr, t);
结果
范例二:
// 多个市场市场指数加权作为基准
// array(("代码":"SH000012","比例(%)":35),("代码":"SH000300","比例(%)":65))
BMinfo := array(
"复合收益率计算方法":0,//累计收益率计算方式0-累成,1-累加
"基准类型":1,
"基准代码":"复合基准"
);
BMArr := array(
("截止日":43801.0, "基准收益率(%)":0.123171172283601),
("截止日":43802.0, "基准收益率(%)":0.25829833514229),
("截止日":43803.0, "基准收益率(%)":-0.020653085113629),
("截止日":43804.0, "基准收益率(%)":0.505178796361568),
("截止日":43805.0, "基准收益率(%)":0.388033089336361),
("截止日":43808.0, "基准收益率(%)":-0.105537214736128),
("截止日":43809.0, "基准收益率(%)":0.0888504434722582),
("截止日":43810.0, "基准收益率(%)":0.0416111626986788)
);
t := array(
("截止日":43801.0, "净值收益率(%)":-0.0021054),
("截止日":43802.0, "净值收益率(%)":0.0144003031839832),
("截止日":43803.0, "净值收益率(%)":0.0105986969326069),
("截止日":43804.0, "净值收益率(%)":0.0173960172514344),
("截止日":43805.0, "净值收益率(%)":0.0361854192300629),
("截止日":43808.0, "净值收益率(%)":0.0275789036279854),
("截止日":43809.0, "净值收益率(%)":0.0241748353018918),
("截止日":43810.0, "净值收益率(%)":0.00659154340575376)
);
return PortfolioBackTesting_CalBenchmarkReturn(BMinfo, BMArr, t);
结果
量化选股
内容
- 股票价格形态相似性度量
股票价格形态相似性度量
####### 内容
- Stock_pricesamebyevalute
- Stock_pricesamebyofferdata
- Stock_samestockdata
- Ts_sampevalutelib
####### Stock_pricesamebyevalute
- Stock_pricesamebyevalute
- Stock_pricesamebyofferdata
- Stock_samestockdata
- Ts_sampevalutelib
####### Stock_pricesamebyofferdata
- Stock_pricesamebyevalute
- Stock_pricesamebyofferdata
- Stock_samestockdata
- Ts_sampevalutelib
####### Stock_samestockdata
- Stock_pricesamebyevalute
- Stock_pricesamebyofferdata
- Stock_samestockdata
- Ts_sampevalutelib
####### Ts_sampevalutelib
- Stock_pricesamebyevalute
- Stock_pricesamebyofferdata
- Stock_samestockdata
- Ts_sampevalutelib
股权分置
内容
- SF_PE
SF_PE
用途:股权分置相关函数。 参数:arg1,arg2,arg3,arg4,arg5(按示例顺序传入)。 返回:处理后的结果值。
范例
endt := inttodate(20120925);
return SF_PE("SH600352", endt, 12, 0.32, 2.5);
价值评估
内容
- EV_PE
- EV_PB
- EV_FCFF_I
- EV_FCFF_II
- EV_FCFF_II_Sensitivity
- WACC
EV_PE
用途:价值评估相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
stocks := 'SH600053;SH600836;SH600963;SH600966;SZ000488;SZ000506;SZ00069';
endt := inttodate(20120925);
return EV_PE(endt, false, stocks);
EV_PB
用途:价值评估相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
stocks := 'SH600053;SH600836;SH600963;SH600966;SZ000488;SZ000506;SZ00069';
endt := inttodate(20120925);
return EV_PB(Stocks, endt);
EV_FCFF_I
用途:价值评估相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
data := array(("含义":"EBIT", "数值":12834.16), ("含义":"折旧与摊销", "数值":2319.98), ("含义":"追加营运资本", "数值":534.22), ("含义":"资本支出", "数值":4497.2));
G := array(
("含义":"年数", "高速增长阶段":5.00, "稳定增长阶段":1.00),
("含义":"EBIT增长率(%)", "高速增长阶段":10.00, "稳定增长阶段":3.00),
("含义":"折旧增长率(%)", "高速增长阶段":10.00, "稳定增长阶段":3.00),
("含义":"追加运营资本增长率(%)", "高速增长阶段":10.00, "稳定增长阶段":3.00),
("含义":"资本支出增长率(%)", "高速增长阶段":10.00, "稳定增长阶段":3.00),
("含义":"无风险利率Rf(%)", "高速增长阶段":2.8, "稳定增长阶段":3.4),
("含义":"预期收益率Rm(%)", "高速增长阶段":10.00, "稳定增长阶段":10.00),
("含义":"税率T(%)", "高速增长阶段":18.00, "稳定增长阶段":18.00),
("含义":"债务成本Kd(%)", "高速增长阶段":4.1, "稳定增长阶段":5.33),
("含义":"资产负债率δ(%)", "高速增长阶段":40.00, "稳定增长阶段":40.00));
return EV_FCFF_I(Data, G, 2);
EV_FCFF_II
用途:价值评估相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11(按示例顺序传入)。 返回:处理后的结果值。
范例
data := array(
("项目":"税率", "第1年":0.33, "第2年":0.33, "第3年":0.33, "第4年":0.33, "第5年":0.33, "第6年":0.33, "第7年":0.33, "第8年":0.33, "第9年":0.33, "第10年":0.33, "第11年":0.33, "第12年":0.33),
("项目":"EBIT", "第1年":4318.00, "第2年":5961.00, "第3年":8949.00, "第4年":10161.00, "第5年":11449.00, "第6年":13848.00, "第7年":14704.00, "第8年":15735.00, "第9年":17654.00, "第10年":16994.00, "第11年":16986.00, "第12年":16977.00),
("项目":"折旧与摊销", "第1年":898.00, "第2年":1190.00, "第3年":1790.00, "第4年":2090.00, "第5年":2390.00, "第6年":2990.00, "第7年":3290.00, "第8年":3590.00, "第9年":4190.00, "第10年":4190.00, "第11年":4190.00, "第12年":4190.00),
("项目":"追加营运资本", "第1年":0.00, "第2年":0.00, "第3年":0.00, "第4年":0.00, "第5年":0.00, "第6年":0.00, "第7年":0.00, "第8年":0.00, "第9年":0.00, "第10年":0.00, "第11年":0.00, "第12年":0.00),
("项目":"资本性支出", "第1年":0.00, "第2年":9350.00, "第3年":18700.00, "第4年":9350.00, "第5年":9350.00, "第6年":18700.00, "第7年":9350.00, "第8年":9350.00, "第9年":18700.00, "第10年":0.00, "第11年":0.00, "第12年":0.00));
return EV_FCFF_II(data, 10121, 2, 785600, 0, 3.84, inttodate(20110101), inttodate(20111231), 10, 4.536, 15.04);
EV_FCFF_II_Sensitivity
用途:价值评估相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8(按示例顺序传入)。 返回:处理后的结果值。
范例
data := array(
("项目":"税率", "第1年":0.33, "第2年":0.33, "第3年":0.33, "第4年":0.33, "第5年":0.33, "第6年":0.33, "第7年":0.33, "第8年":0.33, "第9年":0.33, "第10年":0.33, "第11年":0.33, "第12年":0.33),
("项目":"EBIT", "第1年":4318.00, "第2年":5961.00, "第3年":8949.00, "第4年":10161.00, "第5年":11449.00, "第6年":13848.00, "第7年":14704.00, "第8年":15735.00, "第9年":17654.00, "第10年":16994.00, "第11年":16986.00, "第12年":16977.00),
("项目":"折旧与摊销", "第1年":898.00, "第2年":1190.00, "第3年":1790.00, "第4年":2090.00, "第5年":2390.00, "第6年":2990.00, "第7年":3290.00, "第8年":3590.00, "第9年":4190.00, "第10年":4190.00, "第11年":4190.00, "第12年":4190.00),
("项目":"追加营运资本", "第1年":0.00, "第2年":0.00, "第3年":0.00, "第4年":0.00, "第5年":0.00, "第6年":0.00, "第7年":0.00, "第8年":0.00, "第9年":0.00, "第10年":0.00, "第11年":0.00, "第12年":0.00),
("项目":"资本性支出", "第1年":0.00, "第2年":9350.00, "第3年":18700.00, "第4年":9350.00, "第5年":9350.00, "第6年":18700.00, "第7年":9350.00, "第8年":9350.00, "第9年":18700.00, "第10年":0.00, "第11年":0.00, "第12年":0.00));
return EV_FCFF_II_Sensitivity(data, 10121, 2, 785600, 0, 2, 7.5, 12);
WACC
用途:价值评估相关函数。 参数:arg1,arg2,arg3,arg4,arg5(按示例顺序传入)。 返回:处理后的结果值。
范例
return WACC(3.84, 10.84, 0.637, 4.1, 40); // 结果:6.6194
期权定价
内容
- BinomialTreeOfStock
- BinomialTreeOfFuture
- BinomialTreeOfCoin
- B_SOfStock
- B_SofIndex
- B_SofCoin
- B_SofFuture
- BinomialTreeOfIndex
- B_SOfStock_1
- Black_Scholes
- B_SOfStock_IV
- BinomialTree
- sfNormal2
BinomialTreeOfStock
用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7(按示例顺序传入)。 返回:处理后的结果值。
范例
return BinomialTreeOfStock(0, 50, 50, 10, 40, 5, 3);
BinomialTreeOfFuture
用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7(按示例顺序传入)。 返回:处理后的结果值。
范例
// 用二叉树对期货美式看涨期权进行定价
return BinomialTreeOfFuture(0, 300, 350, 5, 10, 5, 3);
结果如截图:
参考详细说明:期权定价基础模型
BinomialTreeOfCoin
用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8(按示例顺序传入)。 返回:处理后的结果值。
范例
return BinomialTreeOfCoin(0, 1.61, 1.6, 8, 10, 12, 12, 3);
B_SOfStock
用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6(按示例顺序传入)。 返回:处理后的结果值。
范例
return B_SOfStock(0, 4.62, 4.5, 5, 26, 12);
B_SofIndex
用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7(按示例顺序传入)。 返回:整数。
范例
return B_SOfIndex(0, 310, 300, 8, 3, 20, 2);
B_SofCoin
用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7(按示例顺序传入)。 返回:处理后的结果值。
范例
// 用B-S 对外汇看跌期权进行定价
return B_SOfCoin(1, 1.61, 1.6, 5, 3, 10, 5);
结果如截图:
参考详细说明:期权定价基础模型
B_SofFuture
用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6(按示例顺序传入)。 返回:处理后的结果值。
范例
return B_SOfFuture(0, 20, 20, 9, 25, 4);
BinomialTreeOfIndex
用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8(按示例顺序传入)。 返回:整数。
范例
return BinomialTreeOfIndex(0, 1.61, 1.6, 8, 10, 12, 12, 3);
B_SOfStock_1
用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6(按示例顺序传入)。 返回:处理后的结果值。
范例
return B_SOfStock_1(0, 4.62, 4, 5, 0.98, 12);
Black_Scholes
用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8(按示例顺序传入)。 返回:处理后的结果值。
范例
return Black_Scholes(0, 0, 42, 40, 10, 20, 0.5, 0);
B_SOfStock_IV
用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6(按示例顺序传入)。 返回:处理后的结果值。
范例
// 用 B-S 计算股票期权的隐含波动率
return B_SOfStock_IV(0, 4.62, 4.5, 5, 0.68, 12);
// 结果27.8
参考详细说明:期权定价基础模型
BinomialTree
用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9(按示例顺序传入)。 返回:处理后的结果值。
范例
return BinomialTree(0, 0, 42, 40, 10, 20, 0.5, 0, 2);
sfNormal2
范例
return sf_Normal2_(0.77);
结果:0.77935
套利
内容
- ETF50SampleData
ETF50SampleData
用途:套利相关函数。 参数:无。 返回:处理后的结果值。
范例
return ETF50SampleData();
投资组合
内容
- FundPortfolio_Pgm
- FundPortfolio_db_Pgm
- PortfolioHVByPE
- StocksPortfolio_Pgm
- NPartPortfolio_Pgm
- PortfolioTestByAny_Pgm
- Common
- Markowitz
- Misc
- SIM
- 收益和风险
- 投资组合历史验证
- 相关系数与BetaAlpha
- 组合优化
FundPortfolio_Pgm
用途:投资组合相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9(按示例顺序传入)。 返回:处理后的结果值。
范例
BegTime := IntToDate(20120912);
EndTime := inttodate(20121023);
ClassData := array(('代码':2, '名称':'万科A', '行业名称':'房地产'), ('代码':605, '名称':'韶能股份', '行业名称':'电力'));
Portfolio := array(('代码':000002, '名称':'万科A', '数量':31284), ('代码':000605, '名称':'洞庭', '数量':31284));
return FundPortfolio_Pgm(BegTime, EndTime, ClassData, Portfolio, 4, 0, 2, 0, 2);
FundPortfolio_db_Pgm
用途:投资组合相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9(按示例顺序传入)。 返回:处理后的结果值。
范例
BegTime := IntToDate(20120912);
EndTime := inttodate(20121023);
return FundPortfolio_db_Pgm(BegTime, EndTime, 'ClassData', 'Portfolio', 4, 0, 2, 0, 2);
PortfolioHVByPE
用途:投资组合相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9(按示例顺序传入)。 返回:处理后的结果值。
范例
return PortfolioHVByPE("深证A股;上证A股", inttodate(20120912), inttodate(20121022), 500, 3, 1, 10, 2, 1);
StocksPortfolio_Pgm
用途:投资组合相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
return
StocksPortfolio_Pgm("沪深300", inttodate(20120712), inttodate(20121022),
1, 0, false, -0.3, 5);
NPartPortfolio_Pgm
用途:投资组合相关函数。 参数:无。 返回:处理后的结果值。
范例
return
NPartPortfolio_Pgm("申万采掘",
'',
@StockPE3_V(),
10,
0,
@(reportofall(9900000, DefaultRepID()) > 0),
inttodate(20120920),
inttodate(20121020),
1,
2,
"SH000001",
true);
PortfolioTestByAny_Pgm
用途:投资组合相关函数。 参数:无。 返回:处理后的结果值。
范例
return PortfolioTestByAny_Pgm(
"深证A股;上证A股",
inttodate(20120920),
inttodate(20121022),
500,
30,
@StockPE3_V(),
true,
3,
0,
10,
2,
1,
@true);
Common
####### 内容
- GetTrueRp
- PortfolioTrack
- StocksPortfolio
- pf_CallBack1
- pf_IncomeMaxCallBack
- pf_OutPut
- pf_RiskMinCallBack
- AdjustSampleByAny
- PortfolioByAny
- PortfolioTrackingByAny
- NeedAdjustSampleByDays
####### GetTrueRp
用途:投资组合相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
a := array(2, 3, 4, 5, 8);
SetSysParam('TZZHRiMatrix', a);
w := array(1, 4, 6, 3, 7);
return GetTrueRp(w); // 结果:5.19048
####### PortfolioTrack
用途:投资组合相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
return PortfolioTrack("Data", 500, inttodate(20120721), inttodate(20121022));
####### StocksPortfolio
用途:投资组合相关函数。 参数:无。 返回:处理后的结果值。
范例
return StocksPortfolio(
array('SH600001', 'SH600000'),
inttodate(20120721),
inttodate(20121002),
0,
0,
0,
true,
"");
####### pf_CallBack1
用途:投资组合相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
return pf_CallBack1(array(3, 4, 5), 2); // 结果:0.3872
####### pf_IncomeMaxCallBack
用途:进行数值统计计算。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
a := array(2, 3, 4, 5, 8);
SetSysParam('TZZHRiMatrix', a);
setSysParam('TZZHRp', 3);
w := array(1, 4, 6, 3, 7);
return pf_IncomeMaxCallBack(w, 2); // 结果:-4.87843
####### pf_OutPut
####### pf_RiskMinCallBack
####### AdjustSampleByAny
用途:投资组合相关函数。 参数:无。 返回:处理后的结果值。
范例
return AdjustSampleByAny(
"深证A股",
inttodate(20120916),
500,
@close(),
false,
0,
7,
9,
0,
@true);
####### PortfolioByAny
用途:投资组合相关函数。 参数:无。 返回:处理后的结果值。
范例
return PortfolioByAny(
array("SH600718", "SZ000920"),
inttodate(20120916),
@open(),
1, 0, 7, 8, @true);
####### PortfolioTrackingByAny
用途:投资组合相关函数。 参数:无。 返回:处理后的结果值。
范例
StockArr := array(('代码':"SH600718", '股数':20), ('代码':"SZ000920", '股数':30));
begt := inttodate(20121018);
endt := inttodate(20121026);
return PortfolioTrackingByAny(
"深证A股;上证A股",
StockArr,
begt,
endt,
3,
@stockzf3(),
false,
0, 0, 10, @true);
####### NeedAdjustSampleByDays
用途:投资组合相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
begt := inttodate(20121018);
endt := inttodate(20121026);
return NeedAdjustSampleByDays(begt, endt, 9); // 结果:0
Markowitz
####### 内容
- MarkowitzBasicData
- MarkowitzVARRp
- pf_StocksCovMatrix
- pf_StocksZfMatrix
####### MarkowitzBasicData
用途:投资组合相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
StockArr := array("SZ000099", "SH600000", "SZ000002");
return MarkowitzBasicData(
StockArr,
inttodate(20120818),
inttodate(20121019));
// 结果:-0.01625
####### MarkowitzVARRp
用途:投资组合相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
w := array(1, 2, 3, 4);
StockArr := array("SZ000099", "SH600000", "SZ000001", "SZ000002");
MarkowitzBasicData(StockArr, inttodate(20120818), inttodate(20121019));
return MarkowitzVARRp(w); // 结果:1.8133
####### pf_StocksCovMatrix
用途:投资组合相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
tb := array((1, 2, 3), (1, 3, 4), (3, 2, 5));
return pf_StocksCovMatrix(tb);
####### pf_StocksZfMatrix
用途:投资组合相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
StockArr := array("SZ000099", "SH600000", "SZ000001", "SZ000002");
begt := inttodate(20021015);
endt := inttodate(20021025);
return pf_StocksZfMatrix(StockArr, begt, endt);
Misc
####### 内容
- EncodePortfolioName
####### EncodePortfolioName
用途:投资组合相关函数。 参数:无。 返回:处理后的结果值。
范例
return EncodePortfolioName(
"某股票",
inttodate(20120618), i
nttodate(20120919), 0, 0, 0, 0);
// 结果:’某股票,从20120618到20120919,Markowitz法,限定收益为0求风险最小’
SIM
####### 内容
- SIMBasicData
- SIMSumAlphap
- SIMSumBetap
- SIMSumVarEj
- SIMVARRp
- StockBetaAlphaMatix
- StockVAREj
####### SIMBasicData
用途:投资组合相关函数。 参数:无。 返回:处理后的结果值。
范例
return SIMBasicData(
array("SH600718", "SH600100"),
inttodate(20120618),
inttodate(20120919)); // 结果:-0.07634
####### SIMSumAlphap
用途:进行数值统计计算。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
SIMBasicData(
array("SH600718", "SH600100"),
inttodate(20120618),
inttodate(20120919));
// 使用SIM方法计算基本数据,参考
SIMBasicData
()
return SIMSumAlphap(array(1, 2));
结果:0.00266
####### SIMSumBetap
用途:进行数值统计计算。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
SIMBasicData(
array("SH600718", "SH600100"),
inttodate(20120618),
inttodate(20120919));
// 使用SIM方法计算基本数据,参考
SIMBasicData
()
return SIMSumBetap(array(1, 2)); // 结果:0.03314
####### SIMSumVarEj
用途:进行数值统计计算。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
SIMBasicData(
array("SH600718", "SH600100"),
inttodate(20120618),
inttodate(20120919));
// 使用SIM方法计算基本数据, 参考
SIMBasicData
()
return SIMSumVarEj (array(1, 2)); // 结果:0.00045
####### SIMVARRp
用途:投资组合相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
SIMBasicData(
array("SH600718", "SH600100"),
inttodate(20120618),
inttodate(20120919));
// 使用SIM方法计算基本数据, 参考
SIMBasicData
()
return SIMVARRp(array(1, 2)); // 结果:0.00143
####### StockBetaAlphaMatix
用途:投资组合相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
R := array((1, 2), (3, 4), (6, 7), (8, 9), (3, 7), (8, 9), (3, 6), (8, 6), (7, 4), (6, 2));
rm := array(1, 2, 3, 4, 5, 6, 7, 8, 3, 10);
return StockBetaAlphaMatix(`R, Rm);
####### StockVAREj
用途:投资组合相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6(按示例顺序传入)。 返回:处理后的结果值。
范例
N := 10;
m := 2;
R := array((1, 2), (3, 4), (6, 7), (8, 9), (3, 7), (8, 9), (3, 6), (8, 6), (7, 4), (6, 2));
Alpha := array(1, 7, 9, 4, 5, 6, 7, 8, 3, 10);
Beta := array(1, 9, 3, 5, 5, 6, 7, 8, 3, 15);
rm := array(1, 4);
return StockVAREj(N, M, R, Alpha, Beta, Rm);
收益和风险
####### 内容
- AllBKYieldAndRisk
- BKyieldAndRisk
- yieldAndRisk
####### AllBKYieldAndRisk
用途:投资组合相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
return AllBKYieldAndRisk(20, inttodate(20120628));
####### BKyieldAndRisk
用途:投资组合相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
return BKyieldAndRisk("深证A股", 20, inttodate(20120728));
####### yieldAndRisk
用途:投资组合相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
return yieldAndRisk("深证A股", 20, inttodate(20120728));
投资组合历史验证
####### 内容
- PortfolioByPE
- PortfolioGraph
- PortfolioPercent
- PortfolioTrack_Pgm
- PortfolioTracking
####### PortfolioByPE
用途:投资组合相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
StockArr := array("SH600718", "SZ000920", "SH600000");
EndT := inttodate(20120828);
return PortfolioByPE(StockArr, EndT, 1, 2);
####### PortfolioGraph
用途:投资组合相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(PN_DATE(), INTTODATE(20121029));
t := nday(100, '日期', sp_time(), '指数', spec(close(), 'SZ000002'), '组合指数', SPEC(CLOSE(), 'SZ000001'));
return PortfolioGraph(t);
####### PortfolioPercent
用途:投资组合相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
StockArr := array("SH600718", "SZ000920");
endt := inttodate(20120918);
return PortfolioPercent(StockArr, endt, 500, 0);
####### PortfolioTrack_Pgm
用途:投资组合相关函数。 参数:无。 返回:处理后的结果值。
范例
return PortfolioTrack_Pgm("data", 500,
inttodate(20120718),
inttodate(20121019));
####### PortfolioTracking
用途:投资组合相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7(按示例顺序传入)。 返回:处理后的结果值。
范例
StockArr := array(('代码':'SZ000002', '股数':10), ('代码':'SH600000', '股数':30), ('代码':'SZ000001', '股数':20));
begt := inttodate(20120912);
endt := inttodate(20121022);
return PortfolioTracking('沪深300', StockArr, begt, endt, 4, 2, 5);
相关系数与BetaAlpha
####### 内容
- AdjustSmaple
- BKBetaAlphaIndexRelative
- BKCorrelMatrix
- BetaAlphaIndexRelative
- CorrelMatrix
- NeedAdjustSmaple
####### AdjustSmaple
用途:投资组合相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6(按示例顺序传入)。 返回:处理后的结果值。
范例
return AdjustSmaple("深证A股;上证A股", inttodate(20120926), 500, 11, 20, 0);
####### BKBetaAlphaIndexRelative
用途:投资组合相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:整数。
范例
// 获取当前组合中个股与指数的Beta系数、Alpha值与相关系数
// 计算当前板块“申万采掘服务“中个股与上证指数在2012-9-26日至2020-12-31日区间的相关性
setsysparam(pn_date(), 20201231T);
return BKBetaAlphaIndexRelative("申万采掘服务", "SH000001", inttodate(20120926));
####### BKCorrelMatrix
用途:投资组合相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
// 计算两个股票与上证指数在2019-9-26日至2020-12-31日区间的相关系数矩阵
setsysparam(pn_date(), 20201231T);
return BKCorrelMatrix("申万采掘服务", 20190926T);
####### BetaAlphaIndexRelative
用途:投资组合相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:整数。
范例
// 获取当前组合中个股与指数的Beta系数、Alpha值与相关系数
// 计算两个股票与上证指数在2012-9-26日至2020-12-31日区间的相关性
setsysparam(pn_date(), 20191231T);
stocks := array("SH600718", "SZ000920");
return BetaAlphaIndexRelative(stocks, "SH000001", 20120926T);
####### CorrelMatrix
用途:投资组合相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
// 组合个股相关矩阵
setsysparam(pn_date(), 20201231T);
stocks := array("SH600718", "SZ000920");
return CorrelMatrix(stocks, inttodate(20120926));
####### NeedAdjustSmaple
用途:投资组合相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
return NeedAdjustSmaple(inttodate(20120618), inttodate(20120926), 4);
// 结果:0
组合优化
####### 内容
- TSPortfolioOptimizer
- TSFL_ZHYH_TSPortfolioOptimizer01
- TSFL_ZHYH_TSPortfolioOptimizer02
- Tsfl_zhyh_tsportfoliooptimizer04
####### TSPortfolioOptimizer
范例参考2014-05-07-深圳天软科技-应用专题-组合优化01:天软组合优化框架TSPortfolioOptimizer
####### TSFL_ZHYH_TSPortfolioOptimizer01
参考2014-05-07-深圳天软科技-应用专题-组合优化01:天软组合优化框架TSPortfolioOptimizer
####### TSFL_ZHYH_TSPortfolioOptimizer02
参考2014-05-07-深圳天软科技-应用专题-组合优化01:天软组合优化框架TSPortfolioOptimizer
####### Tsfl_zhyh_tsportfoliooptimizer04
- TSPortfolioOptimizer
- TSFL_ZHYH_TSPortfolioOptimizer01
- TSFL_ZHYH_TSPortfolioOptimizer02
- Tsfl_zhyh_tsportfoliooptimizer04
新股定价
内容
- NSPP_HistoryVerify_Pgm
- NSPP_Pgm
- NSPP_HistoryVerify
- NewStockPredictPrice
- NewStockPredictValue
NSPP_HistoryVerify_Pgm
用途:新股定价相关函数。 参数:无。 返回:处理后的结果值。
范例
return NSPP_HistoryVerify_Pgm(
"深证A股;上证A股",
Inttodate(20120618),
inttodate(20120926));
NSPP_Pgm
用途:新股定价相关函数。 参数:无。 返回:处理后的结果值。
范例
return NSPP_Pgm("深证A股;上证A股",
inttodate(20040307),
Inttodate(20041025),
"SH600966");
NSPP_HistoryVerify
用途:新股定价相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
return NSPP_HistoryVerify(getbk('上证A股'),
inttodate(20120618),
inttodate(20120926));
NewStockPredictPrice
用途:新股定价相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
return NewStockPredictPrice(array("SH600718", "SZ000002"));
NewStockPredictValue
用途:新股定价相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
return NewStockPredictValue(getbk("深证A股;上证A股"),
inttodate(20040307),
inttodate(20041025),
"SH600966");
指数研究
内容
- ManyBksKLine
- ManyBksKLine_II
- StockVsIndexKLine
- IndexKLine_AdjustSampleByDate_II
- 复合指数
- 股票指数
- 基金指数
- 临时指数
- 债券指数
- 中间函数
- 最新
- 景气度
ManyBksKLine
用途:指数研究相关函数。 参数:无。 返回:处理后的结果值。
范例
return ManyBksKLine("上证A股;沪深300",
"SH000001",
-1,
inttodate(20120818),
inttodate(20120926),
0, true, 2, cy_Day(), 1);
ManyBksKLine_II
用途:指数研究相关函数。 参数:无。 返回:处理后的结果值。
范例
UserDefArr := array(('代码':'SZ000001', '名称':'平安银行', '比例(%)':40), ('代码':'SH6000010', '名称':'浦发银行', '比例(%)':30), ('代码':'SZ000002', '名称':'万科A', '比例(%)':30));
return ManyBksKLine_II(UserDefArr,
'SH000001',
-1,
inttodate(20120818),
inttodate(20120918),
CY_DAY(), 1);
StockVsIndexKLine
用途:指数研究相关函数。 参数:无。 返回:整数。
范例
return StockVsIndexKLine("SH600718",
"SH000001",
"SH600567",
-1,
inttodate(20120618),
inttodate(20120926),
1, true, 2, cy_day(), 1);
IndexKLine_AdjustSampleByDate_II
用途:日期时间处理函数。 参数:无。 返回:整数。
范例
t := array(
("日期":39080.00, "代码":"SH600550", "名称":"天威保变"),
("日期":39080.00, "代码":"SH600331", "名称":"宏达股份"),
("日期":39080.00, "代码":"SH601398", "名称":"工商银行"),
("日期":39080.00, "代码":"SH600030", "名称":"中信证券"),
("日期":39080.00, "代码":"SH600016", "名称":"民生银行"),
("日期":39080.00, "代码":"SH600036", "名称":"招商银行"),
("日期":39172.00, "代码":"SH600418", "名称":"江淮汽车"),
("日期":39172.00, "代码":"SH600649", "名称":"原水股份"),
("日期":39172.00, "代码":"SH600362", "名称":"江西铜业"),
("日期":39172.00, "代码":"SH600550", "名称":"天威保变"),
("日期":39172.00, "代码":"SH600011", "名称":"华能国际"),
);
return IndexKLine_AdjustSampleByDate_II(t,
'SH000001',
INTTODATE(20120613),
1000, 0, 1);
复合指数
####### 内容
- Index_NoAdjustStock_Quick
- ShareStructureOfSample
- PF_Percent
####### Index_NoAdjustStock_Quick
用途:指数研究相关函数。 参数:无。 返回:整数。
范例
return Index_NoAdjustStock_Quick(
array("SZ000920", "SZ000002"),
1000,
inttodate(20120818),
inttodate(20120926), 0, 1);
####### ShareStructureOfSample
用途:指数研究相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
return ShareStructureOfSample(array("SH600718"));
####### PF_Percent
用途:指数研究相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
return PF_Percent(array("SH600320", "SH600489", "SH000000"), inttodate(20120618), 0);
股票指数
####### 内容
- BkAndIndexKLine
- CalculateStockIndex
- FHSPTable
- FHSPTableOfLido
- FHSPTableOfTinysoft
- BkVsBkKLine_tab
- BkVsIndexKLine_tab
- CheckInPutData_UP
- GetInputStocks_UP
####### BkAndIndexKLine
用途:指数研究相关函数。 参数:无。 返回:整数。
范例
return BkAndIndexKLine(
array("SH600718", "SZ000002"),
"上证A股",
"SH600718",
1000,
inttodate(20020618),
inttodate(20020926),
0, true, 2, CY_day(), 1);
####### CalculateStockIndex
用途:指数研究相关函数。 参数:无。 返回:整数。
范例
return CalculateStockIndex(
array("SZ000920", "SH600718"),
1000, inttodate(20120618),
inttodate(20120926), 0, false, 2, 0);
####### FHSPTable
用途:指数研究相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(PN_Stock(), 'SZ000002');
return FHSPTable(true);
####### FHSPTableOfLido
用途:指数研究相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(PN_Stock(), 'SZ000002');
return FHSPTableOfLido (true);
####### FHSPTableOfTinysoft
用途:指数研究相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(PN_Stock(), 'SZ000002');
return FHSPTableOfTinysoft (true);
####### BkVsBkKLine_tab
用途:指数研究相关函数。 参数:无。 返回:处理后的结果值。
范例
return BkVsBkKLine_tab("金融、保险业",
1000,
inttodate(20120618),
inttodate(20120926),
0, true, 2, cy_day());
####### BkVsIndexKLine_tab
用途:指数研究相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:整数。
范例
SetSysParam(pn_bk(), '深证A股');
return BkVsIndexKLine_tab("SH000001", 1000, inttodate(20120618),
inttodate(20120926), 1, true, 2, cy_day());
####### CheckInPutData_UP
用途:指数研究相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
t := array(('代码':'SZ000002', '比例(%)':20), ('代码':'SZ000001', '比例(%)':40));
return CheckInPutData_UP(t);
// 检查数据表t是否含有’代码’,’比例(%)’字段 //结果:1
####### GetInputStocks_UP
用途:指数研究相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
t := array(('代码':'SZ000003'), ('代码':'SZ000001'));
return GetInputStocks_UP(t);
基金指数
####### 内容
- CaculateFundIndex
- FundFHSPTable
####### CaculateFundIndex
用途:指数研究相关函数。 参数:无。 返回:整数。
范例
return CaculateFundIndex(
array("SH500001", "SH500002", "SH500003"),
1.59,
inttodate(20120618),
inttodate(20120926),
1, true, 3, 1);
####### FundFHSPTable
用途:指数研究相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(PN_Stock(), 'SH500001');
return FundFHSPTable (true);
临时指数
####### 内容
- BkVsBkKLine_
- BkVsIndexKLine_
- IndexLineMergeBak
- ManyBksKLine_
- StockVsIndexKLine_
####### BkVsBkKLine_
范例
return BkVsBkKLine_(
"申万采掘",
"申万电子",
1000,
inttodate(20120618),
inttodate(20120926),
0, true, 2, cy_day(), 1);
####### BkVsIndexKLine_
范例
return BkVsIndexKLine_(
'深证A股',
'SH000001',
1000,
inttodate(20120618),
inttodate(20120926),
1, true, 2, cy_day(), 1);
####### IndexLineMergeBak
- BkVsBkKLine_
- BkVsIndexKLine_
- IndexLineMergeBak
- ManyBksKLine_
- StockVsIndexKLine_
####### ManyBksKLine_
范例
begt := inttodate(20120618);
endt := inttodate(20121026);
return ManyBksKLine_(
"申万采掘;申万金融服务",
1000,
begt, endt, 0,
true, 2, cy_week());
####### StockVsIndexKLine_
范例
begt := inttodate(20120618);
endt := inttodate(20121026);
return StockVsIndexKLine_(
"SH600900",
"SH000001",
1000,
begt,
endt,
0,
true,
2,
cy_day(),
1);
债券指数
####### 内容
- AddExInfoToArray
- BondTrueExDate
- DeleteBondByCriterion
####### AddExInfoToArray
用途:指数研究相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
r := array();
SetSysParam(PN_Stock(), 'SZ00002');
AddExInfoToArray(r, inttodate(20120618), 0, 0);
return r;
####### BondTrueExDate
用途:日期时间处理函数。 参数:arg1(按示例顺序传入)。 返回:日期或时间值。
范例
PredictDate := inttodate(20120618);
BondTrueExDate(PredictDate);
return PredictDate;
####### DeleteBondByCriterion
用途:指数研究相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
BondArr := array("SH009704", "SH000896", "SH010107", "SH010004");
DeleteBondByCriterion(BondArr);
return BondArr; // 结果:SH010107
中间函数
####### 内容
- DeleteDataOutOfScopes
- FileterValue
- FilterValueByCycle
- GetMaxListedDate
- IndexDataToShowable
- IndexLineMerge
- KLineMerge
- KLineDataForIndex
- ManyBkLineMerge
- SetToFirstValue
- VolDataForIndex
####### DeleteDataOutOfScopes
用途:指数研究相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
t1 := array(('s':0, 'time':41201), ('s':6, 'time':41202), ('s':2, 'time':41203), ('s':8, 'time':41204), ('s':2, 'time':41207), ('s':3, 'time':41208));
t2 := array(('s':2, 'time':41101), ('s':7, 'time':41202), ('s':9, 'time':41205), ('s':3, 'time':41206), ('s':5, 'time':41207), ('s':1, 'time':41209));
DeleteDataOutOfScopes(t1, t2);
return array(t1, t2);
####### FileterValue
用途:指数研究相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
v := array(('s':0, 'time':41201), ('s':6, 'time':41202), ('s':2, 'time':41203), ('s':8, 'time':41204), ('s':2, 'time':41207), ('s':3, 'time':41208));
w := array(41101, 41202, 41205, 41206, 41207, 41209);
FileterValue(v, w);
####### FilterValueByCycle
用途:指数研究相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(PN_Stock(), 'SZ000002');
SetSysParam(PN_DATE(), IntToDate(20121029));
t := Nday(20, 'time', datetoint(sp_time()), 'c', close());
FilterValueByCycle(t, inttodate(20120918), IntToDate(20121029), cy_week());
return t;
####### GetMaxListedDate
用途:日期时间处理函数。 参数:arg1(按示例顺序传入)。 返回:日期或时间值。
范例
return GetMaxListedDate(array("SZ000920", "SH600718", "SH600900"));
####### IndexDataToShowable
用途:指数研究相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:整数。
范例
SetSysParam(PN_Stock(), 'SZ000002');
SetSysParam(PN_DATE(), IntToDate(20121026));
t := Nday(20, 'Date', sp_time(), 'Close', close());
return array('转换前':t, '转换后':IndexDataToShowable(t, 1000));
####### IndexLineMerge
用途:指数研究相关函数。 参数:arg1,arg2,arg3,arg4,arg5(按示例顺序传入)。 返回:整数。
范例
SetSysParam(PN_Stock(), 'SZ000002');
SetSysParam(PN_DATE(), IntToDate(20121026));
BkValue := nday(20, 'time', sp_time(), 'close', close());
SetSysParam(pn_stock(), 'SH000001');
IndexValue := nday(20, 'time', sp_time(), 'close', close());
return IndexLineMerge('SZ000002', BkValue, 'SH000001', IndexValue, 1);
####### KLineMerge
用途:指数研究相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(PN_Stock(), 'SH000001');
SetSysParam(PN_DATE(), IntToDate(20121026));
BkValue := nday(20, 'time', sp_time(), 'close', close());
return KLineMerge("SH000001", BkValue, "SH600718", inttodate(20120618),
inttodate(20121026), 1);
####### KLineDataForIndex
用途:指数研究相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:整数。
范例
return KLineDataForIndex("SH600206", inttodate(20120618), inttodate(20120926));
####### ManyBkLineMerge
用途:指数研究相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
t := array(
("time":20061229, "close":2675.47),
("time":20070104, "close":2715.72),
("time":20070105, "close":2641.33),
("time":20070108, "close":2707.2),
("time":20070109, "close":2807.8),
("time":20070110, "close":2825.58),
("time":20070111, "close":2770.11),
("time":20070112, "close":2668.11),
("time":20070115, "close":2794.7),
("time":20070116, "close":2821.02),
("time":20070117, "close":2778.9),
("time":20070118, "close":2756.98));
t1 := array(
("time":20061229, "close":1000),
("time":20070104, "close":1017.56),
("time":20070105, "close":961.42),
("time":20070108, "close":978.96),
("time":20070109, "close":1022.61),
("time":20070110, "close":1017.87),
("time":20070111, "close":986.16),
("time":20070112, "close":947.22),
("time":20070115, "close":991.12),
("time":20070116, "close":988.37),
("time":20070117, "close":971.06),
("time":20070118, "close":948.98),
("time":20070119, "close":970.16));
r := array(("Name":"SH000001", "Value":t), ("Name":"复合指数", "Value"
:t1));
return ManyBkLineMerge(r, 1);
####### SetToFirstValue
- DeleteDataOutOfScopes
- FileterValue
- FilterValueByCycle
- GetMaxListedDate
- IndexDataToShowable
- IndexLineMerge
- KLineMerge
- KLineDataForIndex
- ManyBkLineMerge
- SetToFirstValue
- VolDataForIndex
####### VolDataForIndex
用途:指数研究相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:整数。
范例
return VolDataForIndex("SH600206", inttodate(20120618), inttodate
(20120926));
最新
####### 内容
- StandarizeBkData_III
- CalculateBkIndex
- StandarizeBkData_II
- StandarizeBkData_I
- CalculateFundBkIndex
####### StandarizeBkData_III
用途:指数研究相关函数。 参数:无。 返回:处理后的结果值。
范例
return StandarizeBkData_III(array("SZ002001", "SZ002020", "SZ002022",
"SZ002050"), 0, inttodate(20020618));
####### CalculateBkIndex
用途:指数研究相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:整数。
范例
st := 20200101t;
et := 20240930t;
t := array(
("日期":st, "代码":"SZ000001", "名称":"平安银行", "比例(%)":12.5),
("日期":st, "代码":"SH600418", "名称":"江淮汽车", "比例(%)":12.5),
("日期":st, "代码":"SH600649", "名称":"原水股份", "比例(%)":12.5),
("日期":st, "代码":"SH600362", "名称":"江西铜业", "比例(%)":12.5),
("日期":st, "代码":"SH600550", "名称":"天威保变", "比例(%)":12.5),
("日期":st, "代码":"SH600011", "名称":"华能国际", "比例(%)":12.5),
("日期":st, "代码":"SH600895", "名称":"张江高科", "比例(%)":12.5),
("日期":st, "代码":"SH600331", "名称":"宏达股份", "比例(%)":12.5));
return CalculateBkIndex(t, et);
####### StandarizeBkData_II
用途:指数研究相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
t := array(('代码':'SZ000002', '日期':41209), ('代码':'SZ000001', '日期':41209));
return StandarizeBkData_II(t, 0);
####### StandarizeBkData_I
用途:指数研究相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
t := array(('代码':'SZ000003', '日期':nil), ('代码':'SZ000002', '日期':41209), ('代码':'SZ000001', '日期':nil));
return StandarizeBkData_I(t);
####### CalculateFundBkIndex
用途:指数研究相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:整数。
范例
t := array(
("日期":39994.00, "代码":"OF000031", "名称":"华夏复兴", "比例(%)":0.0206),
("日期":39994.00, "代码":"OF020001", "名称":"国泰金鹰", "比例(%)":0.00328),
("日期":39994.00, "代码":"OF020010", "名称":"国泰金牛", "比例(%)":0.02113),
("日期":39994.00, "代码":"OF519694", "名称":"交银蓝筹", "比例(%)":0.0588),
("日期":40086.00, "代码":"OF000031", "名称":"华夏复兴", "比例(%)":0.03068),
("日期":40086.00, "代码":"OF020001", "名称":"国泰金鹰", "比例(%)":0.00604),
("日期":40086.00, "代码":"OF020010", "名称":"国泰金牛", "比例(%)":0.03752),
("日期":40086.00, "代码":"OF070013", "名称":"嘉实精选", "比例(%)":0.0227),
("日期":40178.00, "代码":"OF000031", "名称":"华夏复兴", "比例(%)":0.02294),
("日期":40178.00, "代码":"OF020001", "名称":"国泰金鹰", "比例(%)":0.00532),
("日期":40178.00, "代码":"OF020010", "名称":"国泰金牛", "比例(%)":0.02964),
("日期":40178.00, "代码":"OF121008", "名称":"国投成长", "比例(%)":0.0175));
return CalculateFundBkIndex(t, inttodate(20100302));
景气度
####### 内容
- Index_BF_Prosperity
- Stocks_BF_Prosperity
####### Index_BF_Prosperity
用途:指数研究相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:整数。
范例
indexID := "SH000300";
Rdate := 20210630;
RightType := 0;
setsysparam(CT_TTMData(), true);
return Index_BF_Prosperity(IndexID, RDate, RightType, oRDetail); // 结果:13
####### Stocks_BF_Prosperity
用途:指数研究相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
StocksArr := array("SZ000001", "SZ000002", "SH600000");
Rdate := 20210630;
RightType := 0;
setsysparam(CT_TTMData(), true);
return stocks_BF_Prosperity(StocksArr, RDate, RightType, oRDetail); // 结果:-1
基金研究
内容
- 基金仓位
- 基金池构建
- 关联度分析
基金仓位
####### 内容
- TSBF_FundBKstyleAccuracy
####### TSBF_FundBKstyleAccuracy
范例
return TSBF_FundBKstyleCurrent("普通股票型;混合型", 20150101T, 20201016T);
基金池构建
####### 内容
- Getsimufundbk
- Openendfundfilter
- Fund_ff3purealpha
- Funds_GetJZModifiedList
- OpenEndFundFilterByFundIndex
####### Getsimufundbk
- Getsimufundbk
- Openendfundfilter
- Fund_ff3purealpha
- Funds_GetJZModifiedList
- OpenEndFundFilterByFundIndex
####### Openendfundfilter
- Getsimufundbk
- Openendfundfilter
- Fund_ff3purealpha
- Funds_GetJZModifiedList
- OpenEndFundFilterByFundIndex
####### Fund_ff3purealpha
- Getsimufundbk
- Openendfundfilter
- Fund_ff3purealpha
- Funds_GetJZModifiedList
- OpenEndFundFilterByFundIndex
####### Funds_GetJZModifiedList
用途:基金研究相关函数。 参数:arg1,arg2,arg3,arg4,arg5(按示例顺序传入)。 返回:处理后的结果值。
范例
FundInds := array("TSJJ0201", "TSJJ0203");
EndT := 20250409T;
NType := 1;
N := 5;
DTime := 20250408T + 15 / 24;
return Funds_GetJZModifiedList(FundInds, EndT, NType, N, DTime);
####### OpenEndFundFilterByFundIndex
用途:基金研究相关函数。 参数:arg1(按示例顺序传入)。 返回:整数。
范例
sp_s(pn_date(), today());
return OpenEndFundFilterByFundIndex(array('TSJJ0203', 'TSJJ0201')); // 股、混
关联度分析
####### 内容
- 关联矩阵
####### 关联矩阵
######## 内容
- 矩阵转化
######## 矩阵转化
######### 内容
- Network_Conv_AdjDir
- Network_Conv_ToDist
######### Network_Conv_AdjDir
范例
matrix := array((0.0, 5.1, 19.36, 0.0, 0.0),
(5.1, 0.0, 10.26, 0.0, 0.0),
(19.36, 10.26, 0.0, 0.0, 0.0),
(0.0, 0.0, 0.0, 0.0, 5.26),
(0.0, 0.0, 0.0, 5.26, 0.0));
matrixType := 2; // 2:距离类矩阵
dirType := 1; // 目标方向:1-正向
return Network_Conv_AdjDir(matrix, matrixType, dirType);
######### Network_Conv_ToDist
范例
matrix := array((0.0, 5.1, 19.36, 0.0, 0.0),
(5.1, 0.0, 10.26, 0.0, 0.0),
(19.36, 10.26, 0.0, 0.0, 0.0),
(0.0, 0.0, 0.0, 0.0, 5.26),
(0.0, 0.0, 0.0, 5.26, 0.0));
return Network_Conv_ToDist(matrix);
量化数据接口
内容
- 高频因子
- 风险模型(CNE5)
- 基金拓展
高频因子
####### 内容
- TSBF_QMD_Ext
- TSBF_QMD_QK
- TSBF_QMD_MNdays
- TSBF_QMD_Ndays
- 仓库信息
- 统计函数
- Tsbf_qmd_mks
####### TSBF_QMD_Ext
用途:量化数据接口相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
范例一:提取 OF00001 在 20200317 日的测算仓位(%)
sp_s(PN_Date(), 20200317T);
sp_s(PN_Stock(), 'OF000001');
return TSBF_QMD_Ext(9802001001); // 返回 76.40605
范例二:提取 OF00001 在 20200317 日的仓位测算详情表
sp_s(PN_Date(), 20200317T);
sp_s(PN_Stock(), 'OF000001');
return TSBF_QMD_Ext(9802001);
####### TSBF_QMD_QK
用途:量化数据接口相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
// 提取 OF00001 在 20200317 日至20200321日的测算仓位(%)
sp_s(PN_Stock(), 'OF000001');
return TSBF_QMD_QK(9802001001, 20200317T, 20200321T);
76.40605 74.88955 70.62129 72.88006
####### TSBF_QMD_MNdays
用途:量化数据接口相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
// 在 20200317 日同时提取前 5 日的活力指数表、 市场涨停统计信息
sp_s(PN_Date(), 20200317T);
sp_s(PN_Stock(), 'QT001'); // QT001 即自编代码
return TSBF_QMD_MNdays(array(9802001, 9802007, 9802007003), 5);
####### TSBF_QMD_Ndays
用途:量化数据接口相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
// 获取OF000001连续5日的测算仓位,常数项及R2的指标值
sp_s(PN_Date(), 20200317T);
sp_s(PN_Stock(), 'OF000001');
return TSBF_QMD_Ndays(array(9802001000, 9802001001, 9802001002, 9802001004), 5);
| 截止日 | 测算仓位(%) | 常数项 | R2 |
|---|---|---|---|
| 2020-03-11 | 72.44629 | -0.0119 | 0.8485 |
| 2020-03-12 | 73.62084 | -0.06691 | 0.86713 |
| 2020-03-13 | 74.32688 | -0.10526 | 0.86676 |
| 2020-03-16 | 75.37592 | -0.13947 | 0.87897 |
| 2020-03-17 | 76.40605 | -0.14072 | 0.8798 |
####### 仓库信息
######## 内容
- Tsbf_qmd_tablefield
- Tsbf_qmd_alltable
- Tsbf_qmd_diystockid
######## Tsbf_qmd_tablefield
范例
// 获取基金仓位表结构
return TSBF_QMD_TableField(9802001);
返回:
| ID | 名称 | 表ID | 表名称 |
|---|---|---|---|
| 9802001000 | 截止日 | 9802001 | 基金仓位表 |
| 9802001001 | 测算仓位(%) | 9802001 | 基金仓位表 |
| 9802001002 | 常数项 | 9802001 | 基金仓位表 |
| 9802001003 | 债券仓位(%) | 9802001 | 基金仓位表 |
| 9802001004 | R2 | 9802001 | 基金仓位表 |
| 9802001005 | 回归仓位1(%) | 9802001 | 基金仓位表 |
| 9802001006 | 回归仓位2(%) | 9802001 | 基金仓位表 |
| 9802001007 | 回归仓位3(%) | 9802001 | 基金仓位表 |
| 9802001008 | 残差 | 9802001 | 基金仓位表 |
| 9802001009 | t值@常数项 | 9802001 | 基金仓位表 |
| 9802001010 | t值@回归仓位1(%) | 9802001 | 基金仓位表 |
| 9802001011 | t值@回归仓位2(%) | 9802001 | 基金仓位表 |
| 9802001012 | t值@回归仓位3(%) | 9802001 | 基金仓位表 |
| 9802001013 | t值@债券仓位(%) | 9802001 | 基金仓位表 |
######## Tsbf_qmd_alltable
范例
return TSBF_QMD_AllTable();
返回:
| ID | 名称 | 表ID | 表名称 |
|---|---|---|---|
| 9802001 | 基金仓位表 | 9802001 | 基金仓位表 |
| 9802002 | 股票涨停统计 | 9802002 | 股票涨停统计 |
| 9802003 | 指数换手率 | 9802003 | 指数换手率 |
| 9802004 | 破净占比表 | 9802004 | 破净占比表 |
| 9802005 | 活力指数 | 9802005 | 活力指数 |
| 9802006 | 指数高低价股数据表 | 9802006 | 指数高低价股数据表 |
| 9802007 | 创新高创新低占比数据表 | 9802007 | 创新高创新低占比数据表 |
| 9802008 | 超跌个股数据表 | 9802008 | 超跌个股数据表 |
| 9803001 | 191因子 | 9803001 | 191因子 |
| 9803002 | Barra系列描述因子 | 9803002 | Barra系列描述因子 |
| 9803003 | BarraCNE5因子 | 9803003 | BarraCNE5因子 |
| 9803004 | 筹码分布衍生指标 | 9803004 | 筹码分布衍生指标 |
| 9803005 | 三四五因子数据 | 9803005 | 三四五因子数据 |
| 9803006 | 风险模型因子收益率 | 9803006 | 风险模型因子收益率 |
| 9803007 | 特质收益率数据 | 9803007 | 特质收益率数据 |
| 9803008 | 聪明钱因子 | 9803008 | 聪明钱因子 |
| 9809001 | 基金行业仓位表 | 9809001 | 基金行业仓位表 |
| 9809002 | 净值收益率_固定周期 | 9809002 | 净值收益率_固定周期 |
| 9810001 | 可转债指标 | 9810001 | 可转债指标 |
######## Tsbf_qmd_diystockid
范例
// 返回字段ID9802001001所在表结构的具体信息
return TSBF_QMD_DIYStockID(9802001001);
| 表ID | 表名 | 代码 | 范围 | 投资风格 | 加权方式 | 板块 |
|---|---|---|---|---|---|---|
| 9802001 | 基金仓位表 | QT001 | 基金 | 整体 | 50% | |
| 9802001 | 基金仓位表 | QT002 | 基金 | 整体 | 25% | |
| 9802001 | 基金仓位表 | QT003 | 基金 | 整体 | 75% | |
| 9802001 | 基金仓位表 | QT004 | 基金 | 整体 | 平均值 | |
| 9802001 | 基金仓位表 | QT005 | 基金 | 整体 | 去头尾5%平均值 | |
| 9802001 | 基金仓位表 | QT006 | 基金 | 整体 | 最新资产净值加权 | |
| 9802001 | 基金仓位表 | QT007 | 基金 | 混合型 | 25% | |
| 9802001 | 基金仓位表 | QT008 | 基金 | 混合型 | 50% | |
| 9802001 | 基金仓位表 | QT009 | 基金 | 混合型 | 75% | |
| 9802001 | 基金仓位表 | QT010 | 基金 | 混合型 | 平均值 | |
| 9802001 | 基金仓位表 | QT011 | 基金 | 混合型 | 去头尾5%平均值 | |
| 9802001 | 基金仓位表 | QT012 | 基金 | 混合型 | 最新资产净值加权 | |
| 9802001 | 基金仓位表 | QT013 | 基金 | 股票型 | 25% | |
| 9802001 | 基金仓位表 | QT014 | 基金 | 股票型 | 50% | |
| 9802001 | 基金仓位表 | QT015 | 基金 | 股票型 | 75% | |
| 9802001 | 基金仓位表 | QT016 | 基金 | 股票型 | 平均值 | |
| 9802001 | 基金仓位表 | QT017 | 基金 | 股票型 | 去头尾5%平均值 | |
| 9802001 | 基金仓位表 | QT018 | 基金 | 股票型 | 最新资产净值加权 | |
| 9802001 | 基金仓位表 | QT019 | 基金 | A股 |
####### 统计函数
######## 内容
- 中间函数
- Tsbf_qmd_ma
- Tsbf_qmd_percentrank
######## 中间函数
######### 内容
- Emptyvalue
- Tsbf_md_getexdata
- Tsbf_qmd_firstay
- Tsbf_qmd_lastupday
- Tsbf_qmd_qknum
- Tsbf_qmd_refnday
- Tsbf_qtmd_unit
######### Emptyvalue
- Emptyvalue
- Tsbf_md_getexdata
- Tsbf_qmd_firstay
- Tsbf_qmd_lastupday
- Tsbf_qmd_qknum
- Tsbf_qmd_refnday
- Tsbf_qtmd_unit
######### Tsbf_md_getexdata
- Emptyvalue
- Tsbf_md_getexdata
- Tsbf_qmd_firstay
- Tsbf_qmd_lastupday
- Tsbf_qmd_qknum
- Tsbf_qmd_refnday
- Tsbf_qtmd_unit
######### Tsbf_qmd_firstay
- Emptyvalue
- Tsbf_md_getexdata
- Tsbf_qmd_firstay
- Tsbf_qmd_lastupday
- Tsbf_qmd_qknum
- Tsbf_qmd_refnday
- Tsbf_qtmd_unit
######### Tsbf_qmd_lastupday
- Emptyvalue
- Tsbf_md_getexdata
- Tsbf_qmd_firstay
- Tsbf_qmd_lastupday
- Tsbf_qmd_qknum
- Tsbf_qmd_refnday
- Tsbf_qtmd_unit
######### Tsbf_qmd_qknum
- Emptyvalue
- Tsbf_md_getexdata
- Tsbf_qmd_firstay
- Tsbf_qmd_lastupday
- Tsbf_qmd_qknum
- Tsbf_qmd_refnday
- Tsbf_qtmd_unit
######### Tsbf_qmd_refnday
- Emptyvalue
- Tsbf_md_getexdata
- Tsbf_qmd_firstay
- Tsbf_qmd_lastupday
- Tsbf_qmd_qknum
- Tsbf_qmd_refnday
- Tsbf_qtmd_unit
######### Tsbf_qtmd_unit
- Emptyvalue
- Tsbf_md_getexdata
- Tsbf_qmd_firstay
- Tsbf_qmd_lastupday
- Tsbf_qmd_qknum
- Tsbf_qmd_refnday
- Tsbf_qtmd_unit
######## Tsbf_qmd_ma
范例
// 求全A股在20191112T的过去250日破净占比(%)的平均值
N := 250;
setsysparam(pn_stock(), 'QT001');
setsysparam(pn_date(), 20191112T);
return TSBF_QMD_Ma(9802004001, 250); // 返回:8.09367
######## Tsbf_qmd_percentrank
范例
// 全A股在20191112T的破净占比历史百分位(%)
N := 250;
setsysparam(pn_stock(), 'QT001');
setsysparam(pn_date(), 20191112T);
return TSBF_QMD_Percentrank(9802004001, 250); // 94.7791
####### Tsbf_qmd_mks
用途:量化数据接口相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
// 获取OF000001与OF510050在20200317日的测算仓位,常数项及R2的指标值
sp_s(PN_Date(), 20200317T);
return Tsbf_qmd_mks(array(9802001000, 9802001001, 9802001002, 9802001004), array('OF000001', 'OF510050'));
| 代码 | 截止日 | 测算仓位(%) | 常数项 | R2 |
|---|---|---|---|---|
| OF000001 | 2020-03-17 | 76.40605 | -0.14072 | 0.8798 |
| OF510050 | 2020-03-17 | 90.24782 | -0.0244 | 0.96051 |
风险模型(CNE5)
####### 内容
- Index_stylefactor
- Pf_stylefactor
- Stockstylefactor
- Stocks_stylefactor
####### Index_stylefactor
用途:量化数据接口相关函数。 参数:arg1(按示例顺序传入)。 返回:整数。
范例
oV := BackUpSystemParameters2();
SetSysParam(pn_stock(), 'SH000300');
SetSysParam(pn_date(), 2020601T);
return Index_StyleFactor(2);
####### Pf_stylefactor
用途:量化数据接口相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
Portfolio := array(("代码":"SZ000001", "比例(%)":50),
("代码":"SZ000002", "比例(%)":50));
EndT := 20200601T;
DType := 2;
return pf_StyleFactor(Portfolio, EndT, DType);
####### Stockstylefactor
用途:量化数据接口相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。
范例
SetSysParam(pn_stock(), 'SH600000');
SetSysParam(pn_date(), 20200509T);
return StockStyleFactor(1);
####### Stocks_stylefactor
基金拓展
####### 内容
- 风险调整收益及风险
####### 风险调整收益及风险
量化套利
内容
- 事件套利
事件套利
####### 内容
- 事件因子
####### 事件因子
######## 内容
- ET_Amount_Ratio
- ET_Hsl_Ratio
- ET_Vol_Ratio
- ET_Zf_Ratio
- Stock_EventEffect
- Stock_Event_IndicatorChange
######## ET_Amount_Ratio
范例
SetSysParam(pn_stock(), "SZ000001");
SetSysParam(pn_Date(), 20230426T);
N := 120; M := 10; cType := 0;
r := ET_Amount_Ratio(N, M, cType);
return r;
// 0.11064783
######## ET_Hsl_Ratio
范例
SetSysParam(pn_stock(), "SZ000001");
SetSysParam(pn_Date(), 20230426T);
N := 120; M := 10; cType := 0;
r := ET_Hsl_Ratio(N, M, cType);
return r; // 0.11247812
######## ET_Vol_Ratio
范例
SetSysParam(pn_stock(), "SZ000001");
SetSysParam(pn_Date(), 20230426T);
N := 120; M := 10; cType := 0;
r := ET_Vol_Ratio(N, M, cType);
return r;
// 0.11247812
######## ET_Zf_Ratio
范例
SetSysParam(pn_stock(), "SZ000001");
SetSysParam(pn_Date(), 20230426T);
N := 120; M := 10; cType := 0;
r := ET_Zf_Ratio(N, M, cType);
return r;
// 0.25091065
######## Stock_EventEffect
范例
// 返回事件窗口日为3,基准指数为沪深300的累计超额收益率
SetSysParam(pn_stock(), "SZ000001");
SetSysParam(pn_Date(), 20230426T);
EventDay := 3;
IndexID := "SH000300";
IndicatorType := 0;
IndicatorRelativeType := 2;
IndicatorRelativeType := 0;
r := Stock_EventEffect(EventDay, IndexID, IndicatorType, IndicatorRelativeType, IndicatorCountType);
return r; // 3.66449511
######## Stock_Event_IndicatorChange
范例
// 返回事件后10天日均换手率比时间前120天日均换手率
SetSysParam(pn_stock(), "SZ000001");
SetSysParam(pn_Date(), 20230426T);
N := 120;
M := 10;
IndicatorType := 1;
IndicatorCountType := 1;
r := Stock_Event_IndicatorChange(N, M, IndicatorType, IndicatorCountType);
return r; // 1.22703407
债券研究
内容
- 利率期限结构
- 利率因子
- 利差因子
利率期限结构
####### 内容
- Bonds_NSBetaSensRet
- Bonds_NSModelBeta
- Bonds_NSModelBetaNL
- Bond_NSBetaSensitivity
- NSBetaSensitivityCal
####### Bonds_NSBetaSensRet
用途:债券研究相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6(按示例顺序传入)。 返回:处理后的结果值。
范例
PBondID := "BTS000033";
Begt := 20230724t;
Endt := 20230725t;
Delta := 20;
Constant := 0;
lambda := 0.5;
return Bonds_NSBetaSensRet(PBondID, Begt, Endt, Delta, Constant, lambda);
####### Bonds_NSModelBeta
用途:债券研究相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
PBondID := "BTS000033"; // 国债
Endt := 20230725t;
Lambda := 0.5;
return Bonds_NSModelBeta(PBondID, Endt, Lambda);
// array(3.08,-1.43,-0.58)
####### Bonds_NSModelBetaNL
用途:债券研究相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
范例
BondArr := array("SH020564", "SH019644", "SH019694", "SH019685", "SH019693", "SH019643", "SH019667", "SH019647", "SH019625", "SH019684");
Endt := 20230725t;
Lambda := 0.5;
return Bonds_NSModelBetaNL(BondArr, Endt, Lambda);
// array(2.8,-1.46,0.95)
####### Bond_NSBetaSensitivity
用途:债券研究相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
BondID := "SH019680";
Endt := 20230725t;
NSParamArr := array("lambda":0.5, "beta0":4, "beta1":-1, "beta2":1);
Delta := 20;
return Bond_NSBetaSensitivity(BondID, Endt, NSParamArr, Delta);
// array(0.57,0.49,0.07)
####### NSBetaSensitivityCal
用途:债券研究相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
范例1
CashData := array(("现金流":1.7, "剩余期限":1), ("现金流":1.7, "剩余期限":2), ("现金流":1.7, "剩余期限":3), ("现金流":1.7, "剩余期限":4), ("现金流":1.7, "剩余期限":5), ("现金流":1.7, "剩余期限":6), ("现金流":1.7, "剩余期限":7), ("现金流":1.7, "剩余期限":8), ("现金流":1.7, "剩余期限":9), ("现金流":101.7, "剩余期限":10));
Endt := 20230725t;
NSParamArr := array("lambda":0.5, "beta0":4, "beta1":-1, "beta2":1);
Delta := 20;
return NSBetaSensitivityCal(CashData, Endt, NSParamArr, Delta);
// array(1.02,0.8,0.19)
利率因子
####### 内容
- Bond_EffectiveDuration
- Bond_EffectiveConvexity
- Bond_KeyRateDuration
####### Bond_EffectiveDuration
用途:债券研究相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
算法ED=(P_ - P+)/(2 _ P0 _ Δy),
P0表示债券现金流贴现价格,
Δy表示利率变动值,
P_ 、P+分别表示债券收益率曲线向下或向上平移若干个基点后的债券价格范例
Setsysparam(PN_Stock(), 'SH194037');
endt := 20200101T;
return Bond_EffectiveDuration(EndT, 0.0001, 'BTS000033', 2);
// 执行结果:4.92925411770183
####### Bond_EffectiveConvexity
用途:债券研究相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
算法EC=(P_ + P+ - 2 _ P0)/(P0 _ (Δy)2)
P0表示债券现金流贴现价格,
Δy表示利率变动值,
P_ 、P+分别表示债券收益率曲线向下或向上平移若干个基点后的债券价格范例
Setsysparam(PN_Stock(), 'SH194037');
endt := 20200101T;
return Bond_EffectiveConvexity(EndT, 0.0001, 'BTS000033', 2);
// 执行结果:29.2364563483935
####### Bond_KeyRateDuration
用途:债券研究相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6(按示例顺序传入)。 返回:处理后的结果值。
算法
首先提取指定日债券收益率曲线数据,使用线性插值法获得关键年期即期利率。提取指定债券现金流数据,并通过权重分配计算前后关键年期的现金流映射数据,得到债券现金流对应的关键年期现金流数据。最后通过公式计算关键利率久期。关键利率久期的计算公式如下:
Dkrd,i=-1PPyi=P-,i-P+,i2P0?yi
其中,Dkrd,i为第i个关键期限点的关键利率久期;n为关键期限点个数;yi分别为第i个关键期限点的利率变动;P0为债券的估值全价,P-,i、P+,i为第i个关键期限点利率变动yi后对应的债券估值全价。范例
endt := 20200902T;
Ayear := 5;
RateChange := 0.0001;
keyyear := array(0, 0.25, 0.5, 1, 3, 5, 7, 10, 15, 20, 30, 50);
PBondID := "BTS000033";
Stockid := "BK020005";
N := 60;
Setsysparam(pn_Stock(), Stockid);
KRD := Bond_KeyRateDuration(Endt, Ayear, RateChange, keyyear, PbondID, N);
return KRD;
// 执行结果:0.248959583004042
利差因子
####### 内容
- Bond_GSpread
- Bond_ZSpread
####### Bond_GSpread
用途:债券研究相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
算法个券到期收益率与同期限基准曲线收益率的差值范例
Setsysparam(PN_Stock(), 'SH194037');
endt := 20230103T;
return Bond_GSpread(EndT, 'BTS000033', 2);
// 执行结果:1.16479423315908
####### Bond_ZSpread
用途:债券研究相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。
算法在收益率曲线的基础上,使得债券现金流贴现价格等于全价时所需添加的利差
P=t=1nCFt(1+ft+ZSpread)t范例
Setsysparam(PN_Stock(), 'SH194037');
endt := 20230103T;
return Bond_ZSpread(EndT, 'BTS000033', 2); // 1.17
绩效分析
内容
- 权重运算
权重运算
####### 内容
- fipwc_CalEndWeight
- fipwc_CalportfolioZF
- fipwc_DerBeginWeight
####### fipwc_CalEndWeight
用途:绩效分析相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:整数。
范例
sw := array(200, 50);
zf := array(50, 0);
return fipwc_CalEndWeight(sw, zf);
// 结果:array(150.0,25.0)
####### fipwc_CalportfolioZF
用途:绩效分析相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
sw := array(200, 50);
zf := array(50, 0);
return fipwc_CalportfolioZF(sw, zf);
// 结果:100
####### fipwc_DerBeginWeight
用途:绩效分析相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
w := array(50, 33.3);
zf := array(20, 33.3);
return fipwc_DerBeginWeight(w, zf);
// 结果:array(49.99,29.97)
风险模型
内容
- 应用
应用
####### 内容
- 风险分析
####### 风险分析
######## 内容
- RM_ES
- RM_pfBeta
- RM_Sigma
- RM_StockBeta
- RM_VaR
- 算法层
######## RM_ES
范例
PData := array(("代码":"SH600519", "比例(%)":2),
("代码":"SH601318", "比例(%)":2),
("代码":"SH600036", "比例(%)":2),
("代码":"SH600276", "比例(%)":2),
("代码":"SH601166", "比例(%)":2));
FactorExp := array(
("代码":"SH600519", "市值因子":1.15, "贝塔因子":-0.50, "动量因子":0.46), ("代码":"SH601318", "市值因子":1.15, "贝塔因子":-0.44, "动量因子":-0.17),
("代码":"SH600036", "市值因子":1.15, "贝塔因子":-0.63, "动量因子":0.28),
("代码":"SH600276", "市值因子":1.15, "贝塔因子":-0.59, "动量因子":-0.40),
("代码":"SH601166", "市值因子":1.15, "贝塔因子":-1.33, "动量因子":0.10));
FactorRetCov := array(
"市值因子":("市值因子":0.07, "贝塔因子":0.01, "动量因子":0.03),
"贝塔因子":("市值因子":0.01, "贝塔因子":0.07, "动量因子":-0.01),
"动量因子":("市值因子":0.03, "贝塔因子":-0.01, "动量因子":0.09));
SpecificRetVar := array(("代码":"SH600036", "特质收益方差":6.59),
("代码":"SH600276", "特质收益方差":15.43),
("代码":"SH600519", "特质收益方差":7.66),
("代码":"SH601166", "特质收益方差":6.07),
("代码":"SH601318", "特质收益方差":6.66));
ConfidenceInterval := 95;
return RM_ES(PData, FactorExp, FactorRetCov, SpecificRetVar, ConfidenceInterval);
// 返回:0.28
######## RM_pfBeta
范例
PData := array(("代码":"SH600519", "比例(%)":2),
("代码":"SH601318", "比例(%)":2),
("代码":"SH600036", "比例(%)":2),
("代码":"SH600276", "比例(%)":2),
("代码":"SH601166", "比例(%)":2));
BData := array(("代码":"SH600519", "比例(%)":13.22),
("代码":"SH601318", "比例(%)":12.40),
("代码":"SH600036", "比例(%)":7.16),
("代码":"SH600276", "比例(%)":5.48),
("代码":"SH601166", "比例(%)":4.00));
FactorExp := array(
("代码":"SH600519", "市值因子":1.15, "贝塔因子":-0.50, "动量因子":0.46), ("代码":"SH601318", "市值因子":1.15, "贝塔因子":-0.44, "动量因子":-0.17),
("代码":"SH600036", "市值因子":1.15, "贝塔因子":-0.63, "动量因子":0.28),
("代码":"SH600276", "市值因子":1.15, "贝塔因子":-0.59, "动量因子":-0.40),
("代码":"SH601166", "市值因子":1.15, "贝塔因子":-1.33, "动量因子":0.10));
FactorRetCov := array(
"市值因子":("市值因子":0.07, "贝塔因子":0.01, "动量因子":0.03),
"贝塔因子":("市值因子":0.01, "贝塔因子":0.07, "动量因子":-0.01),
"动量因子":("市值因子":0.03, "贝塔因子":-0.01, "动量因子":0.09));
SpecificRetVar := array(("代码":"SH600036", "特质收益方差":6.59),
("代码":"SH600276", "特质收益方差":15.43),
("代码":"SH600519", "特质收益方差":7.66),
("代码":"SH601166", "特质收益方差":6.07),
("代码":"SH601318", "特质收益方差":6.66));
return RM_pfBeta(PData, BData, FactorExp, FactorRetCov, SpecificRetVar);
// 返回:0.21
######## RM_Sigma
范例
PData := array(("代码":"SH600519", "比例(%)":2),
("代码":"SH601318", "比例(%)":2),
("代码":"SH600036", "比例(%)":2),
("代码":"SH600276", "比例(%)":2),
("代码":"SH601166", "比例(%)":2));
FactorExp := array(
("代码":"SH600519", "市值因子":1.15, "贝塔因子":-0.50, "动量因子":0.46), ("代码":"SH601318", "市值因子":1.15, "贝塔因子":-0.44, "动量因子":-0.17),
("代码":"SH600036", "市值因子":1.15, "贝塔因子":-0.63, "动量因子":0.28),
("代码":"SH600276", "市值因子":1.15, "贝塔因子":-0.59, "动量因子":-0.40),
("代码":"SH601166", "市值因子":1.15, "贝塔因子":-1.33, "动量因子":0.10));
FactorRetCov := array(
"市值因子":("市值因子":0.07, "贝塔因子":0.01, "动量因子":0.03),
"贝塔因子":("市值因子":0.01, "贝塔因子":0.07, "动量因子":-0.01),
"动量因子":("市值因子":0.03, "贝塔因子":-0.01, "动量因子":0.09));
SpecificRetVar := array(("代码":"SH600036", "特质收益方差":6.59),
("代码":"SH600276", "特质收益方差":15.43),
("代码":"SH600519", "特质收益方差":7.66),
("代码":"SH601166", "特质收益方差":6.07),
("代码":"SH601318", "特质收益方差":6.66));
return RM_Sigma(PData, FactorExp, FactorRetCov, SpecificRetVar);
// 返回:0.13
######## RM_StockBeta
范例
BData := array(("代码":"SH600519", "比例(%)":13.22),
("代码":"SH601318", "比例(%)":12.40),
("代码":"SH600036", "比例(%)":7.16),
("代码":"SH600276", "比例(%)":5.48),
("代码":"SH601166", "比例(%)":4.00));
FactorExp := array(
("代码":"SH600519", "市值因子":1.15, "贝塔因子":-0.50, "动量因子":0.46), ("代码":"SH601318", "市值因子":1.15, "贝塔因子":-0.44, "动量因子":-0.17),
("代码":"SH600036", "市值因子":1.15, "贝塔因子":-0.63, "动量因子":0.28),
("代码":"SH600276", "市值因子":1.15, "贝塔因子":-0.59, "动量因子":-0.40),
("代码":"SH601166", "市值因子":1.15, "贝塔因子":-1.33, "动量因子":0.10));
FactorRetCov := array(
"市值因子":("市值因子":0.07, "贝塔因子":0.01, "动量因子":0.03),
"贝塔因子":("市值因子":0.01, "贝塔因子":0.07, "动量因子":-0.01),
"动量因子":("市值因子":0.03, "贝塔因子":-0.01, "动量因子":0.09));
SpecificRetVar := array(("代码":"SH600036", "特质收益方差":6.59),
("代码":"SH600276", "特质收益方差":15.43),
("代码":"SH600519", "特质收益方差":7.66),
("代码":"SH601166", "特质收益方差":6.07),
("代码":"SH601318", "特质收益方差":6.66));
return RM_StockBeta(BData, FactorExp, FactorRetCov, SpecificRetVar);
// 返回:
######## RM_VaR
范例
PData := array(("代码":"SH600519", "比例(%)":2),
("代码":"SH601318", "比例(%)":2),
("代码":"SH600036", "比例(%)":2),
("代码":"SH600276", "比例(%)":2),
("代码":"SH601166", "比例(%)":2));
FactorExp := array(
("代码":"SH600519", "市值因子":1.15, "贝塔因子":-0.50, "动量因子":0.46), ("代码":"SH601318", "市值因子":1.15, "贝塔因子":-0.44, "动量因子":-0.17),
("代码":"SH600036", "市值因子":1.15, "贝塔因子":-0.63, "动量因子":0.28),
("代码":"SH600276", "市值因子":1.15, "贝塔因子":-0.59, "动量因子":-0.40),
("代码":"SH601166", "市值因子":1.15, "贝塔因子":-1.33, "动量因子":0.10));
FactorRetCov := array(
"市值因子":("市值因子":0.07, "贝塔因子":0.01, "动量因子":0.03),
"贝塔因子":("市值因子":0.01, "贝塔因子":0.07, "动量因子":-0.01),
"动量因子":("市值因子":0.03, "贝塔因子":-0.01, "动量因子":0.09));
SpecificRetVar := array(("代码":"SH600036", "特质收益方差":6.59),
("代码":"SH600276", "特质收益方差":15.43),
("代码":"SH600519", "特质收益方差":7.66),
("代码":"SH601166", "特质收益方差":6.07),
("代码":"SH601318", "特质收益方差":6.66));
ConfidenceInterval := 95;
return RM_VaR(PData, FactorExp, FactorRetCov, SpecificRetVar, ConfidenceInterval);
// 返回:0.22
######## 算法层
######### 内容
- FFI_ES
- FFI_pfBeta
- FFI_Sigma
- FFI_StockBeta
- FFI_VaR
######### FFI_ES
范例
w_p := array(0.02, 0.02, 0.02, 0.02, 0.02);
X := array((1.149137, -1.274572), (1.006287, -1.158997),
(1.149137, -1.737788), (1.149137, 0.195703),
(0.878002, 0.686087)
);
F := array((0.047695, 0.008424), (0.008424, 0.051119));
Delta := array(7.662437, 6.661245, 6.594110, 15.436516, 6.071548);
ConfidenceInterval := 95;
return FFI_ES(w_p, X, F, Delta, ConfidenceInterval);
// 返回:0.27
######### FFI_pfBeta
范例
w_b := array(0.13215, 0.12403, 0.0716, 0.05476, 0.03995);
w_p := array(0.02, 0.02, 0.02, 0.02, 0.02);
X := array((1.149137, -1.274572), (1.006287, -1.158997),
(1.149137, -1.737788), (1.149137, 0.195703),
(0.878002, 0.686087)
);
F := array((0.047695, 0.008424), (0.008424, 0.051119));
Delta := array(7.662437, 6.661245, 6.594110, 15.436516, 6.071548);
return FFI_pfBeta(w_b, w_p, X, F, Delta);
// 返回:4.03
######### FFI_Sigma
范例
w_p := array(0.02, 0.02, 0.02, 0.02, 0.02);
X := array((1.149137, -1.274572), (1.006287, -1.158997),
(1.149137, -1.737788), (1.149137, 0.195703),
(0.878002, 0.686087)
);
F := array((0.047695, 0.008424), (0.008424, 0.051119));
Delta := array(7.662437, 6.661245, 6.594110, 15.436516, 6.071548);
return FFI_Sigma(w_p, X, F, Delta);
// 返回:0.13
######### FFI_StockBeta
范例
w_b := array(0.13215, 0.12403, 0.0716, 0.05476, 0.03995);
X := array((1.149137, -1.274572), (1.006287, -1.158997),
(1.149137, -1.737788), (1.149137, 0.195703),
(0.878002, 0.686087)
);
F := array((0.047695, 0.008424), (0.008424, 0.051119));
Delta := array(7.662437, 6.661245, 6.594110, 15.436516, 6.071548);
return FFI_StockBeta(w_b, X, F, Delta);
// 返回:
######### FFI_VaR
范例
w_p := array(0.02, 0.02, 0.02, 0.02, 0.02);
X := array((1.149137, -1.274572), (1.006287, -1.158997),
(1.149137, -1.737788), (1.149137, 0.195703),
(0.878002, 0.686087));
F := array((0.047695, 0.008424), (0.008424, 0.051119));
Delta := array(7.662437, 6.661245, 6.594110, 15.436516, 6.071548);
ConfidenceInterval := 95;
return FFI_VaR(w_p, X, F, Delta, ConfidenceInterval);
// 返回:0.22
因子研究
内容
- 因子计算
- 绩效分析
- 因子组
因子计算
####### 内容
- 数据获取
####### 数据获取
######## 内容
- 中间函数
######## 中间函数
######### 内容
- MF_GetBenchmarketRate
- MF_Industry_Current
- MF_Industry_New
######### MF_GetBenchmarketRate
范例
范例1:单个指数作为基准
IndexID := "SH000300";
BegT := 20230801t;
EndT := 20230901t;
return Method := 1; // 涨幅法
return MF_GetBenchmarketRate(IndexID, BegT, EndT, return Method);
返回:
范例2:多个券合成基准
IndexID := array("SZ00001", "SH600000", "SZ000002");
BegT := 20230801t;
EndT := 20230901t;
return Method := 1; // 涨幅法
return MF_GetBenchmarketRate(IndexID, BegT, EndT, return Method);
返回:
######### MF_Industry_Current
范例
oV := BackUpSystemParameters2();
setsysparam(pn_stock(), 'SH601318');
setsysparam(pn_date(), 20241206T);
IndustryType := 1;
type := 2;
level := 1;
return MF_Industry_Current(IndustryType, type, level); // "SWHY490000"
######### MF_Industry_New
范例
oV := BackUpSystemParameters2();
setsysparam(pn_stock(), 'SH601318');
setsysparam(pn_date(), 20241206T);
IndustryType := 1;
type := 2;
level := 1;
return MF_Industry_New(IndustryType, type, level); // "SW801790"
绩效分析
####### 内容
- 净值趋势评价
####### 净值趋势评价
######## 内容
- FIP_Trend_CrossMAPercent
- FIP_Trend_NHPercent
- FIP_Trend_OverMAPercent
- FIP_Trend_TrendPower
- FI_Trend_CrossMAPercent
- FI_Trend_NHPercent
- FI_Trend_OverMAPercent
- FI_Trend_TrendPower
######## FIP_Trend_CrossMAPercent
范例
p := array(10, 20, 50, 40, 20, 30);
MAnum := 3;
return FIP_Trend_CrossMAPercent(p, MAnum); // 20
######## FIP_Trend_NHPercent
范例
p := array(10, 20, 50, 40, 20, 30);
return FIP_Trend_NHPercent(p); // 40
######## FIP_Trend_OverMAPercent
范例
p := array(10, 20, 50, 40, 20, 30);
MAnum := 3;
return FIP_Trend_OverMAPercent(p, MAnum); // 60
######## FIP_Trend_TrendPower
范例
p := array(10, 20, 50, 40, 20, 30);
delta := 2;
return FIP_Trend_TrendPower(p, delta); // 25
######## FI_Trend_CrossMAPercent
范例
r := array(4.5, 2.3, -1.5, 2.5, -3.3, 3);
MAnum := 3;
return FI_Trend_CrossMAPercent(r, MAnum); // 66.6666666666667
######## FI_Trend_NHPercent
范例
r := array(4.5, 2.3, -1.5, 2.5, -3.3, 3);
return FI_Trend_NHPercent(r); // 50
######## FI_Trend_OverMAPercent
范例
r := array(4.5, 2.3, -1.5, 2.5, -3.3, 3);
MAnum := 3;
return FIP_Trend_OverMAPercent(r, MAnum); // 40
######## FI_Trend_TrendPower
范例
r := array(4.5, 2.3, -1.5, 2.5, -3.3, 3);
delta := 2;
return FI_Trend_TrendPower(r, delta); // 89.7011722230414
因子组
####### 内容
- TS_GroupFactorReturn
####### TS_GroupFactorReturn
用途:因子研究相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。
范例
return?TS_GroupFactorReturn(1004, 20240401T, 20240405T, cy_day());
量化择时
内容
- 市场结构
市场结构
####### 内容
- 涨停股
####### 涨停股
######## 内容
- 中间函数
######## 中间函数
######### 内容
- StockDTLBNumByEndt
- StockZtLBNumByEndt2
######### StockDTLBNumByEndt
范例
// SZ002123在20250218跌停连板次数统计
SetSysParam(pn_stock(), "SZ002123");
return StockDTLBNumByEndt(20250218T);
// 结果:2
######### StockZtLBNumByEndt2
范例
// "SH603139"在20250320的连板次数
setsysparam(pn_stock(), "SH603139");
return StockZtLBNumByEndt2(20250320T); // 结果:2
期权基本函数
内容
- 期权板块
期权板块
####### 内容
- OP_GetOptionList
####### OP_GetOptionList
用途:期权基本函数相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。
范例
// 获取20250806标的为上证50etf在市的期权合约
stockid := 'SH510050';
endt := 20250806T;
return OP_GetOptionList(StockID, endt);