#### 金融工程 ##### 内容 - CAPM - Dev - 策略验证 - 量化选股 - 股权分置 - 价值评估 - 期权定价 - 套利 - 投资组合 - 新股定价 - 指数研究 - 基金研究 - 量化数据接口 - 量化套利 - 债券研究 - 绩效分析 - 风险模型 - 因子研究 - 量化择时 - 期权基本函数 ##### CAPM ###### 内容 - BkRiskAndReturn_Pgm - BksRiskAndReturn_Pgm - StocksAlpha - StocksBeta - StocksBetaAlpha - StocksExpectedReturn - StocksResidual ###### BkRiskAndReturn_Pgm 用途:CAPM相关函数。 参数:arg1,arg2,arg3,arg4,arg5(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl // 返回深证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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl // 返回深证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范例 ```tsl 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范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl // 返回一组股票的α系数、β系数、平均收益率、收益率标准差、残差标准差及相关系数 StockArr := array("SH600460", "SZ000920", "SH600718"); IndexId := 'SH000300'; begt := inttodate(20110101); endt := inttodate(20110630); // 剔除begt还没上市的股票 delete from stockArr where spec(IsStockGoMarket(begt), thisrow) = 0; return StocksBetaAlpha(StockArr, IndexId, begt, endt); ``` ###### StocksExpectedReturn 用途:CAPM相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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)范例 ```tsl 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相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl SetSysParam(PN_Stock(), 'SZ000002'); SetSysParam(pn_date(), inttodate(20121017)); return BuySample(); // 结果:0 ``` ###### SelectStockIndex 用途:Dev相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:整数。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl SetSysParam(PN_Stock(), 'SZ000002'); SetSysParam(pn_date(), inttodate(20121017)); return sellSample(); // 判断万科A在2012-10-17在卖出策略sellSample()下是否卖出, 结果:0 ``` ###### TradingStrategyByBk 用途:Dev相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return TradingStrategyByBk("上证180;中证800", inttodate(20120625), inttodate(20121017), "SH000001", @BK_UpPercent3() >= 60, @StockZf3(), 1, 10, 10, 1); ``` ###### TradingStrategyByBk2 用途:Dev相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return TradingStrategyByBk2( "上证180", inttodate(20120725), inttodate(20121017), "SH000001", "BK_UpPercent3()+Ref(BK_UpPercent3(),1)+Ref(BK_UpPercent3(),2)", 3, 20); ``` ###### TradingByJSZB 用途:Dev相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl 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相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl SetRetBuyPrice(20); return GetSysParam('tmpBuyPrice'); // 结果:20 ``` ###### SetRetSellPrice 用途:Dev相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl SetRetSellPrice(50); return GetSysParam('tmpSellPrice'); // 结果:50 ``` ###### SetStockBuyInfo 用途:Dev相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl SetStockBuyInfo("SZ000002", 'BuyPrice', 8); return GetSysParam('BuyPrice'); ``` ###### StockBuyInfo 用途:Dev相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl SetStockBuyInfo("SZ000002", 'BuyPrice', 'kkkk'); SetSysParam(pn_stock(), 'SZ000002'); return StockBuyInfo("BuyPrice"); // 结果:’kkkk’ ``` ###### SetStockBuyPrice 范例 ```tsl SetStockBuyTime('SZ000002', inttodate(20121023)); return GetSysParam("BuyTime"); ``` ###### StockBuyPrice 用途:Dev相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl SetStockBuyInfo('SZ000002', 'BuyPrice', 5); SetSysParam(PN_Stock(), 'SZ000002'); return StockBuyPrice(); // 结果:5 ``` ###### SetStockBuyTime 用途:日期时间处理函数。 参数:arg1,arg2(按示例顺序传入)。 返回:日期或时间值。 范例 ```tsl SetStockBuyTime('SZ000002', inttodate(20121023)); return GetSysParam("BuyTime"); ``` ###### StockBuyTime 用途:日期时间处理函数。 参数:无。 返回:日期或时间值。 范例 ```tsl SetStockBuyInfo('SZ000002', 'BuyTime', inttodate(20121023)); SetSysParam(Pn_Stock(), 'SZ000002'); return StockBuyTime(); // 结果:41205 ``` ###### StockHoldingCount 用途:Dev相关函数。 参数:无。 返回:整数。 范例 ```tsl SetStockBuyInfo('SZ000002', 'HoldingInfo', 9); SetSysParam(Pn_Stock(), 'SZ000002'); return StockHoldingCount(); ``` 结果:9 ###### SelectStockIndex_Call 用途:Dev相关函数。 参数:无。 返回:整数。 范例 ```tsl 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 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return TSB_Data2("上证180;中证500", inttodate(20120925), inttodate(20121017)); ``` ###### StockBuyDiff 用途:Dev相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl SetStockBuyPrice('SZ000002', 8.04); SetSysParam(PN_Stock(), 'SZ000002'); return StockBuyDiff(); // 结果:4.47761 ``` ###### StockBuyTimeDiff 用途:日期时间处理函数。 参数:无。 返回:日期或时间值。 范例 ```tsl 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 范例 ```tsl 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 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:整数。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:整数。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return PortfolioBackTesting_Quantity_NetAsset(39818, 12, 36, 10); ``` ####### PortfolioBackTesting_Quantity_InvalidData 用途:策略验证相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl // 换股退市 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); ``` 结果 范例二: ```tsl // 现金退市 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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 范例 ```tsl setsysparam(pn_stock(), 'IF2301'); setsysparam(pn_date(), inttodate(20230105)); return GetContractMultiplier(); // 结果:300 ``` ######## GetMarginRatio 范例 ```tsl setsysparam(pn_stock(), 'IO2306-C-3100'); setsysparam(pn_date(), inttodate(20230105)); return GetMarginRatio(); // 结果:12 ``` ######## GetMarginRatio2 范例 ```tsl setsysparam(pn_stock(), 'IO2306-C-3100'); setsysparam(pn_date(), inttodate(20230105)); return GetMarginRatio2(); // 结果:50 ``` ######## DepositOfOption 范例 ```tsl 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 范例 ```tsl // 期权保证金 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 ``` 范例二: ```tsl // 期货保证金 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 范例 ```tsl 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 范例 范例一: ```tsl // 期权标的证券系统昨收 OptionID := 'OP10004679'; EndT := inttodate(20230104); isOpen := 1; return GetPriceOfUnderlying(OptionID, EndT, isOpen); // 结果:2.651 ``` 范例二: ```tsl // 期权标的证券收盘 OptionID := 'OP10004679'; EndT := inttodate(20230104); return GetPriceOfUnderlying(OptionID, EndT); // 结果:2.66 ``` ######## DepositOfOptionByGroup 范例 ```tsl // 这两个合约构成认沽熊市价差策略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 范例 ```tsl // 这两个合约构成认沽熊市价差策略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 范例 ```tsl Bondarr := array('SH196237', 'SZ101516', 'SH175901'); Endt := inttodate(20230116); return BondPayMentByEndt(Bondarr, Endt); ``` 结果 ######## GetBondMaturityTradeData 范例 ```tsl 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 范例 ```tsl return array( '不启用最低费用':GetLowestFee(999536, 0.01, 0, 0, 100, 100), '启用最低费用': GetLowestFee(999536, 0.01, 0, 1, 100, 100) ); // 结果:array("不启用最低费用":99.9536,"启用最低费用":100) ``` ######## TSTrade_CalCC 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:整数。 范例 ```tsl PfInfoData := array(); return PortfolioBackTesting_IndexFund_DataCheck(PFInfoData, 'SH000300'); ``` ####### PortfolioBackTesting_IndexFund_GetIndexSamples 用途:策略验证相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:整数。 范例 ```tsl 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 用途:策略验证相关函数。 参数:无。 返回:整数。 范例 ```tsl return PortfolioBackTesting_IndexFund_GetIndexSamplesByMarketValue( 'SH000300', inttodate(20121029), inttodate(20121030)); ``` ####### PortfolioBackTesting_IndexFund_GetTradingData 范例 ```tsl 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(按示例顺序传入)。 返回:整数。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return PortfolioBackTesting_InitInvestmentRatio(inttodate(20121029), 100000); // 对资产配资初始化 ``` ####### PortfolioBackTesting_BenchmarkReturn 用途:策略验证相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl t := array(('截止日':41213, '净值收益率(%)':0.012), ('截止日':41214, '净值收益率(%)':0.018), ('截止日':41215, '净值收益率(%)':0.022)); PortfolioBackTesting_BenchmarkReturn('SH000300', t); return T; ``` ####### PortfolioBackTesting_BuySellDefaultRatio 用途:策略验证相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return PortfolioBackTesting_TransactionPrice('SH600000', inttodate(20121029), 1); // 结果:7.46 ``` ####### PortfolioBackTesting_AdjustVolByBonusShare 用途:策略验证相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl tpGP := array( ("代码":"SH600143", "名称":"金发科技", "数量":288760.00), ("代码":"SH600601", "名称":"方正科技", "数量":1334310.00), ("代码":"SH600839", "名称":"四川长虹", "数量":1368608.00)); return PortfolioBackTesting_AdjustVolByBonusShare(tpGP, inttodate(20070702)); ``` ####### PortfolioBackTesting_GetBenchmarkReturn 用途:策略验证相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return PortfolioBackTesting_GetBenchmarkReturn( 'SH000300', inttodate(20070701), inttodate(20120301), 95); ``` ####### PortfolioBackTesting_TransactionVol 用途:策略验证相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return PortfolioBackTesting_TransactionVol(1, 0.3, 0.2, 20030); // 结果:20000 ``` ####### PortfolioBackTesting_CalBenchmarkReturn 用途:策略验证相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。 范例 范例一: ```tsl // 单个市场指数作为基准:沪深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); ``` 结果 范例二: ```tsl // 多个市场市场指数加权作为基准 // 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl stocks := 'SH600053;SH600836;SH600963;SH600966;SZ000488;SZ000506;SZ00069'; endt := inttodate(20120925); return EV_PE(endt, false, stocks); ``` ###### EV_PB 用途:价值评估相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl stocks := 'SH600053;SH600836;SH600963;SH600966;SZ000488;SZ000506;SZ00069'; endt := inttodate(20120925); return EV_PB(Stocks, endt); ``` ###### EV_FCFF_I 用途:价值评估相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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 - sf*Normal2* ###### BinomialTreeOfStock 用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return BinomialTreeOfStock(0, 50, 50, 10, 40, 5, 3); ``` ###### BinomialTreeOfFuture 用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl // 用二叉树对期货美式看涨期权进行定价 return BinomialTreeOfFuture(0, 300, 350, 5, 10, 5, 3); ``` 结果如截图: 参考详细说明:期权定价基础模型 ###### BinomialTreeOfCoin 用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return BinomialTreeOfCoin(0, 1.61, 1.6, 8, 10, 12, 12, 3); ``` ###### B_SOfStock 用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return B_SOfStock(0, 4.62, 4.5, 5, 26, 12); ``` ###### B_SofIndex 用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7(按示例顺序传入)。 返回:整数。 范例 ```tsl return B_SOfIndex(0, 310, 300, 8, 3, 20, 2); ``` ###### B_SofCoin 用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl // 用B-S 对外汇看跌期权进行定价 return B_SOfCoin(1, 1.61, 1.6, 5, 3, 10, 5); ``` 结果如截图: 参考详细说明:期权定价基础模型 ###### B_SofFuture 用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return B_SOfFuture(0, 20, 20, 9, 25, 4); ``` ###### BinomialTreeOfIndex 用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8(按示例顺序传入)。 返回:整数。 范例 ```tsl return BinomialTreeOfIndex(0, 1.61, 1.6, 8, 10, 12, 12, 3); ``` ###### B_SOfStock_1 用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return B_SOfStock_1(0, 4.62, 4, 5, 0.98, 12); ``` ###### Black_Scholes 用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return Black_Scholes(0, 0, 42, 40, 10, 20, 0.5, 0); ``` ###### B_SOfStock_IV 用途:期权定价相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl // 用 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return BinomialTree(0, 0, 42, 40, 10, 20, 0.5, 0, 2); ``` ###### sf*Normal2* 范例 ```tsl return sf_Normal2_(0.77); ``` 结果:0.77935 ##### 套利 ###### 内容 - ETF50SampleData ###### ETF50SampleData 用途:套利相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return PortfolioHVByPE("深证A股;上证A股", inttodate(20120912), inttodate(20121022), 500, 3, 1, 10, 2, 1); ``` ###### StocksPortfolio_Pgm 用途:投资组合相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return StocksPortfolio_Pgm("沪深300", inttodate(20120712), inttodate(20121022), 1, 0, false, -0.3, 5); ``` ###### NPartPortfolio_Pgm 用途:投资组合相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return NPartPortfolio_Pgm("申万采掘", '', @StockPE3_V(), 10, 0, @(reportofall(9900000, DefaultRepID()) > 0), inttodate(20120920), inttodate(20121020), 1, 2, "SH000001", true); ``` ###### PortfolioTestByAny_Pgm 用途:投资组合相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return PortfolioTrack("Data", 500, inttodate(20120721), inttodate(20121022)); ``` ####### StocksPortfolio 用途:投资组合相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return StocksPortfolio( array('SH600001', 'SH600000'), inttodate(20120721), inttodate(20121002), 0, 0, 0, true, ""); ``` ####### pf_CallBack1 用途:投资组合相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return pf_CallBack1(array(3, 4, 5), 2); // 结果:0.3872 ``` ####### pf_IncomeMaxCallBack 用途:进行数值统计计算。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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 用途:投资组合相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return AdjustSampleByAny( "深证A股", inttodate(20120916), 500, @close(), false, 0, 7, 9, 0, @true); ``` ####### PortfolioByAny 用途:投资组合相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return PortfolioByAny( array("SH600718", "SZ000920"), inttodate(20120916), @open(), 1, 0, 7, 8, @true); ``` ####### PortfolioTrackingByAny 用途:投资组合相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl begt := inttodate(20121018); endt := inttodate(20121026); return NeedAdjustSampleByDays(begt, endt, 9); // 结果:0 ``` ###### Markowitz ####### 内容 - MarkowitzBasicData - MarkowitzVARRp - pf_StocksCovMatrix - pf_StocksZfMatrix ####### MarkowitzBasicData 用途:投资组合相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl StockArr := array("SZ000099", "SH600000", "SZ000002"); return MarkowitzBasicData( StockArr, inttodate(20120818), inttodate(20121019)); // 结果:-0.01625 ``` ####### MarkowitzVARRp 用途:投资组合相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl tb := array((1, 2, 3), (1, 3, 4), (3, 2, 5)); return pf_StocksCovMatrix(tb); ``` ####### pf_StocksZfMatrix 用途:投资组合相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl StockArr := array("SZ000099", "SH600000", "SZ000001", "SZ000002"); begt := inttodate(20021015); endt := inttodate(20021025); return pf_StocksZfMatrix(StockArr, begt, endt); ``` ###### Misc ####### 内容 - EncodePortfolioName ####### EncodePortfolioName 用途:投资组合相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return EncodePortfolioName( "某股票", inttodate(20120618), i nttodate(20120919), 0, 0, 0, 0); // 结果:’某股票,从20120618到20120919,Markowitz法,限定收益为0求风险最小’ ``` ###### SIM ####### 内容 - SIMBasicData - SIMSumAlphap - SIMSumBetap - SIMSumVarEj - SIMVARRp - StockBetaAlphaMatix - StockVAREj ####### SIMBasicData 用途:投资组合相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return SIMBasicData( array("SH600718", "SH600100"), inttodate(20120618), inttodate(20120919)); // 结果:-0.07634 ``` ####### SIMSumAlphap 用途:进行数值统计计算。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl SIMBasicData( array("SH600718", "SH600100"), inttodate(20120618), inttodate(20120919)); // 使用SIM方法计算基本数据,参考 SIMBasicData () return SIMSumAlphap(array(1, 2)); ``` 结果:0.00266 ####### SIMSumBetap 用途:进行数值统计计算。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl SIMBasicData( array("SH600718", "SH600100"), inttodate(20120618), inttodate(20120919)); // 使用SIM方法计算基本数据,参考 SIMBasicData () return SIMSumBetap(array(1, 2)); // 结果:0.03314 ``` ####### SIMSumVarEj 用途:进行数值统计计算。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl SIMBasicData( array("SH600718", "SH600100"), inttodate(20120618), inttodate(20120919)); // 使用SIM方法计算基本数据, 参考 SIMBasicData () return SIMSumVarEj (array(1, 2)); // 结果:0.00045 ``` ####### SIMVARRp 用途:投资组合相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl SIMBasicData( array("SH600718", "SH600100"), inttodate(20120618), inttodate(20120919)); // 使用SIM方法计算基本数据, 参考 SIMBasicData () return SIMVARRp(array(1, 2)); // 结果:0.00143 ``` ####### StockBetaAlphaMatix 用途:投资组合相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return AllBKYieldAndRisk(20, inttodate(20120628)); ``` ####### BKyieldAndRisk 用途:投资组合相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return BKyieldAndRisk("深证A股", 20, inttodate(20120728)); ``` ####### yieldAndRisk 用途:投资组合相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return yieldAndRisk("深证A股", 20, inttodate(20120728)); ``` ###### 投资组合历史验证 ####### 内容 - PortfolioByPE - PortfolioGraph - PortfolioPercent - PortfolioTrack_Pgm - PortfolioTracking ####### PortfolioByPE 用途:投资组合相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl StockArr := array("SH600718", "SZ000920", "SH600000"); EndT := inttodate(20120828); return PortfolioByPE(StockArr, EndT, 1, 2); ``` ####### PortfolioGraph 用途:投资组合相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl SetSysParam(PN_DATE(), INTTODATE(20121029)); t := nday(100, '日期', sp_time(), '指数', spec(close(), 'SZ000002'), '组合指数', SPEC(CLOSE(), 'SZ000001')); return PortfolioGraph(t); ``` ####### PortfolioPercent 用途:投资组合相关函数。 参数:arg1,arg2,arg3,arg4(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl StockArr := array("SH600718", "SZ000920"); endt := inttodate(20120918); return PortfolioPercent(StockArr, endt, 500, 0); ``` ####### PortfolioTrack_Pgm 用途:投资组合相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return PortfolioTrack_Pgm("data", 500, inttodate(20120718), inttodate(20121019)); ``` ####### PortfolioTracking 用途:投资组合相关函数。 参数:arg1,arg2,arg3,arg4,arg5,arg6,arg7(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return AdjustSmaple("深证A股;上证A股", inttodate(20120926), 500, 11, 20, 0); ``` ####### BKBetaAlphaIndexRelative 用途:投资组合相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:整数。 范例 ```tsl // 获取当前组合中个股与指数的Beta系数、Alpha值与相关系数 // 计算当前板块“申万采掘服务“中个股与上证指数在2012-9-26日至2020-12-31日区间的相关性 setsysparam(pn_date(), 20201231T); return BKBetaAlphaIndexRelative("申万采掘服务", "SH000001", inttodate(20120926)); ``` ####### BKCorrelMatrix 用途:投资组合相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl // 计算两个股票与上证指数在2019-9-26日至2020-12-31日区间的相关系数矩阵 setsysparam(pn_date(), 20201231T); return BKCorrelMatrix("申万采掘服务", 20190926T); ``` ####### BetaAlphaIndexRelative 用途:投资组合相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:整数。 范例 ```tsl // 获取当前组合中个股与指数的Beta系数、Alpha值与相关系数 // 计算两个股票与上证指数在2012-9-26日至2020-12-31日区间的相关性 setsysparam(pn_date(), 20191231T); stocks := array("SH600718", "SZ000920"); return BetaAlphaIndexRelative(stocks, "SH000001", 20120926T); ``` ####### CorrelMatrix 用途:投资组合相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl // 组合个股相关矩阵 setsysparam(pn_date(), 20201231T); stocks := array("SH600718", "SZ000920"); return CorrelMatrix(stocks, inttodate(20120926)); ``` ####### NeedAdjustSmaple 用途:投资组合相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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 用途:新股定价相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return NSPP_HistoryVerify_Pgm( "深证A股;上证A股", Inttodate(20120618), inttodate(20120926)); ``` ###### NSPP_Pgm 用途:新股定价相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return NSPP_Pgm("深证A股;上证A股", inttodate(20040307), Inttodate(20041025), "SH600966"); ``` ###### NSPP_HistoryVerify 用途:新股定价相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return NSPP_HistoryVerify(getbk('上证A股'), inttodate(20120618), inttodate(20120926)); ``` ###### NewStockPredictPrice 用途:新股定价相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return NewStockPredictPrice(array("SH600718", "SZ000002")); ``` ###### NewStockPredictValue 用途:新股定价相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return NewStockPredictValue(getbk("深证A股;上证A股"), inttodate(20040307), inttodate(20041025), "SH600966"); ``` ##### 指数研究 ###### 内容 - ManyBksKLine - ManyBksKLine_II - StockVsIndexKLine - IndexKLine_AdjustSampleByDate_II - 复合指数 - 股票指数 - 基金指数 - 临时指数 - 债券指数 - 中间函数 - 最新 - 景气度 ###### ManyBksKLine 用途:指数研究相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return ManyBksKLine("上证A股;沪深300", "SH000001", -1, inttodate(20120818), inttodate(20120926), 0, true, 2, cy_Day(), 1); ``` ###### ManyBksKLine_II 用途:指数研究相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl UserDefArr := array(('代码':'SZ000001', '名称':'平安银行', '比例(%)':40), ('代码':'SH6000010', '名称':'浦发银行', '比例(%)':30), ('代码':'SZ000002', '名称':'万科A', '比例(%)':30)); return ManyBksKLine_II(UserDefArr, 'SH000001', -1, inttodate(20120818), inttodate(20120918), CY_DAY(), 1); ``` ###### StockVsIndexKLine 用途:指数研究相关函数。 参数:无。 返回:整数。 范例 ```tsl return StockVsIndexKLine("SH600718", "SH000001", "SH600567", -1, inttodate(20120618), inttodate(20120926), 1, true, 2, cy_day(), 1); ``` ###### IndexKLine_AdjustSampleByDate_II 用途:日期时间处理函数。 参数:无。 返回:整数。 范例 ```tsl 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 用途:指数研究相关函数。 参数:无。 返回:整数。 范例 ```tsl return Index_NoAdjustStock_Quick( array("SZ000920", "SZ000002"), 1000, inttodate(20120818), inttodate(20120926), 0, 1); ``` ####### ShareStructureOfSample 用途:指数研究相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return ShareStructureOfSample(array("SH600718")); ``` ####### PF_Percent 用途:指数研究相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return PF_Percent(array("SH600320", "SH600489", "SH000000"), inttodate(20120618), 0); ``` ###### 股票指数 ####### 内容 - BkAndIndexKLine - CalculateStockIndex - FHSPTable - FHSPTableOfLido - FHSPTableOfTinysoft - BkVsBkKLine_tab - BkVsIndexKLine_tab - CheckInPutData_UP - GetInputStocks_UP ####### BkAndIndexKLine 用途:指数研究相关函数。 参数:无。 返回:整数。 范例 ```tsl return BkAndIndexKLine( array("SH600718", "SZ000002"), "上证A股", "SH600718", 1000, inttodate(20020618), inttodate(20020926), 0, true, 2, CY_day(), 1); ``` ####### CalculateStockIndex 用途:指数研究相关函数。 参数:无。 返回:整数。 范例 ```tsl return CalculateStockIndex( array("SZ000920", "SH600718"), 1000, inttodate(20120618), inttodate(20120926), 0, false, 2, 0); ``` ####### FHSPTable 用途:指数研究相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl SetSysParam(PN_Stock(), 'SZ000002'); return FHSPTable(true); ``` ####### FHSPTableOfLido 用途:指数研究相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl SetSysParam(PN_Stock(), 'SZ000002'); return FHSPTableOfLido (true); ``` ####### FHSPTableOfTinysoft 用途:指数研究相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl SetSysParam(PN_Stock(), 'SZ000002'); return FHSPTableOfTinysoft (true); ``` ####### BkVsBkKLine_tab 用途:指数研究相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return BkVsBkKLine_tab("金融、保险业", 1000, inttodate(20120618), inttodate(20120926), 0, true, 2, cy_day()); ``` ####### BkVsIndexKLine_tab 用途:指数研究相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:整数。 范例 ```tsl SetSysParam(pn_bk(), '深证A股'); return BkVsIndexKLine_tab("SH000001", 1000, inttodate(20120618), inttodate(20120926), 1, true, 2, cy_day()); ``` ####### CheckInPutData_UP 用途:指数研究相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl t := array(('代码':'SZ000002', '比例(%)':20), ('代码':'SZ000001', '比例(%)':40)); return CheckInPutData_UP(t); // 检查数据表t是否含有’代码’,’比例(%)’字段 //结果:1 ``` ####### GetInputStocks_UP 用途:指数研究相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl t := array(('代码':'SZ000003'), ('代码':'SZ000001')); return GetInputStocks_UP(t); ``` ###### 基金指数 ####### 内容 - CaculateFundIndex - FundFHSPTable ####### CaculateFundIndex 用途:指数研究相关函数。 参数:无。 返回:整数。 范例 ```tsl return CaculateFundIndex( array("SH500001", "SH500002", "SH500003"), 1.59, inttodate(20120618), inttodate(20120926), 1, true, 3, 1); ``` ####### FundFHSPTable 用途:指数研究相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl SetSysParam(PN_Stock(), 'SH500001'); return FundFHSPTable (true); ``` ###### 临时指数 ####### 内容 - BkVsBkKLine\_ - BkVsIndexKLine\_ - IndexLineMergeBak - ManyBksKLine\_ - StockVsIndexKLine\_ ####### BkVsBkKLine\_ 范例 ```tsl return BkVsBkKLine_( "申万采掘", "申万电子", 1000, inttodate(20120618), inttodate(20120926), 0, true, 2, cy_day(), 1); ``` ####### BkVsIndexKLine\_ 范例 ```tsl return BkVsIndexKLine_( '深证A股', 'SH000001', 1000, inttodate(20120618), inttodate(20120926), 1, true, 2, cy_day(), 1); ``` ####### IndexLineMergeBak - BkVsBkKLine\_ - BkVsIndexKLine\_ - IndexLineMergeBak - ManyBksKLine\_ - StockVsIndexKLine\_ ####### ManyBksKLine\_ 范例 ```tsl begt := inttodate(20120618); endt := inttodate(20121026); return ManyBksKLine_( "申万采掘;申万金融服务", 1000, begt, endt, 0, true, 2, cy_week()); ``` ####### StockVsIndexKLine\_ 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl r := array(); SetSysParam(PN_Stock(), 'SZ00002'); AddExInfoToArray(r, inttodate(20120618), 0, 0); return r; ``` ####### BondTrueExDate 用途:日期时间处理函数。 参数:arg1(按示例顺序传入)。 返回:日期或时间值。 范例 ```tsl PredictDate := inttodate(20120618); BondTrueExDate(PredictDate); return PredictDate; ``` ####### DeleteBondByCriterion 用途:指数研究相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:日期或时间值。 范例 ```tsl return GetMaxListedDate(array("SZ000920", "SH600718", "SH600900")); ``` ####### IndexDataToShowable 用途:指数研究相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:整数。 范例 ```tsl 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(按示例顺序传入)。 返回:整数。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:整数。 范例 ```tsl return KLineDataForIndex("SH600206", inttodate(20120618), inttodate(20120926)); ``` ####### ManyBkLineMerge 用途:指数研究相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:整数。 范例 ```tsl return VolDataForIndex("SH600206", inttodate(20120618), inttodate (20120926)); ``` ###### 最新 ####### 内容 - StandarizeBkData_III - CalculateBkIndex - StandarizeBkData_II - StandarizeBkData_I - CalculateFundBkIndex ####### StandarizeBkData_III 用途:指数研究相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return StandarizeBkData_III(array("SZ002001", "SZ002020", "SZ002022", "SZ002050"), 0, inttodate(20020618)); ``` ####### CalculateBkIndex 用途:指数研究相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:整数。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl t := array(('代码':'SZ000002', '日期':41209), ('代码':'SZ000001', '日期':41209)); return StandarizeBkData_II(t, 0); ``` ####### StandarizeBkData_I 用途:指数研究相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl t := array(('代码':'SZ000003', '日期':nil), ('代码':'SZ000002', '日期':41209), ('代码':'SZ000001', '日期':nil)); return StandarizeBkData_I(t); ``` ####### CalculateFundBkIndex 用途:指数研究相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:整数。 范例 ```tsl 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(按示例顺序传入)。 返回:整数。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl FundInds := array("TSJJ0201", "TSJJ0203"); EndT := 20250409T; NType := 1; N := 5; DTime := 20250408T + 15 / 24; return Funds_GetJZModifiedList(FundInds, EndT, NType, N, DTime); ``` ####### OpenEndFundFilterByFundIndex 用途:基金研究相关函数。 参数:arg1(按示例顺序传入)。 返回:整数。 范例 ```tsl sp_s(pn_date(), today()); return OpenEndFundFilterByFundIndex(array('TSJJ0203', 'TSJJ0201')); // 股、混 ``` ###### 关联度分析 ####### 内容 - 关联矩阵 ####### 关联矩阵 ######## 内容 - 矩阵转化 ######## 矩阵转化 ######### 内容 - Network_Conv_AdjDir - Network_Conv_ToDist ######### Network_Conv_AdjDir 范例 ```tsl 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 范例 ```tsl 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 日的测算仓位(%) ```tsl sp_s(PN_Date(), 20200317T); sp_s(PN_Stock(), 'OF000001'); return TSBF_QMD_Ext(9802001001); // 返回 76.40605 ``` 范例二:提取 OF00001 在 20200317 日的仓位测算详情表 ```tsl sp_s(PN_Date(), 20200317T); sp_s(PN_Stock(), 'OF000001'); return TSBF_QMD_Ext(9802001); ``` ####### TSBF_QMD_QK 用途:量化数据接口相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl // 提取 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl // 在 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl // 获取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 范例 ```tsl // 获取基金仓位表结构 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 范例 ```tsl 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 范例 ```tsl // 返回字段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 范例 ```tsl // 求全A股在20191112T的过去250日破净占比(%)的平均值 N := 250; setsysparam(pn_stock(), 'QT001'); setsysparam(pn_date(), 20191112T); return TSBF_QMD_Ma(9802004001, 250); // 返回:8.09367 ``` ######## Tsbf_qmd_percentrank 范例 ```tsl // 全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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl // 获取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(按示例顺序传入)。 返回:整数。 范例 ```tsl oV := BackUpSystemParameters2(); SetSysParam(pn_stock(), 'SH000300'); SetSysParam(pn_date(), 2020601T); return Index_StyleFactor(2); ``` ####### Pf_stylefactor 用途:量化数据接口相关函数。 参数:arg1,arg2,arg3(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl Portfolio := array(("代码":"SZ000001", "比例(%)":50), ("代码":"SZ000002", "比例(%)":50)); EndT := 20200601T; DType := 2; return pf_StyleFactor(Portfolio, EndT, DType); ``` ####### Stockstylefactor 用途:量化数据接口相关函数。 参数:arg1(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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 范例 ```tsl 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 范例 ```tsl 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 范例 ```tsl 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 范例 ```tsl 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 范例 ```tsl // 返回事件窗口日为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 范例 ```tsl // 返回事件后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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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 ```tsl 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+分别表示债券收益率曲线向下或向上平移若干个基点后的债券价格范例 ```tsl 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+分别表示债券收益率曲线向下或向上平移若干个基点后的债券价格范例 ```tsl 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+,i2*P0*?yi 其中,Dkrd,i为第i个关键期限点的关键利率久期;n为关键期限点个数;yi分别为第i个关键期限点的利率变动;P0为债券的估值全价,P-,i、P+,i为第i个关键期限点利率变动yi后对应的债券估值全价。范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 算法个券到期收益率与同期限基准曲线收益率的差值范例 ```tsl 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范例 ```tsl Setsysparam(PN_Stock(), 'SH194037'); endt := 20230103T; return Bond_ZSpread(EndT, 'BTS000033', 2); // 1.17 ``` ##### 绩效分析 ###### 内容 - 权重运算 ###### 权重运算 ####### 内容 - fipwc_CalEndWeight - fipwc_CalportfolioZF - fipwc_DerBeginWeight ####### fipwc_CalEndWeight 用途:绩效分析相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:整数。 范例 ```tsl sw := array(200, 50); zf := array(50, 0); return fipwc_CalEndWeight(sw, zf); // 结果:array(150.0,25.0) ``` ####### fipwc_CalportfolioZF 用途:绩效分析相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl sw := array(200, 50); zf := array(50, 0); return fipwc_CalportfolioZF(sw, zf); // 结果:100 ``` ####### fipwc_DerBeginWeight 用途:绩效分析相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl 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 范例 ```tsl 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 范例 ```tsl 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 范例 ```tsl 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 范例 ```tsl 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 范例 ```tsl 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 范例 ```tsl 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 范例 ```tsl 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 范例 ```tsl 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 范例 ```tsl 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 范例 ```tsl 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:单个指数作为基准 ```tsl IndexID := "SH000300"; BegT := 20230801t; EndT := 20230901t; return Method := 1; // 涨幅法 return MF_GetBenchmarketRate(IndexID, BegT, EndT, return Method); ``` 返回: 范例2:多个券合成基准 ```tsl IndexID := array("SZ00001", "SH600000", "SZ000002"); BegT := 20230801t; EndT := 20230901t; return Method := 1; // 涨幅法 return MF_GetBenchmarketRate(IndexID, BegT, EndT, return Method); ``` 返回: ######### MF_Industry_Current 范例 ```tsl 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 范例 ```tsl 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 范例 ```tsl p := array(10, 20, 50, 40, 20, 30); MAnum := 3; return FIP_Trend_CrossMAPercent(p, MAnum); // 20 ``` ######## FIP_Trend_NHPercent 范例 ```tsl p := array(10, 20, 50, 40, 20, 30); return FIP_Trend_NHPercent(p); // 40 ``` ######## FIP_Trend_OverMAPercent 范例 ```tsl p := array(10, 20, 50, 40, 20, 30); MAnum := 3; return FIP_Trend_OverMAPercent(p, MAnum); // 60 ``` ######## FIP_Trend_TrendPower 范例 ```tsl p := array(10, 20, 50, 40, 20, 30); delta := 2; return FIP_Trend_TrendPower(p, delta); // 25 ``` ######## FI_Trend_CrossMAPercent 范例 ```tsl 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 范例 ```tsl r := array(4.5, 2.3, -1.5, 2.5, -3.3, 3); return FI_Trend_NHPercent(r); // 50 ``` ######## FI_Trend_OverMAPercent 范例 ```tsl 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 范例 ```tsl 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(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl return?TS_GroupFactorReturn(1004, 20240401T, 20240405T, cy_day()); ``` ##### 量化择时 ###### 内容 - 市场结构 ###### 市场结构 ####### 内容 - 涨停股 ####### 涨停股 ######## 内容 - 中间函数 ######## 中间函数 ######### 内容 - StockDTLBNumByEndt - StockZtLBNumByEndt2 ######### StockDTLBNumByEndt 范例 ```tsl // SZ002123在20250218跌停连板次数统计 SetSysParam(pn_stock(), "SZ002123"); return StockDTLBNumByEndt(20250218T); // 结果:2 ``` ######### StockZtLBNumByEndt2 范例 ```tsl // "SH603139"在20250320的连板次数 setsysparam(pn_stock(), "SH603139"); return StockZtLBNumByEndt2(20250320T); // 结果:2 ``` ##### 期权基本函数 ###### 内容 - 期权板块 ###### 期权板块 ####### 内容 - OP_GetOptionList ####### OP_GetOptionList 用途:期权基本函数相关函数。 参数:arg1,arg2(按示例顺序传入)。 返回:处理后的结果值。 范例 ```tsl // 获取20250806标的为上证50etf在市的期权合约 stockid := 'SH510050'; endt := 20250806T; return OP_GetOptionList(StockID, endt); ```