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