#### 金融工程

##### 内容

- CAPM
- Dev
- 策略验证
- 量化选股
- 股权分置
- 价值评估
- 期权定价
- 套利
- 投资组合
- 新股定价
- 指数研究
- 基金研究
- 量化数据接口
- 量化套利
- 债券研究
- 绩效分析
- 风险模型
- 因子研究
- 量化择时
- 期权基本函数

##### CAPM

###### 内容

- BkRiskAndReturn_Pgm
- BksRiskAndReturn_Pgm
- StocksAlpha
- StocksBeta
- StocksBetaAlpha
- StocksExpectedReturn
- StocksResidual

###### BkRiskAndReturn_Pgm

用途：CAPM相关函数。
参数：arg1，arg2，arg3，arg4，arg5（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 返回深证A股板块及其下个股加权beta/alpha/平均收益率/标准差/残差标准差/相关系数
bkname := "深证A股";
indexid := 'SH000001';
begt := inttodate(20120425);
endt := inttodate(20121017);
return BkRiskAndReturn_Pgm(bkname, indexid, begt, endt, 1);
```

###### BksRiskAndReturn_Pgm

用途：CAPM相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 返回深证A股及上证A股的风险指标
bkname := "深证A股;上证A股";
indexid := 'SH000001';
begt := inttodate(20120425);
endt := inttodate(20121017);
return BksRiskAndReturn_Pgm(bkname, indexid, begt, endt);
```

###### StocksAlpha

用途：CAPM相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

算法在已知个股Alpha情况下，对个股Alpha按照给定的比例加权计算组合Alpha范例

```tsl
oV := BackupSystemParameters2();
// 假设组合为申万采掘，先计算其下个股的区间alpha
stockArr := getbk('申万采掘');
IndexId := 'SH000001';
BegT := inttodate(20110101);
EndT := inttodate(20110630);
t := array();
n := 0;
for i := 0 to length(stockArr) - 1 do
begin
    stockid := stockArr[i];
    setsysparam(pn_stock(), stockid);
    if not IsStockGoMarket(begt) then continue;
    tmp := StockBetaAlpha2(IndexId, BegT, EndT);
    t[n]['代码'] := stockid;
    t[n]['名称'] := stockname(stockid);
    t[n]['alpha'] := tmp['Alpha'];
    n++;
end;
// 按总股本加权，计算组合alpha
t2 := pf_percent(t[:, '代码'], EndT, 0);
t := select [1].['alpha'], [2].['比例(%)'] from t
left join t2 with([1].['代码'] on [2].['代码'])
end;
return stocksalpha(t[:, 'alpha'], t[:, '比例(%)']);
// 结果：0.0374
```

###### StocksBeta

用途：CAPM相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

算法在已知个股Beta的情况下，按给定的比例计算组合加权beta范例

```tsl
oV := BackupSystemParameters2();
// 假设组合为申万采掘，先计算其下个股的区间beta
stockArr := getbk('申万采掘');
IndexId := 'SH000001';
BegT := inttodate(20110101);
EndT := inttodate(20110630);
t := array();
n := 0;
for i := 0 to length(stockArr) - 1 do
begin
    stockid := stockArr[i];
    setsysparam(pn_stock(), stockid);
    if not IsStockGoMarket(begt) then continue;
    tmp := StockBetaAlpha2(IndexId, BegT, EndT);
    t[n]['代码'] := stockid;
    t[n]['名称'] := stockname(stockid);
    t[n]['beta'] := tmp['Beta'];
    n++;
end;
// 按总股本加权，计算组合beta
t2 := pf_percent(t[:, '代码'], EndT, 0);
t := select [1].['beta'], [2].['比例(%)'] from t
left join t2 with([1].['代码'] on [2].['代码']) end;
return StocksBeta(t[:, 'beta'], t[:, '比例(%)']);
// 结果：1.0095
```

###### StocksBetaAlpha

用途：CAPM相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 返回一组股票的α系数、β系数、平均收益率、收益率标准差、残差标准差及相关系数
StockArr := array("SH600460", "SZ000920", "SH600718");
IndexId := 'SH000300';
begt := inttodate(20110101);
endt := inttodate(20110630);
// 剔除begt还没上市的股票
delete from stockArr where spec(IsStockGoMarket(begt), thisrow) = 0;
return StocksBetaAlpha(StockArr, IndexId, begt, endt);
```

###### StocksExpectedReturn

用途：CAPM相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
oV := BackupSystemParameters2();
// 假设组合为申万采掘，先计算其下个股的区间收益率
stockArr := getbk('申万采掘');
BegT := inttodate(20110101);
EndT := inttodate(20110630);
t := array();
n := 0;
for i := 0 to length(stockArr) - 1 do
begin
    stockid := stockArr[i];
    setsysparam(pn_stock(), stockid);
    if not IsStockGoMarket(begt) then continue;
    tmp := stockzf(BegT, EndT);
    t[n]['代码'] := stockid;
    t[n]['名称'] := stockname(stockid);
    t[n]['涨幅(%)'] := tmp;
    n++;
end;
// 按总股本加权，计算组合收益率
t2 := pf_percent(t[:, '代码'], EndT, 0);
t := select [1].['涨幅(%)'], [2].['比例(%)'] from t
left join t2 with([1].['代码'] on [2].['代码'])
end;
return StocksExpectedReturn(t[:, '涨幅(%)'], t[:, '比例(%)']);
// 结果：3.8980
```

###### StocksResidual

算法in (12Wi/100\*rdRii)范例

```tsl
oV := BackupSystemParameters2();
// 假设组合为申万采掘，先计算其下个股的区间残差标准差
stockArr := getbk('申万采掘');
IndexId := 'SH000001';
BegT := inttodate(20110101);
EndT := inttodate(20110630);
t := array();
n := 0;
for i := 0 to length(stockArr) - 1 do
begin
    stockid := stockArr[i];
    setsysparam(pn_stock(), stockid);
    if not IsStockGoMarket(begt) then continue;
    tmp := StockBetaAlpha2(IndexId, BegT, EndT);
    t[n]['代码'] := stockid;
    t[n]['名称'] := stockname(stockid);
    t[n]['Residual'] := tmp['Residual'];
    n++;
end;
// 按总股本加权，计算组合残差标准差
t2 := pf_percent(t[:, '代码'], EndT, 0);
t := select [1].['Residual'], [2].['比例(%)'] from t
left join t2 with([1].['代码'] on [2].['代码'])
end;
return stocksalpha(t[:, 'Residual'], t[:, '比例(%)']);
// 结果：1.230
```

##### Dev

###### 内容

- BuySample
- SelectStockIndex
- SellSample
- TradingStrategyByBk
- TradingStrategyByBk2
- TradingByJSZB
- PortfolioCalcSys
- SetRetBuyPrice
- SetRetSellPrice
- SetStockBuyInfo
- StockBuyInfo
- SetStockBuyPrice
- StockBuyPrice
- SetStockBuyTime
- StockBuyTime
- StockHoldingCount
- SelectStockIndex_Call
- TrueTransactionYtm
- TSB_Data1
- TSB_Data2
- StockBuyDiff
- StockBuyTimeDiff

###### BuySample

用途：Dev相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
SetSysParam(PN_Stock(), 'SZ000002');
SetSysParam(pn_date(), inttodate(20121017));
return BuySample();
// 结果：0
```

###### SelectStockIndex

用途：Dev相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：整数。

范例

```tsl
SetSysParam(PN_CYCLE(), cy_day());
return SelectStockIndex("SZ000541;SH600000", inttodate(20120620),
inttodate(20120930), @BsByMACD(12, 26, 9, 2), @SsByMACD(12, 26, 9, 2), "SH000001", 1); // 返回股票组合array(SZ000541;SH600000)在2012-06-20到2012-09-30在给出的买入条件和卖出条件下的等比投资的交易情况
```

###### SellSample

用途：Dev相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(PN_Stock(), 'SZ000002');
SetSysParam(pn_date(), inttodate(20121017));
return sellSample(); // 判断万科A在2012-10-17在卖出策略sellSample()下是否卖出, 结果：0
```

###### TradingStrategyByBk

用途：Dev相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
return TradingStrategyByBk("上证180;中证800",
inttodate(20120625),
inttodate(20121017),
"SH000001",
@BK_UpPercent3() >= 60,
@StockZf3(), 1, 10, 10, 1);
```

###### TradingStrategyByBk2

用途：Dev相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
return TradingStrategyByBk2(
"上证180",
inttodate(20120725),
inttodate(20121017),
"SH000001",
"BK_UpPercent3()+Ref(BK_UpPercent3(),1)+Ref(BK_UpPercent3(),2)",
3, 20);
```

###### TradingByJSZB

用途：Dev相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
return TradingByJSZB(
"SZ000002;SH600718;SH600000;SH600001",
inttodate(20100125),
inttodate(20101017),
@IsHighOfNDay(0),
@Close() < hhv(High(), 0) - 10 * ATR_v(45),
-10, 20, 20);
```

###### PortfolioCalcSys

用途：Dev相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
return PortfolioCalcSys(
"申万煤炭开采",
1000000,
inttodate(20120825),
inttodate(20121023),
0,
0.2,
0.05,
@(StockZF3() > 8),
@(StockZF3() <  - 3),
100,
100,
@close(),
@close(),
@close(),
0.1,
0.1,
5,
100,
1,
10000,
100);
```

###### SetRetBuyPrice

用途：Dev相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetRetBuyPrice(20);
return GetSysParam('tmpBuyPrice'); // 结果：20
```

###### SetRetSellPrice

用途：Dev相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetRetSellPrice(50);
return GetSysParam('tmpSellPrice'); // 结果：50
```

###### SetStockBuyInfo

用途：Dev相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetStockBuyInfo("SZ000002", 'BuyPrice', 8);
return GetSysParam('BuyPrice');
```

###### StockBuyInfo

用途：Dev相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetStockBuyInfo("SZ000002", 'BuyPrice', 'kkkk');
SetSysParam(pn_stock(), 'SZ000002');
return StockBuyInfo("BuyPrice"); // 结果：’kkkk’
```

###### SetStockBuyPrice

范例

```tsl
SetStockBuyTime('SZ000002', inttodate(20121023));
return GetSysParam("BuyTime");
```

###### StockBuyPrice

用途：Dev相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
SetStockBuyInfo('SZ000002', 'BuyPrice', 5);
SetSysParam(PN_Stock(), 'SZ000002');
return StockBuyPrice(); // 结果：5
```

###### SetStockBuyTime

用途：日期时间处理函数。
参数：arg1，arg2（按示例顺序传入）。
返回：日期或时间值。

范例

```tsl
SetStockBuyTime('SZ000002', inttodate(20121023));
return GetSysParam("BuyTime");
```

###### StockBuyTime

用途：日期时间处理函数。
参数：无。
返回：日期或时间值。

范例

```tsl
SetStockBuyInfo('SZ000002', 'BuyTime', inttodate(20121023));
SetSysParam(Pn_Stock(), 'SZ000002');
return StockBuyTime(); // 结果：41205
```

###### StockHoldingCount

用途：Dev相关函数。
参数：无。
返回：整数。

范例

```tsl
SetStockBuyInfo('SZ000002', 'HoldingInfo', 9);
SetSysParam(Pn_Stock(), 'SZ000002');
return StockHoldingCount();
```

结果：9

###### SelectStockIndex_Call

用途：Dev相关函数。
参数：无。
返回：整数。

范例

```tsl
StockArr := array("SH600460", "SZ000920", "SH600718");
BegT := inttodate(20120925);
EndT := inttodate(20121017);
return SelectStockIndex_Call(StockArr,
BegT, EndT, @BsByMACD(12, 26, 9, 2), true, @SsByMACD(12, 26, 9, 2), false);
```

###### TrueTransactionYtm

范例

```tsl
return SelectStockIndex_Call(
array("SH600460", "SZ000920", "SH600718"),
inttodate(20120925),
inttodate(20121017),
@BsByMACD(12, 26, 9, 2),
true,
@SsByMACD(12, 26, 9, 2),
false);
```

###### TSB_Data1

用途：Dev相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return TSB_Data1("上证180", inttodate(20120625), inttodate(20121017),
"BK_UpPercent3()+Ref(BK_UpPercent3(),1)+Ref(BK_UpPercent3(),2)",
3, 20);
```

###### TSB_Data2

用途：Dev相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return TSB_Data2("上证180;中证500", inttodate(20120925),
inttodate(20121017));
```

###### StockBuyDiff

用途：Dev相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
SetStockBuyPrice('SZ000002', 8.04);
SetSysParam(PN_Stock(), 'SZ000002');
return StockBuyDiff(); // 结果：4.47761
```

###### StockBuyTimeDiff

用途：日期时间处理函数。
参数：无。
返回：日期或时间值。

范例

```tsl
SetStockBuyTime('SZ000002', inttodate(20121018));
SetSysParam(pn_date(), inttodate(20121022));
SetSysParam(PN_Stock(), 'SZ000002');
return StockBuyTimeDiff(); // 结果：4
```

##### 策略验证

###### 内容

- TSBackTesting
- TSFL_TSBackTesting_File
- TSFL_TSBackTesting_PercentPortfolio
- TSFL_TSBackTesting_HighFrequencyTrading
- PortfolioBackTesting_IndexFund
- PortfolioBackTesting_Trading
- PortfolioBackTesting_Percent
- PortfolioBackTesting \_Quantity
- TSFL_TSMutiFactor_01
- 比例类中间函数
- 交易类中间函数
- 数量类中间函数
- 指数基金中间函数
- 中间函数

###### TSBackTesting

范例参考2014-04-11-应用专题-回测框架01：策略回测框架TSBackTesting

###### TSFL_TSBackTesting_File

参考2014-04-11-应用专题-回测框架01：策略回测框架TSBackTesting

###### TSFL_TSBackTesting_PercentPortfolio

参考2014-04-11-应用专题-回测框架01：策略回测框架TSBackTesting

###### TSFL_TSBackTesting_HighFrequencyTrading

参考2014-04-11-应用专题-回测框架01：策略回测框架TSBackTesting

###### PortfolioBackTesting_IndexFund

范例参考2012-03-20-模型更新-指数基金模拟ToolBox使用说明

###### PortfolioBackTesting_Trading

范例

参考附件:深圳天软科技-模型更新-策略验证（交易类）ToolBox使用说明.pdf

###### PortfolioBackTesting_Percent

参考附件:深圳天软科技-模型更新-策略验证（配置类）ToolBox使用说明.pdf

###### PortfolioBackTesting \_Quantity

范例

```tsl
pfInfoData := array();
BegT := 39812;
EndT := 39820;
tAllJYMX := array(
("代码":"SH600036", "名称":"招商银行", "截止日":39818.00, "动作":0.00, "成交价":12.59, "成交量":794200.00, "费率(%)":0.1, "费用":0.00, "多空":1.00, "乘数":1.00, "保证金比例(%)":1.00),
("代码":"SH600068", "名称":"葛洲坝 ", "截止日":39818.00, "动作":0.00, "成交价":8.96, "成交量":1116000.00, "费率(%)":0.1, "费用":0.00, "多空":1.00, "乘数":1.00, "保证金比例(%)":1.00),
("代码":"SZ002232", "名称":"启明信息", "截止日":39818.00, "动作":0.00, "成交价":13.96, "成交量":716300.00, "费率(%)":0.1, "费用":0.00, "多空":1.00, "乘数":1.00, "保证金比例(%)":1.00),
("代码":"SH600036", "名称":"招商银行", "截止日":39819.00, "动作":0.00, "成交价":13.1, "成交量":458000.00, "费率(%)":0.1, "费用":0.00, "多空":1.00, "乘数":1.00, "保证金比例(%)":1.00),
("代码":"SH600036", "名称":"招商银行", "截止日":39819.00, "动作":0.00, "成交价":13.1, "成交量":305300.00, "费率(%)":0.1, "费用":0.00, "多空":1.00, "乘数":1.00, "保证金比例(%)":1.00),
("代码":"SH600036", "名称":"招商银行", "截止日":39819.00, "动作":0.00, "成交价":12.45, "成交量":240900.00, "费率(%)":0.1, "费用":0.00, "多空":1.00, "乘数":1.00, "保证金比例(%)":1.00));
tAllTA := array();
tAllZCPZ := array();
tAllHYPZ := array();
tAllCCMX := array();
tAllJZ := array();
tAllLS := array();
PortfolioBackTesting_Quantity(pfInfoData,
BegT,
EndT,
tAllJYMX,
tAllTA,
tAllZCPZ,
tAllHYPZ,
tAllCCMX,
tAllJZ,
tAllLS);
return array('行业配置':tAllHYPZ, 't日持股明细':tAllJYMX);
```

###### TSFL_TSMutiFactor_01

范例参见2014-06-08-深圳天软科技-应用专题-多因子框架01：天软多因子框架TSMultiFactor

###### 比例类中间函数

####### 内容

- PortfolioBackTesting_Percent_Change
- PortfolioBackTesting_Percent_DataCheck
- PortfolioBackTesting_Percent_ToQuantity
- PortfolioBackTesting_Percent_SetPercentforNOTUserDefined

####### PortfolioBackTesting_Percent_Change

范例

```tsl
a := array(2, 3, 4, 5, 8);
SetSysParam('TZZHRiMatrix', a);
w := array(1, 4, 6, 3, 7);
return GetTrueRp(w); // 结果：5.19048
```

####### PortfolioBackTesting_Percent_DataCheck

用途：策略验证相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
tPercent := array(('日期':41215, '截止日':nil, '方向':1, '乘数':nil, '保证金比例(%)':nil), ('日期':41213, '截止日':nil, '方向':nil, '乘数':nil, '保证金比例(%)':nil));
tTA := array();
PortfolioBackTesting_Percent_DataCheck(PFInfoData, tPercent, tTA);
return array('检查后的组合信息':PFInfoData, '检查后的申购，赎回':tPercent);
```

####### PortfolioBackTesting_Percent_ToQuantity

用途：策略验证相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
PFInfoData := array(array('组合名称':'我的组合', '成交量取整模式':0));
tpZCPZ := array(array('现金市值':1000000, '资产净值':1000000));
tPercent := array(
("日期":40543.00, "代码":"SH600000", "名称":"浦发银行", "方向":1.00, "调仓前比例(%)":0.00, "调仓后比例(%)":25.00, "调仓前数量":0.00, "成交价":12.39, "开仓费率(%)":0.165, "平仓费率(%)":0.065, "乘数":1.00, "保证金比例(%)":100.00),
("日期":40543.00, "代码":"SH600004", "名称":"白云机场", "方向":1.00, "调仓前比例(%)":0.00, "调仓后比例(%)":25.00, "调仓前数量":0.00, "成交价":8.82, "开仓费率(%)":0.165, "平仓费率(%)":0.065, "乘数":1.00, "保证金比例(%)":100.00),
("日期":40543.00, "代码":"SZ000001", "名称":"深发展Ａ", "方向":1.00, "调仓前比例(%)":0.00, "调仓后比例(%)":25.00, "调仓前数量":0.00, "成交价":15.79, "开仓费率(%)":0.11975, "平仓费率(%)":0.01975, "乘数":1.00, "保证金比例(%)":100.00),
("日期":40543.00, "代码":"SZ000002", "名称":"万科Ａ", "方向":1.00, "调仓前比例(%)":0.00, "调仓后比例(%)":25.00, "调仓前数量":0.00, "成交价":8.22, "开仓费率(%)":0.11975, "平仓费率(%)":0.01975, "乘数":1.00, "保证金比例(%)":100.00));
ro := array();
return PortfolioBackTesting_Percent_ToQuantity(PFInfoData, tpZCPZ, tPercent, rO);
```

####### PortfolioBackTesting_Percent_SetPercentforNOTUserDefined

用途：策略验证相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
tPercent := array(
("截止日":43550.0, "代码":"SZ000001"),
("截止日":43550.0, "代码":"SZ000002"),
("截止日":43550.0, "代码":"SH600000")
);
EndT := inttodate(20190326);
RateType := 0;
return PortfolioBackTesting_Percent_SetPercentforNOTUserDefined(tPercent, EndT, RateType);
```

###### 交易类中间函数

####### 内容

- PortfolioBackTesting_TradingEvaluation
- TE_ExtremeSummary
- TE_MatchOCTradeData

####### PortfolioBackTesting_TradingEvaluation

用途：策略验证相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
PFInfoData := array();
t := array(
("代码":"CU1201", "名称":"CU1201", "乘数":5.00, "方向":1.00, "开仓日期":40724.00, "开仓价":69450.00, "开仓数量":1.00, "开仓费率(%)":0.0125, "平仓日期":40763.00, "平仓价":67740.00, "平仓数量":1.00, "平仓费率(%)":0.0125),
("代码":"CU1201", "名称":"CU1201", "乘数":5.00, "方向":0.00, "开仓日期":40787.00, "开仓价":68200.00, "开仓数量":1.00, "开仓费率(%)":0.0125, "平仓日期":40801.00, "平仓价":65020.00, "平仓数量":1.00, "平仓费率(%)":0.0125),
("代码":"RU1201", "名称":"RU1201", "乘数":5.00, "方向":1.00, "开仓日期":40695.00, "开仓价":33365.00, "开仓数量":2.00, "开仓费率(%)":0.02, "平仓日期":40725.00, "平仓价":32175.00, "平仓数量":2.00, "平仓费率(%)":0.02),
("代码":"RU1201", "名称":"RU1201", "乘数":5.00, "方向":1.00, "开仓日期":40805.00, "开仓价":31925.00, "开仓数量":3.00, "开仓费率(%)":0.02, "平仓日期":40847.00, "平仓价":27105.00, "平仓数量":3.00, "平仓费率(%)":0.02),
("代码":"SZ000002", "名称":"万科Ａ", "乘数":1.00, "方向":1.00, "开仓日期":40556.00, "开仓价":9.01, "开仓数量":1100.00, "开仓费率(%)":0.01, "平仓日期":40569.00, "平仓价":8.5, "平仓数量":1100.00, "平仓费率(%)":0.01),
("代码":"SZ000002", "名称":"万科Ａ", "乘数":1.00, "方向":1.00, "开仓日期":40596.00, "开仓价":8.17, "开仓数量":1200.00, "开仓费率(%)":0.01, "平仓日期":40604.00, "平仓价":8.19, "平仓数量":1200.00, "平仓费率(%)":0.01),
("代码":"SZ000002", "名称":"万科Ａ", "乘数":1.00, "方向":1.00, "开仓日期":40616.00, "开仓价":8.28, "开仓数量":1200.00, "开仓费率(%)":0.01, "平仓日期":40627.00, "平仓价":8.67, "平仓数量":1200.00, "平仓费率(%)":0.01),
("代码":"SZ000002", "名称":"万科Ａ", "乘数":1.00, "方向":1.00, "开仓日期":40630.00, "开仓价":8.82, "开仓数量":1100.00, "开仓费率(%)":0.01, "平仓日期":40660.00, "平仓价":8.45, "平仓数量":1100.00, "平仓费率(%)":0.01),
("代码":"SZ000002", "名称":"万科Ａ", "乘数":1.00, "方向":1.00, "开仓日期":40714.00, "开仓价":8.16, "开仓数量":1200.00, "开仓费率(%)":0.01, "平仓日期":40746.00, "平仓价":8.41, "平仓数量":1200.00, "平仓费率(%)":0.01),
("代码":"SZ000002", "名称":"万科Ａ", "乘数":1.00, "方向":1.00, "开仓日期":40770.00, "开仓价":8.44, "开仓数量":1100.00, "开仓费率(%)":0.01, "平仓日期":40781.00, "平仓价":8.38, "平仓数量":1100.00, "平仓费率(%)":0.01));
return PortfolioBackTesting_TradingEvaluation(PfInfoData, t);
```

####### TE_ExtremeSummary

####### TE_MatchOCTradeData

###### 数量类中间函数

####### 内容

- PortfolioBackTesting_Quantity_CompositeDetail
- PortfolioBackTesting_Quantity_DataCheck
- PortfolioBackTesting_Quantity_InvestmentRatio
- PortfolioBackTesting_Quantity_FA_EndT
- PortfolioBackTesting_Quantity_IndustryComposite
- PortfolioBackTesting_Quantity_NetAsset
- PortfolioBackTesting_Quantity_InvalidData
- PortfolioBackTesting_Quantity_TransactionLog
- PortfolioBackTesting_Quantity_TradeDetails
- PortfolioBackTesting_Quantity_TradeOfMoneyMarketFund
- PortfolioBackTesting_Quantity_CashAllocation
- PortfolioBackTesting_Quantity_SellByCommonCondition
- PortfolioBackTesting_Quantity_TradeOfRightsIssue
- PortfolioBackTesting_Quantity_TradeOfDividendandSplit
- PortfolioBackTesting_Quantity_VolAfterDividendandSplit
- PortfolioBackTesting_Quantity_TradeOfDelist
- PortfolioBackTesting_Quantity_VolAfterSplit
- 中间函数
- PortfolioBackTesting_Quantity_GetClose

####### PortfolioBackTesting_Quantity_CompositeDetail

用途：策略验证相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：整数。

范例

```tsl
endt := IntToDate(20120711);
tpGP := array(
("截止日":39818.00, "代码":"SZ002232", "数量":716300.00, "市值":9999548.00, "总成本":9999548.00, "成本价":13.96, "浮动盈亏":0.00, "浮盈率(%)":0.00, "收盘":13.96, "方向":1.00, "乘数":1.00, "保证金比例(%)":100.00, "红利比":0.00, "实得比":0.00, "送股比":0.00, "分红金额":0.00, "今数量":716300.00, "今总成本":9999548.00, "今成本价":13.96),
("截止日":39818.00, "代码":"SH600068", "数量":1116000.00, "市值":9999360.00, "总成本":9999360.00, "成本价":8.96, "浮动盈亏":0.00, "浮盈率(%)":0.00, "收盘":8.96, "方向":1.00, "乘数":1.00, "保证金比例(%)":100.00, "红利比":0.00, "实得比":0.00, "送股比":0.00, "分红金额":0.00, "今数量":1116000.00, "今总成本":9999360.00, "今成本价":8.96),
("截止日":39818.00, "代码":"SH600036", "数量":794200.00, "市值":9998978.00, "总成本":9998978.00, "成本价":12.59, "浮动盈亏":0.00, "浮盈率(%)":0.00, "收盘":12.59, "方向":1.00, "乘数":1.00, "保证金比例(%)":100.00, "红利比":0.00, "实得比":0.00, "送股比":0.00, "分红金额":0.00, "今数量":794200.00, "今总成本":9998978.00, "今成本价":12.59));
tLS := array(
("代码":"SH600036", "名称":"招商银行", "截止日":39819.00, "动作":0.00, "成交价":13.1, "成交量":305300.00, "费率(%)":0.1, "乘数":1.00, "保证金比例(%)":100.00, "方向":1.00, "成交金额（税前）":3999430.00, "费用":3999.43, "买入金额":3999430.00, "卖出金额":0.00, "上一笔数量":794200.00, "上一笔总成本":9998978.00, "上一笔成本价":12.59, "数量":1099500.00, "总成本":13998408.00, "成本价":12.73, "备注":""),
("代码":"SH600036", "名称":"招商银行", "截止日":39819.00, "动作":0.00, "成交价":12.45, "成交量":240900.00, "费率(%)":0.1, "乘数":1.00, "保证金比例(%)":100.00, "方向":1.00, "成交金额（税前）":2999205.00, "费用":2999.2, "买入金额":2999205.00, "卖出金额":0.00, "上一笔数量":1099500.00, "上一笔总成本":13998408.00, "上一笔成本价":12.73, "数量":1340400.00, "总成本":16997613.00, "成本价":12.68, "备注":""),
("代码":"SH600036", "名称":"招商银行", "截止日":39819.00, "动作":0.00, "成交价":13.1, "成交量":458000.00, "费率(%)":0.1, "乘数":1.00, "保证金比例(%)":100.00, "方向":1.00, "成交金额（税前）":5999800.00, "费用":5999.8, "买入金额":5999800.00, "卖出金额":0.00, "上一笔数量":1340400.00, "上一笔总成本":16997613.00, "上一笔成本价":12.68, "数量":1798400.00, "总成本":22997413.00, "成本价":12.79, "备注":""),
("代码":"SZ000002", "名称":"万科Ａ", "截止日":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", "名称":"万科Ａ", "截止日":39819.00, "动作":0.00, "成交价":6.9, "成交量":289800.00, "费率(%)":0.1, "乘数":1.00, "保证金比例(%)":100.00, "方向":1.00, "成交金额（税前）":1999620.00, "费用":1999.62, "买入金额":1999620.00, "卖出金额":0.00, "上一笔数量":428500.00, "上一笔总成本":2999500.00, "上一笔成本价":7.00, "数量":718300.00, "总成本":4999120.00, "成本价":6.96, "备注":""));
return PortfolioBackTesting_Quantity_CompositeDetail(EndT, tpGP, tLS);
```

####### PortfolioBackTesting_Quantity_DataCheck

用途：策略验证相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
tPercent := array(('日期':41215, '截止日':nil, '方向':1, '乘数':nil, '保证金比例(%)':nil), ('日期':41213, '截止日':nil, '方向':nil, '乘数':nil, '保证金比例(%)':nil));
tTA := array();
PortfolioBackTesting_Quantity_DataCheck(PFInfoData, tPercent, tTA);
return array('检查后的组合信息':PFInfoData, '检查后的申购，赎回':tPercent);
```

####### PortfolioBackTesting_Quantity_InvestmentRatio

用途：策略验证相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
endt := inttodate(20090105);
tZCPZ := array(
("截止日":41540.00, "资产净值":2000000.00, "保证金占用":0.00, "可用资金":2000000.00));
tLS := array(
("截止日":41541.00, "代码":"SH600036", "方向":1.00, "动作编号":0.00, "成交量":5000.00, "成交价":10.98, "乘数":1.00, "保证金比例(%)":100.00, "费率(%)":0.1, "费用":54.9, "成交金额":54900.00, "买入金额":54900.00, "卖出金额":0.00, "上一笔数量":0.00, "上一笔总成本":0.00, "上一笔成本价":0.00, "数量":5000.00, "总成本":54900.00, "成本价":10.98),
("截止日":41541.00, "代码":"SH600036", "方向":1.00, "动作编号":0.00, "成交量":6000.00, "成交价":10.89, "乘数":1.00, "保证金比例(%)":100.00, "费率(%)":0.1, "费用":65.34, "成交金额":65340.00, "买入金额":65340.00, "卖出金额":0.00, "上一笔数量":5000.00, "上一笔总成本":54900.00, "上一笔成本价":10.98, "数量":11000.00, "总成本":120240.00, "成本价":10.93),
("截止日":41541.00, "代码":"IF1312", "方向":1.00, "动作编号":0.00, "成交量":4.00, "成交价":2461.2, "乘数":300.00, "保证金比例(%)":15.00, "费率(%)":0.00, "费用":73.84, "成交金额":2953440.00, "买入金额":2953440.00, "卖出金额":0.00, "上一笔数量":1.00, "上一笔总成本":743340.00, "上一笔成本价":2477.8, "数量":5.00, "总成本":3696780.00, "成本价":2464.52));
tGP := array(
("截止日":41541.00, "代码":"SH600036", "证券类别":2.00, "方向":1.00, "乘数":1.00, "保证金比例(%)":100.00, "数量":18000.00, "总成本":196540.00, "成本价":10.92, "收盘价":10.88, "市值":195840.00, "保证金占用":195840.00, "买入金额":196540.00, "卖出金额":0.00, "买持仓量":18000.00, "卖持仓量":0.00, "浮动盈亏":-700.00, "浮盈率(%)":-0.36, "分红金额":0.00, "市值变动":195840.00, "当日盈亏":-700.00, "冻结资金":0.00),
("截止日":41541.00, "代码":"IF1312", "证券类别":27.00, "方向":1.00, "乘数":300.00, "保证金比例(%)":15.00, "数量":5.00, "总成本":3696780.00, "成本价":2464.52, "收盘价":2458.6, "市值":3687900.15, "保证金占用":553185.02, "买入金额":3696780.00, "卖出金额":0.00, "买持仓量":5.00, "卖持仓量":0.00, "浮动盈亏":-8879.85, "浮盈率(%)":-0.24, "分红金额":0.00, "市值变动":3687900.15, "当日盈亏":-8879.85, "冻结资金":544305.17));
tta := array(
("截止日":41542.00, "业务类型":2.00, "成交金额":0.00));
vzcjz := array();
return PortfolioBackTesting_Quantity_InvestmentRatio(EndT, tZCPZ, tLS, tGP, tta, vZCJZ);
```

####### PortfolioBackTesting_Quantity_FA_EndT

用途：策略验证相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6，arg7，arg8，arg9，arg10，arg11，arg12（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
pfInfoData := array(
("初始资金":10000000.00, "分红再投资":0.00, "自动参与配股":1.00, "费用类别":1.00, "货币基金自动分红再投资":1.00, "自动调整昨日持仓":1.00));
endt := inttodate(20121231);
tm := 2000000;
tpzcpz := array(
("截止日":41541.00, "资产净值":60000.00, "保证金占用":0.00, "可用资金":60000.00));
tpgp := array();
tjy := array(
("代码":"IF01", "方向":1.00, "动作编号":0.00, "成交量":1.00, "成交价":2305.4, "乘数":300.00, "保证金比例(%)":12.00, "费率(%)":0.0025),
("代码":"IF01", "方向":1.00, "动作编号":0.00, "成交量":3.00, "成交价":2309.8, "乘数":300.00, "保证金比例(%)":12.00, "费率(%)":0.0025));
tta := array();
tzcpz := array();
tHYPZ := array();
tgp := array();
tjz := array();
tls := array();
return PortfolioBackTesting_Quantity_FA_EndT(pfInfoData, EndT, TM, tpZCPZ, tpGP, tJY, tTA, tZCPZ, tHYPZ, tGP, tJZ, tLS);
```

结果：1

####### PortfolioBackTesting_Quantity_IndustryComposite

用途：策略验证相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：整数。

范例

```tsl
tGP := array(
("组合编号":59.00, "截止日":39816.00, "代码":"SH600001", "名称":"平安银行", "昨持仓":0.00, "数量":150000.00, "板块名称":"金融", "市值":472000.00, "占净值比例(%)":10.00, "证券类别":2),
("组合编号":59.00, "截止日":39816.00, "代码":"SH600000", "名称":"浦发银行", "昨持仓":0.00, "数量":200000.00, "板块名称":"金融", "市值":456000.00, "占净值比例(%)":20.00, "证券类别":2),
("组合编号":59.00, "截止日":39817.00, "代码":"SZ000002", "名称":"万科A", "昨持仓":0.00, "数量":100000.00, "板块名称":"金属、非金属", "市值":478000.00, "占净值比例(%)":40.00, "证券类别":1),
("组合编号":59.00, "截止日":39818.00, "代码":"SH600595", "名称":"中孚实业", "昨持仓":0.00, "数量":100000.00, "板块名称":"金属、非金属", "市值":596000.00, "占净值比例(%)":30.00, "证券类别":1));
endt := 39818;
return PortfolioBackTesting_Quantity_IndustryComposite(EndT, tGP);
```

####### PortfolioBackTesting_Quantity_NetAsset

用途：策略验证相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return PortfolioBackTesting_Quantity_NetAsset(39818, 12, 36, 10);
```

####### PortfolioBackTesting_Quantity_InvalidData

用途：策略验证相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
endt := 39818;
tAllZCPZ := array(
("组合编号":59.00, "截止日":39818, "股票市值":0.00, "股票占资产净值比例(%)":0.00, "现金市值":100000000.00, "现金占资产净值比例(%)":100.00, "资产净值":100000000.00), ("组合编号":59.00, "截止日":39817, "股票市值":0.00, "股票占资产净值比例(%)":0.00, "现金市值":100000000.00, "现金占资产净值比例(%)":100.00, "资产净值":100000000.00), ("组合编号":59.00, "截止日":39818, "股票市值":0.00, "股票占资产净值比例(%)":0.00, "现金市值":100000000.00, "现金占资产净值比例(%)":100.00, "资产净值":100000000.00)); // 资产配置数据
tAllHYPZ := array(); // 行业配置数据
tAllCCMX := array(); // 持股明细数据
tAllJZ := array(); // 净值数据
tAllLS := array();
PortfolioBackTesting_Quantity_InvalidData(EndT,
tAllZCPZ,
tAllHYPZ,
tAllCCMX,
tAllJZ,
tAllLS);
return tAllZCPZ;
```

####### PortfolioBackTesting_Quantity_TransactionLog

用途：策略验证相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
endt := 38734;
tpGP := array(
("组合编号":151.00, "截止日":38733.00, "代码":"OF020001", "名称":"", "数量":10000.00, "市值":10810.00, "占净值比例(%)":0.0108, "板块名称":"开放式基金", "占流通股比例(%)":0.0014, "总成本":10452.96, "成本价":1.0453, "浮动盈亏":357.04, "浮盈率(%)":3.4153, "排名":1.00),
("组合编号":0.00, "截止日":0.00, "代码":"OF510180", "名称":"", "数量":10000.00, "市值":0.00, "占净值比例(%)":0.00, "板块名称":"", "占流通股比例(%)":0.00, "总成本":0.00, "成本价":0.00, "浮动盈亏":0.00, "浮盈率(%)":0.00, "排名":0.00),
("组合编号":0.00, "截止日":0.00, "代码":"OF510170", "名称":"", "数量":10000.00, "市值":0.00, "占净值比例(%)":0.00, "板块名称":"", "占流通股比例(%)":0.00, "总成本":0.00, "成本价":0.00, "浮动盈亏":0.00, "浮盈率(%)":0.00, "排名":0.00));
tJY := array(
("组合编号":59, "代码":"OF020001", "本次持有数量":100, "截止日":38734.00, "成交量":-70000.00, "成交价":13.8876, "成交金额":972132.00, "总成本":1000, "乘数":1, "动作":1, "成交时间":40369.9642),
("组合编号":59, "代码":"SH600595", "本次持有数量":150, "截止日":38734.00, "成交量":2000000.00, "成交价":13.8876, "成交金额":-27775200.00, "总成本":1200, "乘数":1, "动作":0, "成交时间":40369.9646),
("组合编号":59, "代码":"SZ000002", "本次持有数量":200, "截止日":38734.00, "成交量":400000.00, "成交价":9.582, "成交金额":-3832800.00, "总成本":2000, "乘数":1, "动作":0, "成交时间":40370.0404));
return PortfolioBackTesting_Quantity_TransactionLog(EndT, tpGP, tJY, bFHZTZ);
```

####### PortfolioBackTesting_Quantity_TradeDetails

用途：策略验证相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
pfInfoData := array((
"费用类别":1,
"最低费用类别":0,
"开仓最低费用":5,
"平仓最低费用":5,
));
Endt := IntToDate(20120711);
tpGP := array(
("截止日":39818.00, "代码":"SZ002232", "数量":716300.00, "市值":9999548.00, "总成本":9999548.00, "成本价":13.96, "浮动盈亏":0.00, "浮盈率(%)":0.00, "收盘":13.96, "方向":1.00, "乘数":1.00, "保证金比例(%)":100.00, "红利比":0.00, "实得比":0.00, "送股比":0.00, "分红金额":0.00, "今数量":716300.00, "今总成本":9999548.00, "今成本价":13.96),
("截止日":39818.00, "代码":"SH600068", "数量":1116000.00, "市值":9999360.00, "总成本":9999360.00, "成本价":8.96, "浮动盈亏":0.00, "浮盈率(%)":0.00, "收盘":8.96, "方向":1.00, "乘数":1.00, "保证金比例(%)":100.00, "红利比":0.00, "实得比":0.00, "送股比":0.00, "分红金额":0.00, "今数量":1116000.00, "今总成本":9999360.00, "今成本价":8.96),
("截止日":39818.00, "代码":"SH600036", "数量":794200.00, "市值":9998978.00, "总成本":9998978.00, "成本价":12.59, "浮动盈亏":0.00, "浮盈率(%)":0.00, "收盘":12.59, "方向":1.00, "乘数":1.00, "保证金比例(%)":100.00, "红利比":0.00, "实得比":0.00, "送股比":0.00, "分红金额":0.00, "今数量":794200.00, "今总成本":9998978.00, "今成本价":12.59)
);
tJY := array(
("代码":"SH600036", "名称":"招商银行", "截止日":39819.00, "方向":1, "动作":0.00, "成交价":13.1, "成交量":305300.00, "费率(%)":0.1, "乘数":1.00, "保证金比例(%)":100.00, "备注":""),
("代码":"SH600036", "名称":"招商银行", "截止日":39819.00, "方向":1, "动作":0.00, "成交价":12.45, "成交量":240900.00, "费率(%)":0.1, "乘数":1.00, "保证金比例(%)":100.00, "备注":""),
("代码":"SH600036", "名称":"招商银行", "截止日":39819.00, "方向":1, "动作":0.00, "成交价":13.1, "成交量":458000.00, "费率(%)":0.1, "乘数":1.00, "保证金比例(%)":100.00, "备注":""),
("代码":"SZ000002", "名称":"万科Ａ", "截止日":39819.00, "方向":1, "动作":0.00, "成交价":7.00, "成交量":428500.00, "费率(%)":0.1, "乘数":1.00, "保证金比例(%)":100.00, "备注":""),
("代码":"SZ000002", "名称":"万科Ａ", "截止日":39819.00, "方向":1, "动作":0.00, "成交价":6.9, "成交量":289800.00, "费率(%)":0.1, "乘数":1.00, "保证金比例(%)":100.00, "备注":"")
);
return PortfolioBackTesting_Quantity_TradeDetails(pfInfoData, EndT, tpGP, tJY);
```

结果

####### PortfolioBackTesting_Quantity_TradeOfMoneyMarketFund

用途：策略验证相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
pfInfoData := array((
"货币基金自动分红再投资":1,
));
endt := inttodate(20190327);
tpGP := array(
("组ID":"", "截止日":43550.0, "代码":"OF519800", "名称":"华夏保证金理财A", "方向":1, "数量":10000000.0, "收盘":0.01, "市值":100000.0, "总成本":100000.0, "成本价":0.01, "浮动盈亏":0.0, "浮盈率(%)":0.0, "证券类别":17, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "保证金占用":100000.0, "市值变动":100000.0, "当日盈亏（净额）":0.0, "费用":100.0, "当日盈亏":-100.0, "占净值比例(%)":0.0100200410841725),
("组ID":"", "截止日":43550.0, "代码":"SH511700", "名称":"场内货币", "方向":1, "数量":10000000.0, "收盘":99.999, "市值":999990000.0, "总成本":999990000.0, "成本价":99.999, "浮动盈亏":0.0, "浮盈率(%)":0.0, "证券类别":6, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "保证金占用":999990000.0, "市值变动":999990000.0, "当日盈亏（净额）":0.0, "费用":999990.0, "当日盈亏":-999990.0, "占净值比例(%)":100.199408837616)
);
tpJYMXarr := array(
("组ID":"", "截止日":43550.0, "代码":"OF519800", "方向":1, "成交量":10000000.0, "名称":"华夏保证金理财A", "动作":0, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "到期日":0, "应计利息":0, "费率(%)":0.1, "备注":"", "证券类别":17, "成交价":0.01, "是否达到约束":1, "利率(%)":0, "成交金额（税前）":100000.0, "成交金额":100100.0, "费用":100.0),
("组ID":"", "截止日":43550.0, "代码":"SH511700", "方向":1, "成交量":10000000.0, "名称":"场内货币", "动作":0, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "到期日":0, "应计利息":0, "费率(%)":0.1, "备注":"", "证券类别":6, "成交价":99.999, "是否达到约束":1, "利率(%)":0, "成交金额（税前）":999990000.0, "成交金额":1000989990.0, "费用":999990.0)
);
return PortfolioBackTesting_Quantity_TradeOfMoneyMarketFund(pfInfoData, EndT, tpGP, tpJYMXarr);
```

####### PortfolioBackTesting_Quantity_CashAllocation

用途：策略验证相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6，arg7，arg8（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
PortfolioBackTesting_Quantity_CashAllocation(10000000, 5, 4, 10, 5, 0, Number, CashPerUnit);
return array('实际可买入个数':Number, '分配资金':CashPerUnit);
```

####### PortfolioBackTesting_Quantity_SellByCommonCondition

用途：策略验证相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6，arg7（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
EndT := inttodate(20070301);
tpGP := array(
("截止日":39141.0, "方向":0.0, "代码":"SZ000562", "今数量":679.0, "今成本价":14.72, "今总成本":10000.0, "乘数":1.0, "保证金比例(%)":100.0, "买入日期":39121.0),
("截止日":39141.0, "方向":0.0, "代码":"SZ000001", "今数量":493.0, "今成本价":18.27, "今总成本":9000.0, "乘数":1.0, "保证金比例(%)":100.0, "买入日期":39111.0)
);
return PortfolioBackTesting_Quantity_SellByCommonCondition(EndT, tpGP, 15, 20, -20, 0, 0.01);
```

####### PortfolioBackTesting_Quantity_TradeOfRightsIssue

用途：进行字符串提取或替换处理。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
pfInfoData := array(('自动参与配股':1));
EndT := 20230810t;
tpGP := array(
("组ID":"", "截止日":45147.0, "代码":"SH600081", "名称":"东风科技", "方向":1, "数量":10000000.0, "收盘":11.64, "市值":116400000.0, "总成本":124800000.0, "成本价":12.48, "浮动盈亏":-8400000.0, "浮盈率(%)":-6.73076923076923, "证券类别":2, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "保证金占用":116400000.0, "占净值比例(%)":11.7400818497528)
);
return PortfolioBackTesting_Quantity_TradeOfRightsIssue(pfInfoData, EndT, tpGP);
```

####### PortfolioBackTesting_Quantity_TradeOfDividendandSplit

用途：策略验证相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
pfInfoData := array(('分红再投资':0));
EndT := inttodate(20230810);
tpGP := array(
("组ID":"", "截止日":45147.0, "代码":"SH600369", "名称":"西南证券", "方向":1, "数量":10000000.0, "收盘":4.7, "市值":47000000.0, "总成本":37100000.0, "成本价":3.71, "浮动盈亏":9900000.0, "浮盈率(%)":26.6846361185984, "证券类别":2, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "保证金占用":47000000.0, "占净值比例(%)":4.65409710565662)
);
return PortfolioBackTesting_Quantity_TradeOfDividendandSplit(pfInfoData, EndT, tpGP);
```

####### PortfolioBackTesting_Quantity_VolAfterDividendandSplit

用途：策略验证相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
PfInfoData := array((
"自动参与配股":1,
"分红再投资":0
));
EndT := inttodate(20230810);
tpGP := array(
("组ID":"", "截止日":45147.0, "代码":"SH600081", "名称":"东风科技", "方向":1, "数量":20000.0, "收盘":11.64, "市值":232800.0, "总成本":249600.0, "成本价":12.48, "浮动盈亏":-16800.0, "浮盈率(%)":-6.73076923076923, "证券类别":2, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "保证金占用":232800.0, "市值变动":0.0, "买入金额":0, "卖出金额":0, "买入金额2":0, "卖出金额2":0, "分红金额":0, "配股金额":0, "迁入金额":0, "迁出金额":0, "迁入金额2":0, "迁出金额2":0, "买入金额（税后）":0, "卖出金额（税后）":0, "买入金额2（税后）":0, "卖出金额2（税后）":0, "迁入金额（税后）":0, "迁出金额（税后）":0, "迁入金额2（税后）":0, "迁出金额2（税后）":0, "调入金额":0, "调出金额":0, "调入金额2":0, "调出金额2":0, "当日盈亏（净额）":0.0, "费用":0, "当日盈亏":0.0, "冻结资金":0, "昨数量":20000.0, "昨收盘":11.64, "行业名称":"申万汽车", "应计利息":0, "剩余期限":0, "组合类型":"", "占净值比例(%)":0.0232799376982307, "Flag":0),
("组ID":"", "截止日":45147.0, "代码":"SH600369", "名称":"西南证券", "方向":1, "数量":20000.0, "收盘":4.7, "市值":94000.0, "总成本":74200.0, "成本价":3.71, "浮动盈亏":19800.0, "浮盈率(%)":26.6846361185984, "证券类别":2, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "保证金占用":94000.0, "市值变动":-1600.0, "买入金额":0, "卖出金额":0, "买入金额2":0, "卖出金额2":0, "分红金额":0, "配股金额":0, "迁入金额":0, "迁出金额":0, "迁入金额2":0, "迁出金额2":0, "买入金额（税后）":0, "卖出金额（税后）":0, "买入金额2（税后）":0, "卖出金额2（税后）":0, "迁入金额（税后）":0, "迁出金额（税后）":0, "迁入金额2（税后）":0, "迁出金额2（税后）":0, "调入金额":0, "调出金额":0, "调入金额2":0, "调出金额2":0, "当日盈亏（净额）":-1600.0, "费用":0, "当日盈亏":-1600.0, "冻结资金":0, "昨数量":20000.0, "昨收盘":4.78, "行业名称":"申万非银金融", "应计利息":0, "剩余期限":0, "组合类型":"", "占净值比例(%)":0.00939997484378732, "Flag":0)
);
tFHSG := array(
("组ID":"", "截止日":45148.0, "代码":"SH600369", "名称":"西南证券", "方向":1, "动作":2, "成交量":0, "成交价":0, "成交金额":600.0, "乘数":1, "保证金比例(%)":100, "费率(%)":0, "备注":"分红", "昨数量":20000.0, "红利比":0.03, "实得比":0.03, "送股比":0, "送股数量":0, "分红金额":600.0, "分红再投资数量":0, "组合类型":""),
("组ID":"", "截止日":45148.0, "代码":"SH600081", "方向":1, "动作":4, "成交量":6000.0, "成交价":9.59, "成交金额":57540.0, "乘数":1, "保证金比例(%)":100, "费率(%)":0, "备注":"配股", "组合类型":"")
);
return PortfolioBackTesting_Quantity_VolAfterDividendandSplit(pfInfoData, EndT, tpGP, tFHSG);
```

####### PortfolioBackTesting_Quantity_TradeOfDelist

用途：策略验证相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 换股退市
PfInfoData := array((
"现金选择权":0,
"到期自动平仓":1
));
EndT := inttodate(20230317);
tpgp := array(
("截止日":45001.0, "代码":"SZ002013", "名称":"中航机电", "方向":1, "数量":100000.0, "收盘":10.78, "市值":1078000.0, "总成本":1022000.0, "成本价":10.22, "浮动盈亏":56000.0, "证券类别":1, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "今数量":100000.0, "今成本价":10.22, "今总成本":1022000.0),
("截止日":45001.0, "代码":"SZ003816", "名称":"中国广核", "方向":1, "数量":100000.0, "收盘":2.89, "市值":289000.0, "总成本":270000.0, "成本价":2.7, "浮动盈亏":19000.0, "证券类别":1, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "今数量":100000.0, "今成本价":2.7, "今总成本":270000.0)
);
return PortfolioBackTesting_Quantity_TradeOfDelist(pfInfoData, EndT, tpGP);
```

结果

范例二：

```tsl
// 现金退市
PfInfoData := array((
"现金选择权":1,
"到期自动平仓":1
));
EndT := inttodate(20230317);
tpgp := array(
("截止日":45001.0, "代码":"SZ002013", "名称":"中航机电", "方向":1, "数量":100000.0, "收盘":10.78, "市值":1078000.0, "总成本":1022000.0, "成本价":10.22, "浮动盈亏":56000.0, "证券类别":1, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "今数量":100000.0, "今成本价":10.22, "今总成本":1022000.0),
("截止日":45001.0, "代码":"SZ003816", "名称":"中国广核", "方向":1, "数量":100000.0, "收盘":2.89, "市值":289000.0, "总成本":270000.0, "成本价":2.7, "浮动盈亏":19000.0, "证券类别":1, "乘数":1, "保证金比例(%)":100, "保证金比例II(%)":0, "今数量":100000.0, "今成本价":2.7, "今总成本":270000.0)
);
return PortfolioBackTesting_Quantity_TradeOfDelist(pfInfoData, EndT, tpGP);
```

结果

####### PortfolioBackTesting_Quantity_VolAfterSplit

用途：策略验证相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
tpGP := array(
("截止日":45147.0, "代码":"SH600369", "方向":1.0, "数量":117600.0, "总成本":436296.0, "成本价":3.71, "乘数":1.0, "保证金比例(%)":100.0),
("截止日":45147.0, "代码":"SH600081", "方向":1.0, "数量":96400.0, "总成本":1203072.0, "成本价":12.48, "乘数":1.0, "保证金比例(%)":100.0),
("截止日":45147.0, "代码":"SH600006", "方向":1.0, "数量":21400.0, "总成本":129684.0, "成本价":6.03, "乘数":1.0, "保证金比例(%)":100.0));
EndT := inttodate(20230810);
pfInfoData := array(
("初始资金":10000000.0, "分红再投资":0.0, "自动参与配股":1.0, "费用类别":1.0));
return PortfolioBackTesting_Quantity_VolAfterSplit(tpGP, EndT, pfInfoData);
```

结果

####### 中间函数

######## 内容

- GetContractMultiplier
- GetMarginRatio
- GetMarginRatio2
- DepositOfOption
- DepositOfSecurity
- GetTradeDeposit
- GetPriceOfUnderlying
- DepositOfOptionByGroup
- GetGroupDeposit
- BondPayMentByEndt
- GetBondMaturityTradeData
- GetLowestFee
- TSTrade_CalCC

######## GetContractMultiplier

范例

```tsl
setsysparam(pn_stock(), 'IF2301');
setsysparam(pn_date(), inttodate(20230105));
return GetContractMultiplier();
// 结果：300
```

######## GetMarginRatio

范例

```tsl
setsysparam(pn_stock(), 'IO2306-C-3100');
setsysparam(pn_date(), inttodate(20230105));
return GetMarginRatio();
// 结果：12
```

######## GetMarginRatio2

范例

```tsl
setsysparam(pn_stock(), 'IO2306-C-3100');
setsysparam(pn_date(), inttodate(20230105));
return GetMarginRatio2();
// 结果：50
```

######## DepositOfOption

范例

```tsl
setsysparam(pn_date(), inttodate(20230104));
OptionID := 'OP10004679';
OptionPrice := 0.4855;
StockPrice := 2.66;
p1 := 12;
p2 := 7;
return DepositOfOption(OptionID, OptionPrice, StockPrice, p1, p2);
// 结果：0.8047
```

######## DepositOfSecurity

范例

```tsl
// 期权保证金
setsysparam(pn_date(), inttodate(20230104));
StockID := 'OP10004679';
position := 0;
price := 0.4855;
price2 := 2.66;
margin := 12;
margin2 := 7;
stockvol := 100;
stockunit := 10142;
return DepositOfSecurity(StockID, position, price, price2, margin, margin2, stockvol, stockunit);
// 结果：816126.74
```

范例二：

```tsl
// 期货保证金
setsysparam(pn_date(), inttodate(20230104));
StockID := 'IF01';
position := 1;
price := 3895;
price2 := 0;
margin := 8;
margin2 := 0;
stockvol := 100;
stockunit := 300;
return DepositOfSecurity(StockID, position, price, price2, margin, margin2, stockvol, stockunit);
// 结果：9348000
```

######## GetTradeDeposit

范例

```tsl
tjy := array(
("截止日":44930.0, "代码":"SZ000001", "方向":1.0, "动作":0, "乘数":1.0, "保证金比例(%)":100.0, "保证金比例II(%)":0, "成交量":10000.0, "成交价":14.32),
("截止日":44930.0, "代码":"IF01", "方向":1.0, "动作":0, "乘数":300.0, "保证金比例(%)":8.0, "保证金比例II(%)":0, "成交量":100.0, "成交价":3895.0),
("截止日":44930.0, "代码":"OP10004688", "方向":1.0, "动作":0, "乘数":10142.0, "保证金比例(%)":12.0, "保证金比例II(%)":7.0, "成交量":100.0, "成交价":0.0142),
("截止日":44930.0, "代码":"OP10004679", "方向":0, "动作":0, "乘数":10142.0, "保证金比例(%)":12.0, "保证金比例II(%)":7.0, "成交量":100.0, "成交价":0.473),
("截止日":44930.0, "代码":"CF307C14000", "方向":0, "动作":0, "乘数":5.0, "保证金比例(%)":5.0, "保证金比例II(%)":0, "成交量":100.0, "成交价":877.0)
);
GetTradeDeposit(tjy);
return tjy;
```

结果

######## GetPriceOfUnderlying

范例

范例一：

```tsl
// 期权标的证券系统昨收
OptionID := 'OP10004679';
EndT := inttodate(20230104);
isOpen := 1;
return GetPriceOfUnderlying(OptionID, EndT, isOpen);
// 结果：2.651
```

范例二：

```tsl
// 期权标的证券收盘
OptionID := 'OP10004679';
EndT := inttodate(20230104);
return GetPriceOfUnderlying(OptionID, EndT);
// 结果：2.66
```

######## DepositOfOptionByGroup

范例

```tsl
// 这两个合约构成认沽熊市价差策略PNSJC
// PNSJC组合策略的保证金计算方式是：两个期权合约的行权价之差
setsysparam(pn_date(), inttodate(20190731));
Option := 1;
OptionID := 'OP10001902';
position := 1;
OptionID2 := 'OP10001906';
position2 := 0;
Price := spec(settlement(), OptionID);
price2 := spec(settlement(), OptionID2);
// 两个期权合约标的物SH510050
StockPrice := spec(close(), 'SH510050');
P1 := 12;
P2 := 7;
margin := 0;
stockvol := 5;
stockunit := 10000;
return DepositOfOptionByGroup(Option, OptionID, position, OptionID2, position2, Price, price2, StockPrice, P1, P2, margin, stockvol, stockunit);
// 结果：5000
```

######## GetGroupDeposit

范例

```tsl
// 这两个合约构成认沽熊市价差策略PNSJC
setsysparam(pn_date(), inttodate(20190731));
IDTYPE := 'PNSJC';
OptionID := 'OP10001902';
position := 1;
OptionID2 := 'OP10001906';
position2 := 0;
Price := spec(settlement(), OptionID);
price2 := spec(settlement(), OptionID2);
// 两个期权合约标的物SH510050
StockPrice := spec(close(), 'SH510050');
P1 := 12;
P2 := 7;
stockvol := 5;
stockunit := 10000;
return GetGroupDeposit(IDTYPE, OptionID, position, OptionID2, position2, Price, price2, StockPrice, P1, P2, stockvol, stockunit);
// 结果：5000
```

######## BondPayMentByEndt

范例

```tsl
Bondarr := array('SH196237', 'SZ101516', 'SH175901');
Endt := inttodate(20230116);
return BondPayMentByEndt(Bondarr, Endt);
```

结果

######## GetBondMaturityTradeData

范例

```tsl
EndT := inttodate(20170613);
tpgp := array(
("截止日":42734.0, "代码":"BK078020", "方向":1.0, "乘数":1.0, "保证金比例(%)":100.0, "保证金比例II(%)":nil, "数量":1330.0, "收盘":103.68, "市值":137899.32, "保证金占用":137899.32, "占净值比例(%)":0.14, "总成本":134984.59, "成本价":101.49, "浮动盈亏":2914.73, "浮盈率(%)":2.16, "证券类别":18.0, "行业名称":0.0),
("截止日":42734.0, "代码":"BK030014", "方向":1.0, "乘数":1.0, "保证金比例(%)":100.0, "保证金比例II(%)":nil, "数量":25131.0, "收盘":76.76, "市值":1929151.06, "保证金占用":1929151.06, "占净值比例(%)":1.9, "总成本":1895204.27, "成本价":75.41, "浮动盈亏":33946.78, "浮盈率(%)":1.79, "证券类别":18.0, "行业名称":0.0)
);
return GetBondMaturityTradeData(EndT, tpgp);
```

结果

######## GetLowestFee

范例

```tsl
return array(
'不启用最低费用':GetLowestFee(999536, 0.01, 0, 0, 100, 100),
'启用最低费用': GetLowestFee(999536, 0.01, 0, 1, 100, 100)
);
// 结果：array("不启用最低费用":99.9536,"启用最低费用":100)
```

######## TSTrade_CalCC

范例

```tsl
EndT := inttodate(20150215);
tpGP := array(
("主码":"JY020101", "截止日":42049.0, "代码":"SH204014", "方向":1.0, "数量":10000.0, "成本价":90.0, "总成本":900000.0, "乘数":1.0, "保证金比例(%)":100.0, "组ID":""),
("主码":"JY020102", "截止日":42049.0, "代码":"SH204014", "方向":1.0, "数量":3000.0, "成本价":80.0, "总成本":240000.0, "乘数":1.0, "保证金比例(%)":100.0, "组ID":""),
("主码":"JY020103", "截止日":42049.0, "代码":"SZ131802", "方向":1.0, "数量":3000.0, "成本价":70.0, "总成本":210000.0, "乘数":1.0, "保证金比例(%)":100.0, "组ID":""),
("主码":"JY020104", "截止日":42049.0, "代码":"SZ131802", "方向":1.0, "数量":4000.0, "成本价":60.0, "总成本":240000.0, "乘数":1.0, "保证金比例(%)":100.0, "组ID":"")
);
tjy := array(
("主码":"JY021501", "截止日":42050.0, "代码":"SZ131802", "方向":1.0, "动作":1.0, "成交价":90.0, "成交量":4000.0, "成交金额（税前）":360000.0, "费用":36.0, "成交金额2":360000.0, "序号":1.0, "乘数":1.0, "保证金比例(%)":100.0, "利息":3600.0, "组ID":""),
("主码":"JY021502", "截止日":42050.0, "代码":"SH204014", "方向":1.0, "动作":1.0, "成交价":80.0, "成交量":5000.0, "成交金额（税前）":400000.0, "费用":45.0, "成交金额2":400000.0, "序号":2.0, "乘数":1.0, "保证金比例(%)":100.0, "利息":4000.0, "组ID":""),
("主码":"JY021503", "截止日":42050.0, "代码":"SH204014", "方向":1.0, "动作":1.0, "成交价":85.0, "成交量":6000.0, "成交金额（税前）":510000.0, "费用":80.0, "成交金额2":510000.0, "序号":3.0, "乘数":1.0, "保证金比例(%)":100.0, "利息":5100.0, "组ID":""),
("主码":"JY021504", "截止日":42050.0, "代码":"SZ131802", "方向":1.0, "动作":1.0, "成交价":100.0, "成交量":2000.0, "成交金额（税前）":200000.0, "费用":40.0, "成交金额2":200000.0, "序号":4.0, "乘数":1.0, "保证金比例(%)":100.0, "利息":2000.0, "组ID":""),
("主码":"JY021505", "截止日":42050.0, "代码":"SH204014", "方向":1.0, "动作":0.0, "成交价":95.0, "成交量":1000.0, "成交金额（税前）":95000.0, "费用":35.0, "成交金额2":95000.0, "序号":5.0, "乘数":1.0, "保证金比例(%)":100.0, "利息":950.0, "组ID":"")
);
return TSTrade_CalCC(EndT, tpGP, tjy);
```

结果

####### PortfolioBackTesting_Quantity_GetClose

用途：策略验证相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
setsysparam(pn_stock(), 'IF01');
setsysparam(pn_cycle(), cy_day());
Endt := inttodate(20230104);
Stype := stocktype(DefaultStockID());
closePrice := PortfolioBackTesting_Quantity_GetClose(Endt, Stype, 0);
settleprice := PortfolioBackTesting_Quantity_GetClose(Endt, Stype, 1);
return array(
'收盘价':closePrice,
'结算价':settleprice
);
// 结果：array("收盘价":3898.0,"结算价":3895.0);
```

###### 指数基金中间函数

####### 内容

- PortfolioBackTesting_IndexFund_DataCheck
- PortfolioBackTesting_IndexFund_GetIndexSamples
- PortfolioBackTesting_IndexFund_GetIndexSamplesByMarketValue
- PortfolioBackTesting_IndexFund_GetTradingData
- PortfolioBackTesting_IndexFund_GetIndexSamplesPercent

####### PortfolioBackTesting_IndexFund_DataCheck

用途：策略验证相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：整数。

范例

```tsl
PfInfoData := array();
return PortfolioBackTesting_IndexFund_DataCheck(PFInfoData, 'SH000300');
```

####### PortfolioBackTesting_IndexFund_GetIndexSamples

用途：策略验证相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：整数。

范例

```tsl
PfInfoData := array(
("初始资金":2000000000.00, "指数成分数据来源":0.00, "初始建仓策略":0.00, "首日建仓比例(%)":20.00, "每日建仓比例变化(%)":0.00, "目标建仓比例(%)":0.00, "涨停不交易":1.00, "跌停不交易":1.00, "停牌不交易":1.00, "成交价类别":1.00, "成交量取整模式":1.00, "分红再投资":0.00, "最大成交金额占可交易金额比例(%)":5.00, "最小调仓比例(%)":0.01, "开仓费率(%)":0.1, "平仓费率(%)":0.1, "指数成分源数据目录":"C:\\Test\\指数成分-输入\\", "指数成分输出目录":"C:\\Test\\指数成分-输出\\", "指数每日交易输出目录":"C:\\Test\\指数交易-输出\\")); PortfolioBackTesting_IndexFund_GetIndexSamples(PfInfoData, 'SH000300', 39086, r);
return r;
```

####### PortfolioBackTesting_IndexFund_GetIndexSamplesByMarketValue

用途：策略验证相关函数。
参数：无。
返回：整数。

范例

```tsl
return PortfolioBackTesting_IndexFund_GetIndexSamplesByMarketValue(
'SH000300',
inttodate(20121029),
inttodate(20121030));
```

####### PortfolioBackTesting_IndexFund_GetTradingData

范例

```tsl
PfInfoData := array(
("初始资金":2000000000.00, "指数成分数据来源":0.00, "初始建仓策略":0.00, "首日建仓比例(%)":20.00, "每日建仓比例变化(%)":0.00, "目标建仓比例(%)":0.00, "涨停不交易":1.00, "跌停不交易":1.00, "停牌不交易":1.00, "成交价类别":1.00, "成交量取整模式":1.00, "分红再投资":0.00, "最大成交金额占可交易金额比例(%)":5.00, "最小调仓比例(%)":0.01, "开仓费率(%)":0.1, "平仓费率(%)":0.1, "指数成分源数据目录":"C:\\Test\\指数成分-输入\\", "指数成分输出目录":"C:\\Test\\指数成分-输出\\", "指数每日交易输出目录":"C:\\Test\\指数交易-输出\\"));
PortfolioBackTesting_IndexFund_GetIndexSamples(PfInfoData, 'SH000300', 39086, r);
return r;
```

####### PortfolioBackTesting_IndexFund_GetIndexSamplesPercent

用途：策略验证相关函数。
参数：arg1，arg2，arg3，arg4，arg5（按示例顺序传入）。
返回：整数。

范例

```tsl
PfInfoData := array(
("初始资金":2000000000.00, "指数成分数据来源":0.00, "初始建仓策略":0.00, "首日建仓比例(%)":20.00, "每日建仓比例变化(%)":0.00, "目标建仓比例(%)":95.00));
tpIS := array(array('比例(%)':30));
PortfolioBackTesting_IndexFund_GetIndexSamplesPercent(PfInfoData, 'SH000300', INTTODATE(20121029), INTTODATE(20121031), TPIS);
return tpIS;
```

###### 中间函数

####### 内容

- PortfolioBackTesting_InitInvestmentRatio
- PortfolioBackTesting_BenchmarkReturn
- PortfolioBackTesting_BuySellDefaultRatio
- PortfolioBackTesting_TransactionPrice
- PortfolioBackTesting_AdjustVolByBonusShare
- PortfolioBackTesting_GetBenchmarkReturn
- PortfolioBackTesting_TransactionVol
- PortfolioBackTesting_CalBenchmarkReturn

####### PortfolioBackTesting_InitInvestmentRatio

用途：策略验证相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return PortfolioBackTesting_InitInvestmentRatio(inttodate(20121029), 100000); // 对资产配资初始化
```

####### PortfolioBackTesting_BenchmarkReturn

用途：策略验证相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
t := array(('截止日':41213, '净值收益率(%)':0.012), ('截止日':41214, '净值收益率(%)':0.018), ('截止日':41215, '净值收益率(%)':0.022));
PortfolioBackTesting_BenchmarkReturn('SH000300', t);
return T;
```

####### PortfolioBackTesting_BuySellDefaultRatio

用途：策略验证相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
BuyRatio := 0.3;
SellRatio := nil;
BuyOtherFee := nil;
PortfolioBackTesting_BuySellDefaultRatio(
'SH000300',
inttodate(20121029),
BuyRatio,
SellRatio,
BuyOtherFee,
SellOtherFee);
return array(BuyRatio, SellRatio, BuyOtherFee);
```

####### PortfolioBackTesting_TransactionPrice

用途：策略验证相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return PortfolioBackTesting_TransactionPrice('SH600000', inttodate(20121029), 1);
// 结果：7.46
```

####### PortfolioBackTesting_AdjustVolByBonusShare

用途：策略验证相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
tpGP := array(
("代码":"SH600143", "名称":"金发科技", "数量":288760.00),
("代码":"SH600601", "名称":"方正科技", "数量":1334310.00),
("代码":"SH600839", "名称":"四川长虹", "数量":1368608.00));
return PortfolioBackTesting_AdjustVolByBonusShare(tpGP, inttodate(20070702));
```

####### PortfolioBackTesting_GetBenchmarkReturn

用途：策略验证相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
return PortfolioBackTesting_GetBenchmarkReturn(
'SH000300',
inttodate(20070701),
inttodate(20120301),
95);
```

####### PortfolioBackTesting_TransactionVol

用途：策略验证相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return PortfolioBackTesting_TransactionVol(1, 0.3, 0.2, 20030); // 结果：20000
```

####### PortfolioBackTesting_CalBenchmarkReturn

用途：策略验证相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

范例一：

```tsl
// 单个市场指数作为基准：沪深300作为基准
BMinfo := array(
"复合收益率计算方法":0,
"基准类型":0,
"基准代码":"沪深300"
);
BMArr := array(
("截止日":44930.0, "基准收益率(%)":0.129851617552233),
("截止日":44931.0, "基准收益率(%)":1.9427566417088),
("截止日":44932.0, "基准收益率(%)":0.310201774529736),
("截止日":44935.0, "基准收益率(%)":0.809638289821103),
("截止日":44936.0, "基准收益率(%)":0.10849664186435),
("截止日":44937.0, "基准收益率(%)":-0.185260702515608),
("截止日":44938.0, "基准收益率(%)":0.19546732171066),
("截止日":44939.0, "基准收益率(%)":1.40641711283184),
("截止日":44942.0, "基准收益率(%)":1.56065815408548),
("截止日":44943.0, "基准收益率(%)":-0.017450609711639),
("截止日":44944.0, "基准收益率(%)":-0.167452125476234),
("截止日":44945.0, "基准收益率(%)":0.622068882263999),
("截止日":44946.0, "基准收益率(%)":0.614026773819506)
);
t := array(
("截止日":44930.0, "净值收益率(%)":-0.332793457),
("截止日":44931.0, "净值收益率(%)":-0.263773111664858),
("截止日":44932.0, "净值收益率(%)":0.0354019916831471),
("截止日":44935.0, "净值收益率(%)":0.277866916531731),
("截止日":44936.0, "净值收益率(%)":0.351341637362642),
("截止日":44937.0, "净值收益率(%)":-0.857619853637283),
("截止日":44938.0, "净值收益率(%)":-0.829772904725061),
("截止日":44939.0, "净值收益率(%)":-1.37385104622509),
("截止日":44942.0, "净值收益率(%)":-0.698157299507218),
("截止日":44943.0, "净值收益率(%)":-1.30100783081455),
("截止日":44944.0, "净值收益率(%)":0.328379438447828),
("截止日":44945.0, "净值收益率(%)":0.204243778249732),
("截止日":44946.0, "净值收益率(%)":-0.398048534322399)
);
return PortfolioBackTesting_CalBenchmarkReturn(BMinfo, BMArr, t);
```

结果

范例二：

```tsl
// 多个市场市场指数加权作为基准
// array(("代码":"SH000012","比例(%)":35),("代码":"SH000300","比例(%)":65))
BMinfo := array(
"复合收益率计算方法":0,//累计收益率计算方式0-累成，1-累加
"基准类型":1,
"基准代码":"复合基准"
);
BMArr := array(
("截止日":43801.0, "基准收益率(%)":0.123171172283601),
("截止日":43802.0, "基准收益率(%)":0.25829833514229),
("截止日":43803.0, "基准收益率(%)":-0.020653085113629),
("截止日":43804.0, "基准收益率(%)":0.505178796361568),
("截止日":43805.0, "基准收益率(%)":0.388033089336361),
("截止日":43808.0, "基准收益率(%)":-0.105537214736128),
("截止日":43809.0, "基准收益率(%)":0.0888504434722582),
("截止日":43810.0, "基准收益率(%)":0.0416111626986788)
);
t := array(
("截止日":43801.0, "净值收益率(%)":-0.0021054),
("截止日":43802.0, "净值收益率(%)":0.0144003031839832),
("截止日":43803.0, "净值收益率(%)":0.0105986969326069),
("截止日":43804.0, "净值收益率(%)":0.0173960172514344),
("截止日":43805.0, "净值收益率(%)":0.0361854192300629),
("截止日":43808.0, "净值收益率(%)":0.0275789036279854),
("截止日":43809.0, "净值收益率(%)":0.0241748353018918),
("截止日":43810.0, "净值收益率(%)":0.00659154340575376)
);
return PortfolioBackTesting_CalBenchmarkReturn(BMinfo, BMArr, t);
```

结果

##### 量化选股

###### 内容

- 股票价格形态相似性度量

###### 股票价格形态相似性度量

####### 内容

- Stock_pricesamebyevalute
- Stock_pricesamebyofferdata
- Stock_samestockdata
- Ts_sampevalutelib

####### Stock_pricesamebyevalute

- Stock_pricesamebyevalute
- Stock_pricesamebyofferdata
- Stock_samestockdata
- Ts_sampevalutelib

####### Stock_pricesamebyofferdata

- Stock_pricesamebyevalute
- Stock_pricesamebyofferdata
- Stock_samestockdata
- Ts_sampevalutelib

####### Stock_samestockdata

- Stock_pricesamebyevalute
- Stock_pricesamebyofferdata
- Stock_samestockdata
- Ts_sampevalutelib

####### Ts_sampevalutelib

- Stock_pricesamebyevalute
- Stock_pricesamebyofferdata
- Stock_samestockdata
- Ts_sampevalutelib

##### 股权分置

###### 内容

- SF_PE

###### SF_PE

用途：股权分置相关函数。
参数：arg1，arg2，arg3，arg4，arg5（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
endt := inttodate(20120925);
return SF_PE("SH600352", endt, 12, 0.32, 2.5);
```

##### 价值评估

###### 内容

- EV_PE
- EV_PB
- EV_FCFF_I
- EV_FCFF_II
- EV_FCFF_II_Sensitivity
- WACC

###### EV_PE

用途：价值评估相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
stocks := 'SH600053;SH600836;SH600963;SH600966;SZ000488;SZ000506;SZ00069';
endt := inttodate(20120925);
return EV_PE(endt, false, stocks);
```

###### EV_PB

用途：价值评估相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
stocks := 'SH600053;SH600836;SH600963;SH600966;SZ000488;SZ000506;SZ00069';
endt := inttodate(20120925);
return EV_PB(Stocks, endt);
```

###### EV_FCFF_I

用途：价值评估相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
data := array(("含义":"EBIT", "数值":12834.16), ("含义":"折旧与摊销", "数值":2319.98), ("含义":"追加营运资本", "数值":534.22), ("含义":"资本支出", "数值":4497.2));
G := array(
("含义":"年数", "高速增长阶段":5.00, "稳定增长阶段":1.00),
("含义":"EBIT增长率（％）", "高速增长阶段":10.00, "稳定增长阶段":3.00),
("含义":"折旧增长率（％）", "高速增长阶段":10.00, "稳定增长阶段":3.00),
("含义":"追加运营资本增长率（％）", "高速增长阶段":10.00, "稳定增长阶段":3.00),
("含义":"资本支出增长率（％）", "高速增长阶段":10.00, "稳定增长阶段":3.00),
("含义":"无风险利率Rf（％）", "高速增长阶段":2.8, "稳定增长阶段":3.4),
("含义":"预期收益率Rm（％）", "高速增长阶段":10.00, "稳定增长阶段":10.00),
("含义":"税率T（％）", "高速增长阶段":18.00, "稳定增长阶段":18.00),
("含义":"债务成本Kd（％）", "高速增长阶段":4.1, "稳定增长阶段":5.33),
("含义":"资产负债率δ（％）", "高速增长阶段":40.00, "稳定增长阶段":40.00));
return EV_FCFF_I(Data, G, 2);
```

###### EV_FCFF_II

用途：价值评估相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6，arg7，arg8，arg9，arg10，arg11（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
data := array(
("项目":"税率", "第1年":0.33, "第2年":0.33, "第3年":0.33, "第4年":0.33, "第5年":0.33, "第6年":0.33, "第7年":0.33, "第8年":0.33, "第9年":0.33, "第10年":0.33, "第11年":0.33, "第12年":0.33),
("项目":"EBIT", "第1年":4318.00, "第2年":5961.00, "第3年":8949.00, "第4年":10161.00, "第5年":11449.00, "第6年":13848.00, "第7年":14704.00, "第8年":15735.00, "第9年":17654.00, "第10年":16994.00, "第11年":16986.00, "第12年":16977.00),
("项目":"折旧与摊销", "第1年":898.00, "第2年":1190.00, "第3年":1790.00, "第4年":2090.00, "第5年":2390.00, "第6年":2990.00, "第7年":3290.00, "第8年":3590.00, "第9年":4190.00, "第10年":4190.00, "第11年":4190.00, "第12年":4190.00),
("项目":"追加营运资本", "第1年":0.00, "第2年":0.00, "第3年":0.00, "第4年":0.00, "第5年":0.00, "第6年":0.00, "第7年":0.00, "第8年":0.00, "第9年":0.00, "第10年":0.00, "第11年":0.00, "第12年":0.00),
("项目":"资本性支出", "第1年":0.00, "第2年":9350.00, "第3年":18700.00, "第4年":9350.00, "第5年":9350.00, "第6年":18700.00, "第7年":9350.00, "第8年":9350.00, "第9年":18700.00, "第10年":0.00, "第11年":0.00, "第12年":0.00));
return EV_FCFF_II(data, 10121, 2, 785600, 0, 3.84, inttodate(20110101), inttodate(20111231), 10, 4.536, 15.04);
```

###### EV_FCFF_II_Sensitivity

用途：价值评估相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6，arg7，arg8（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
data := array(
("项目":"税率", "第1年":0.33, "第2年":0.33, "第3年":0.33, "第4年":0.33, "第5年":0.33, "第6年":0.33, "第7年":0.33, "第8年":0.33, "第9年":0.33, "第10年":0.33, "第11年":0.33, "第12年":0.33),
("项目":"EBIT", "第1年":4318.00, "第2年":5961.00, "第3年":8949.00, "第4年":10161.00, "第5年":11449.00, "第6年":13848.00, "第7年":14704.00, "第8年":15735.00, "第9年":17654.00, "第10年":16994.00, "第11年":16986.00, "第12年":16977.00),
("项目":"折旧与摊销", "第1年":898.00, "第2年":1190.00, "第3年":1790.00, "第4年":2090.00, "第5年":2390.00, "第6年":2990.00, "第7年":3290.00, "第8年":3590.00, "第9年":4190.00, "第10年":4190.00, "第11年":4190.00, "第12年":4190.00),
("项目":"追加营运资本", "第1年":0.00, "第2年":0.00, "第3年":0.00, "第4年":0.00, "第5年":0.00, "第6年":0.00, "第7年":0.00, "第8年":0.00, "第9年":0.00, "第10年":0.00, "第11年":0.00, "第12年":0.00),
("项目":"资本性支出", "第1年":0.00, "第2年":9350.00, "第3年":18700.00, "第4年":9350.00, "第5年":9350.00, "第6年":18700.00, "第7年":9350.00, "第8年":9350.00, "第9年":18700.00, "第10年":0.00, "第11年":0.00, "第12年":0.00));
return EV_FCFF_II_Sensitivity(data, 10121, 2, 785600, 0, 2, 7.5, 12);
```

###### WACC

用途：价值评估相关函数。
参数：arg1，arg2，arg3，arg4，arg5（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return WACC(3.84, 10.84, 0.637, 4.1, 40); // 结果：6.6194
```

##### 期权定价

###### 内容

- BinomialTreeOfStock
- BinomialTreeOfFuture
- BinomialTreeOfCoin
- B_SOfStock
- B_SofIndex
- B_SofCoin
- B_SofFuture
- BinomialTreeOfIndex
- B_SOfStock_1
- Black_Scholes
- B_SOfStock_IV
- BinomialTree
- sf*Normal2*

###### BinomialTreeOfStock

用途：期权定价相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6，arg7（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return BinomialTreeOfStock(0, 50, 50, 10, 40, 5, 3);
```

###### BinomialTreeOfFuture

用途：期权定价相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6，arg7（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 用二叉树对期货美式看涨期权进行定价
return BinomialTreeOfFuture(0, 300, 350, 5, 10, 5, 3);
```

结果如截图：

参考详细说明：期权定价基础模型

###### BinomialTreeOfCoin

用途：期权定价相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6，arg7，arg8（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return BinomialTreeOfCoin(0, 1.61, 1.6, 8, 10, 12, 12, 3);
```

###### B_SOfStock

用途：期权定价相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return B_SOfStock(0, 4.62, 4.5, 5, 26, 12);
```

###### B_SofIndex

用途：期权定价相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6，arg7（按示例顺序传入）。
返回：整数。

范例

```tsl
return B_SOfIndex(0, 310, 300, 8, 3, 20, 2);
```

###### B_SofCoin

用途：期权定价相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6，arg7（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 用B-S 对外汇看跌期权进行定价
return B_SOfCoin(1, 1.61, 1.6, 5, 3, 10, 5);
```

结果如截图：

参考详细说明：期权定价基础模型

###### B_SofFuture

用途：期权定价相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return B_SOfFuture(0, 20, 20, 9, 25, 4);
```

###### BinomialTreeOfIndex

用途：期权定价相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6，arg7，arg8（按示例顺序传入）。
返回：整数。

范例

```tsl
return BinomialTreeOfIndex(0, 1.61, 1.6, 8, 10, 12, 12, 3);
```

###### B_SOfStock_1

用途：期权定价相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return B_SOfStock_1(0, 4.62, 4, 5, 0.98, 12);
```

###### Black_Scholes

用途：期权定价相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6，arg7，arg8（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return Black_Scholes(0, 0, 42, 40, 10, 20, 0.5, 0);
```

###### B_SOfStock_IV

用途：期权定价相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 用 B-S 计算股票期权的隐含波动率
return B_SOfStock_IV(0, 4.62, 4.5, 5, 0.68, 12);
// 结果27.8
```

参考详细说明：期权定价基础模型

###### BinomialTree

用途：期权定价相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6，arg7，arg8，arg9（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return BinomialTree(0, 0, 42, 40, 10, 20, 0.5, 0, 2);
```

###### sf*Normal2*

范例

```tsl
return sf_Normal2_(0.77);
```

结果：0.77935

##### 套利

###### 内容

- ETF50SampleData

###### ETF50SampleData

用途：套利相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
return ETF50SampleData();
```

##### 投资组合

###### 内容

- FundPortfolio_Pgm
- FundPortfolio_db_Pgm
- PortfolioHVByPE
- StocksPortfolio_Pgm
- NPartPortfolio_Pgm
- PortfolioTestByAny_Pgm
- Common
- Markowitz
- Misc
- SIM
- 收益和风险
- 投资组合历史验证
- 相关系数与BetaAlpha
- 组合优化

###### FundPortfolio_Pgm

用途：投资组合相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6，arg7，arg8，arg9（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
BegTime := IntToDate(20120912);
EndTime := inttodate(20121023);
ClassData := array(('代码':2, '名称':'万科Ａ', '行业名称':'房地产'), ('代码':605, '名称':'韶能股份', '行业名称':'电力'));
Portfolio := array(('代码':000002, '名称':'万科A', '数量':31284), ('代码':000605, '名称':'洞庭', '数量':31284));
return FundPortfolio_Pgm(BegTime, EndTime, ClassData, Portfolio, 4, 0, 2, 0, 2);
```

###### FundPortfolio_db_Pgm

用途：投资组合相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6，arg7，arg8，arg9（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
BegTime := IntToDate(20120912);
EndTime := inttodate(20121023);
return FundPortfolio_db_Pgm(BegTime, EndTime, 'ClassData', 'Portfolio', 4, 0, 2, 0, 2);
```

###### PortfolioHVByPE

用途：投资组合相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6，arg7，arg8，arg9（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return PortfolioHVByPE("深证A股;上证A股", inttodate(20120912), inttodate(20121022), 500, 3, 1, 10, 2, 1);
```

###### StocksPortfolio_Pgm

用途：投资组合相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return
StocksPortfolio_Pgm("沪深300", inttodate(20120712), inttodate(20121022),
1, 0, false, -0.3, 5);
```

###### NPartPortfolio_Pgm

用途：投资组合相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
return
NPartPortfolio_Pgm("申万采掘",
'',
@StockPE3_V(),
10,
0,
@(reportofall(9900000, DefaultRepID()) > 0),
inttodate(20120920),
inttodate(20121020),
1,
2,
"SH000001",
true);
```

###### PortfolioTestByAny_Pgm

用途：投资组合相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
return PortfolioTestByAny_Pgm(
"深证A股;上证A股",
inttodate(20120920),
inttodate(20121022),
500,
30,
@StockPE3_V(),
true,
3,
0,
10,
2,
1,
@true);
```

###### Common

####### 内容

- GetTrueRp
- PortfolioTrack
- StocksPortfolio
- pf_CallBack1
- pf_IncomeMaxCallBack
- pf_OutPut
- pf_RiskMinCallBack
- AdjustSampleByAny
- PortfolioByAny
- PortfolioTrackingByAny
- NeedAdjustSampleByDays

####### GetTrueRp

用途：投资组合相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
a := array(2, 3, 4, 5, 8);
SetSysParam('TZZHRiMatrix', a);
w := array(1, 4, 6, 3, 7);
return GetTrueRp(w); // 结果：5.19048
```

####### PortfolioTrack

用途：投资组合相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return PortfolioTrack("Data", 500, inttodate(20120721), inttodate(20121022));
```

####### StocksPortfolio

用途：投资组合相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
return StocksPortfolio(
array('SH600001', 'SH600000'),
inttodate(20120721),
inttodate(20121002),
0,
0,
0,
true,
"");
```

####### pf_CallBack1

用途：投资组合相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return pf_CallBack1(array(3, 4, 5), 2); // 结果：0.3872
```

####### pf_IncomeMaxCallBack

用途：进行数值统计计算。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
a := array(2, 3, 4, 5, 8);
SetSysParam('TZZHRiMatrix', a);
setSysParam('TZZHRp', 3);
w := array(1, 4, 6, 3, 7);
return pf_IncomeMaxCallBack(w, 2); // 结果：-4.87843
```

####### pf_OutPut

####### pf_RiskMinCallBack

####### AdjustSampleByAny

用途：投资组合相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
return AdjustSampleByAny(
"深证A股",
inttodate(20120916),
500,
@close(),
false,
0,
7,
9,
0,
@true);
```

####### PortfolioByAny

用途：投资组合相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
return PortfolioByAny(
array("SH600718", "SZ000920"),
inttodate(20120916),
@open(),
1, 0, 7, 8, @true);
```

####### PortfolioTrackingByAny

用途：投资组合相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
StockArr := array(('代码':"SH600718", '股数':20), ('代码':"SZ000920", '股数':30));
begt := inttodate(20121018);
endt := inttodate(20121026);
return PortfolioTrackingByAny(
"深证A股;上证A股",
StockArr,
begt,
endt,
3,
@stockzf3(),
false,
0, 0, 10, @true);
```

####### NeedAdjustSampleByDays

用途：投资组合相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
begt := inttodate(20121018);
endt := inttodate(20121026);
return NeedAdjustSampleByDays(begt, endt, 9); // 结果：0
```

###### Markowitz

####### 内容

- MarkowitzBasicData
- MarkowitzVARRp
- pf_StocksCovMatrix
- pf_StocksZfMatrix

####### MarkowitzBasicData

用途：投资组合相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
StockArr := array("SZ000099", "SH600000", "SZ000002");
return MarkowitzBasicData(
StockArr,
inttodate(20120818),
inttodate(20121019));
// 结果：-0.01625
```

####### MarkowitzVARRp

用途：投资组合相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
w := array(1, 2, 3, 4);
StockArr := array("SZ000099", "SH600000", "SZ000001", "SZ000002");
MarkowitzBasicData(StockArr, inttodate(20120818), inttodate(20121019));
return MarkowitzVARRp(w); // 结果：1.8133
```

####### pf_StocksCovMatrix

用途：投资组合相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
tb := array((1, 2, 3), (1, 3, 4), (3, 2, 5));
return pf_StocksCovMatrix(tb);
```

####### pf_StocksZfMatrix

用途：投资组合相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
StockArr := array("SZ000099", "SH600000", "SZ000001", "SZ000002");
begt := inttodate(20021015);
endt := inttodate(20021025);
return pf_StocksZfMatrix(StockArr, begt, endt);
```

###### Misc

####### 内容

- EncodePortfolioName

####### EncodePortfolioName

用途：投资组合相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
return EncodePortfolioName(
"某股票",
inttodate(20120618), i
nttodate(20120919), 0, 0, 0, 0);
// 结果：’某股票,从20120618到20120919,Markowitz法,限定收益为0求风险最小’
```

###### SIM

####### 内容

- SIMBasicData
- SIMSumAlphap
- SIMSumBetap
- SIMSumVarEj
- SIMVARRp
- StockBetaAlphaMatix
- StockVAREj

####### SIMBasicData

用途：投资组合相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
return SIMBasicData(
array("SH600718", "SH600100"),
inttodate(20120618),
inttodate(20120919)); // 结果：-0.07634
```

####### SIMSumAlphap

用途：进行数值统计计算。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SIMBasicData(
array("SH600718", "SH600100"),
inttodate(20120618),
inttodate(20120919));
// 使用SIM方法计算基本数据,参考
SIMBasicData
()
return SIMSumAlphap(array(1, 2));
```

结果：0.00266

####### SIMSumBetap

用途：进行数值统计计算。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SIMBasicData(
array("SH600718", "SH600100"),
inttodate(20120618),
inttodate(20120919));
// 使用SIM方法计算基本数据,参考
SIMBasicData
()
return SIMSumBetap(array(1, 2)); // 结果：0.03314
```

####### SIMSumVarEj

用途：进行数值统计计算。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SIMBasicData(
array("SH600718", "SH600100"),
inttodate(20120618),
inttodate(20120919));
// 使用SIM方法计算基本数据, 参考
SIMBasicData
()
return SIMSumVarEj (array(1, 2)); // 结果：0.00045
```

####### SIMVARRp

用途：投资组合相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SIMBasicData(
array("SH600718", "SH600100"),
inttodate(20120618),
inttodate(20120919));
// 使用SIM方法计算基本数据, 参考
SIMBasicData
()
return SIMVARRp(array(1, 2)); // 结果：0.00143
```

####### StockBetaAlphaMatix

用途：投资组合相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
R := array((1, 2), (3, 4), (6, 7), (8, 9), (3, 7), (8, 9), (3, 6), (8, 6), (7, 4), (6, 2));
rm := array(1, 2, 3, 4, 5, 6, 7, 8, 3, 10);
return StockBetaAlphaMatix(`R, Rm);
```

####### StockVAREj

用途：投资组合相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
N := 10;
m := 2;
R := array((1, 2), (3, 4), (6, 7), (8, 9), (3, 7), (8, 9), (3, 6), (8, 6), (7, 4), (6, 2));
Alpha := array(1, 7, 9, 4, 5, 6, 7, 8, 3, 10);
Beta := array(1, 9, 3, 5, 5, 6, 7, 8, 3, 15);
rm := array(1, 4);
return StockVAREj(N, M, R, Alpha, Beta, Rm);
```

###### 收益和风险

####### 内容

- AllBKYieldAndRisk
- BKyieldAndRisk
- yieldAndRisk

####### AllBKYieldAndRisk

用途：投资组合相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return AllBKYieldAndRisk(20, inttodate(20120628));
```

####### BKyieldAndRisk

用途：投资组合相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return BKyieldAndRisk("深证A股", 20, inttodate(20120728));
```

####### yieldAndRisk

用途：投资组合相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return yieldAndRisk("深证A股", 20, inttodate(20120728));
```

###### 投资组合历史验证

####### 内容

- PortfolioByPE
- PortfolioGraph
- PortfolioPercent
- PortfolioTrack_Pgm
- PortfolioTracking

####### PortfolioByPE

用途：投资组合相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
StockArr := array("SH600718", "SZ000920", "SH600000");
EndT := inttodate(20120828);
return PortfolioByPE(StockArr, EndT, 1, 2);
```

####### PortfolioGraph

用途：投资组合相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(PN_DATE(), INTTODATE(20121029));
t := nday(100, '日期', sp_time(), '指数', spec(close(), 'SZ000002'), '组合指数', SPEC(CLOSE(), 'SZ000001'));
return PortfolioGraph(t);
```

####### PortfolioPercent

用途：投资组合相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
StockArr := array("SH600718", "SZ000920");
endt := inttodate(20120918);
return PortfolioPercent(StockArr, endt, 500, 0);
```

####### PortfolioTrack_Pgm

用途：投资组合相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
return PortfolioTrack_Pgm("data", 500,
inttodate(20120718),
inttodate(20121019));
```

####### PortfolioTracking

用途：投资组合相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6，arg7（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
StockArr := array(('代码':'SZ000002', '股数':10), ('代码':'SH600000', '股数':30), ('代码':'SZ000001', '股数':20));
begt := inttodate(20120912);
endt := inttodate(20121022);
return PortfolioTracking('沪深300', StockArr, begt, endt, 4, 2, 5);
```

###### 相关系数与BetaAlpha

####### 内容

- AdjustSmaple
- BKBetaAlphaIndexRelative
- BKCorrelMatrix
- BetaAlphaIndexRelative
- CorrelMatrix
- NeedAdjustSmaple

####### AdjustSmaple

用途：投资组合相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return AdjustSmaple("深证A股;上证A股", inttodate(20120926), 500, 11, 20, 0);
```

####### BKBetaAlphaIndexRelative

用途：投资组合相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：整数。

范例

```tsl
// 获取当前组合中个股与指数的Beta系数、Alpha值与相关系数
// 计算当前板块“申万采掘服务“中个股与上证指数在2012-9-26日至2020-12-31日区间的相关性
setsysparam(pn_date(), 20201231T);
return BKBetaAlphaIndexRelative("申万采掘服务", "SH000001", inttodate(20120926));
```

####### BKCorrelMatrix

用途：投资组合相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 计算两个股票与上证指数在2019-9-26日至2020-12-31日区间的相关系数矩阵
setsysparam(pn_date(), 20201231T);
return BKCorrelMatrix("申万采掘服务", 20190926T);
```

####### BetaAlphaIndexRelative

用途：投资组合相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：整数。

范例

```tsl
// 获取当前组合中个股与指数的Beta系数、Alpha值与相关系数
// 计算两个股票与上证指数在2012-9-26日至2020-12-31日区间的相关性
setsysparam(pn_date(), 20191231T);
stocks := array("SH600718", "SZ000920");
return BetaAlphaIndexRelative(stocks, "SH000001", 20120926T);
```

####### CorrelMatrix

用途：投资组合相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 组合个股相关矩阵
setsysparam(pn_date(), 20201231T);
stocks := array("SH600718", "SZ000920");
return CorrelMatrix(stocks, inttodate(20120926));
```

####### NeedAdjustSmaple

用途：投资组合相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return NeedAdjustSmaple(inttodate(20120618), inttodate(20120926), 4);
// 结果：0
```

###### 组合优化

####### 内容

- TSPortfolioOptimizer
- TSFL_ZHYH_TSPortfolioOptimizer01
- TSFL_ZHYH_TSPortfolioOptimizer02
- Tsfl_zhyh_tsportfoliooptimizer04

####### TSPortfolioOptimizer

范例参考2014-05-07-深圳天软科技-应用专题-组合优化01：天软组合优化框架TSPortfolioOptimizer

####### TSFL_ZHYH_TSPortfolioOptimizer01

参考2014-05-07-深圳天软科技-应用专题-组合优化01：天软组合优化框架TSPortfolioOptimizer

####### TSFL_ZHYH_TSPortfolioOptimizer02

参考2014-05-07-深圳天软科技-应用专题-组合优化01：天软组合优化框架TSPortfolioOptimizer

####### Tsfl_zhyh_tsportfoliooptimizer04

- TSPortfolioOptimizer
- TSFL_ZHYH_TSPortfolioOptimizer01
- TSFL_ZHYH_TSPortfolioOptimizer02
- Tsfl_zhyh_tsportfoliooptimizer04

##### 新股定价

###### 内容

- NSPP_HistoryVerify_Pgm
- NSPP_Pgm
- NSPP_HistoryVerify
- NewStockPredictPrice
- NewStockPredictValue

###### NSPP_HistoryVerify_Pgm

用途：新股定价相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
return NSPP_HistoryVerify_Pgm(
"深证A股;上证A股",
Inttodate(20120618),
inttodate(20120926));
```

###### NSPP_Pgm

用途：新股定价相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
return NSPP_Pgm("深证A股;上证A股",
inttodate(20040307),
Inttodate(20041025),
"SH600966");
```

###### NSPP_HistoryVerify

用途：新股定价相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return NSPP_HistoryVerify(getbk('上证A股'),
inttodate(20120618),
inttodate(20120926));
```

###### NewStockPredictPrice

用途：新股定价相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return NewStockPredictPrice(array("SH600718", "SZ000002"));
```

###### NewStockPredictValue

用途：新股定价相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return NewStockPredictValue(getbk("深证A股;上证A股"),
inttodate(20040307),
inttodate(20041025),
"SH600966");
```

##### 指数研究

###### 内容

- ManyBksKLine
- ManyBksKLine_II
- StockVsIndexKLine
- IndexKLine_AdjustSampleByDate_II
- 复合指数
- 股票指数
- 基金指数
- 临时指数
- 债券指数
- 中间函数
- 最新
- 景气度

###### ManyBksKLine

用途：指数研究相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
return ManyBksKLine("上证A股;沪深300",
"SH000001",
-1,
inttodate(20120818),
inttodate(20120926),
0, true, 2, cy_Day(), 1);
```

###### ManyBksKLine_II

用途：指数研究相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
UserDefArr := array(('代码':'SZ000001', '名称':'平安银行', '比例(%)':40), ('代码':'SH6000010', '名称':'浦发银行', '比例(%)':30), ('代码':'SZ000002', '名称':'万科A', '比例(%)':30));
return ManyBksKLine_II(UserDefArr,
'SH000001',
-1,
inttodate(20120818),
inttodate(20120918),
CY_DAY(), 1);
```

###### StockVsIndexKLine

用途：指数研究相关函数。
参数：无。
返回：整数。

范例

```tsl
return StockVsIndexKLine("SH600718",
"SH000001",
"SH600567",
-1,
inttodate(20120618),
inttodate(20120926),
1, true, 2, cy_day(), 1);
```

###### IndexKLine_AdjustSampleByDate_II

用途：日期时间处理函数。
参数：无。
返回：整数。

范例

```tsl
t := array(
("日期":39080.00, "代码":"SH600550", "名称":"天威保变"),
("日期":39080.00, "代码":"SH600331", "名称":"宏达股份"),
("日期":39080.00, "代码":"SH601398", "名称":"工商银行"),
("日期":39080.00, "代码":"SH600030", "名称":"中信证券"),
("日期":39080.00, "代码":"SH600016", "名称":"民生银行"),
("日期":39080.00, "代码":"SH600036", "名称":"招商银行"),
("日期":39172.00, "代码":"SH600418", "名称":"江淮汽车"),
("日期":39172.00, "代码":"SH600649", "名称":"原水股份"),
("日期":39172.00, "代码":"SH600362", "名称":"江西铜业"),
("日期":39172.00, "代码":"SH600550", "名称":"天威保变"),
("日期":39172.00, "代码":"SH600011", "名称":"华能国际"),
);
return IndexKLine_AdjustSampleByDate_II(t,
'SH000001',
INTTODATE(20120613),
1000, 0, 1);
```

###### 复合指数

####### 内容

- Index_NoAdjustStock_Quick
- ShareStructureOfSample
- PF_Percent

####### Index_NoAdjustStock_Quick

用途：指数研究相关函数。
参数：无。
返回：整数。

范例

```tsl
return Index_NoAdjustStock_Quick(
array("SZ000920", "SZ000002"),
1000,
inttodate(20120818),
inttodate(20120926), 0, 1);
```

####### ShareStructureOfSample

用途：指数研究相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return ShareStructureOfSample(array("SH600718"));
```

####### PF_Percent

用途：指数研究相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return PF_Percent(array("SH600320", "SH600489", "SH000000"), inttodate(20120618), 0);
```

###### 股票指数

####### 内容

- BkAndIndexKLine
- CalculateStockIndex
- FHSPTable
- FHSPTableOfLido
- FHSPTableOfTinysoft
- BkVsBkKLine_tab
- BkVsIndexKLine_tab
- CheckInPutData_UP
- GetInputStocks_UP

####### BkAndIndexKLine

用途：指数研究相关函数。
参数：无。
返回：整数。

范例

```tsl
return BkAndIndexKLine(
array("SH600718", "SZ000002"),
"上证A股",
"SH600718",
1000,
inttodate(20020618),
inttodate(20020926),
0, true, 2, CY_day(), 1);
```

####### CalculateStockIndex

用途：指数研究相关函数。
参数：无。
返回：整数。

范例

```tsl
return CalculateStockIndex(
array("SZ000920", "SH600718"),
1000, inttodate(20120618),
inttodate(20120926), 0, false, 2, 0);
```

####### FHSPTable

用途：指数研究相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(PN_Stock(), 'SZ000002');
return FHSPTable(true);
```

####### FHSPTableOfLido

用途：指数研究相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(PN_Stock(), 'SZ000002');
return FHSPTableOfLido (true);
```

####### FHSPTableOfTinysoft

用途：指数研究相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(PN_Stock(), 'SZ000002');
return FHSPTableOfTinysoft (true);
```

####### BkVsBkKLine_tab

用途：指数研究相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
return BkVsBkKLine_tab("金融、保险业",
1000,
inttodate(20120618),
inttodate(20120926),
0, true, 2, cy_day());
```

####### BkVsIndexKLine_tab

用途：指数研究相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：整数。

范例

```tsl
SetSysParam(pn_bk(), '深证A股');
return BkVsIndexKLine_tab("SH000001", 1000, inttodate(20120618),
inttodate(20120926), 1, true, 2, cy_day());
```

####### CheckInPutData_UP

用途：指数研究相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
t := array(('代码':'SZ000002', '比例(%)':20), ('代码':'SZ000001', '比例(%)':40));
return CheckInPutData_UP(t);
// 检查数据表t是否含有’代码’,’比例(%)’字段 //结果：1
```

####### GetInputStocks_UP

用途：指数研究相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
t := array(('代码':'SZ000003'), ('代码':'SZ000001'));
return GetInputStocks_UP(t);
```

###### 基金指数

####### 内容

- CaculateFundIndex
- FundFHSPTable

####### CaculateFundIndex

用途：指数研究相关函数。
参数：无。
返回：整数。

范例

```tsl
return CaculateFundIndex(
array("SH500001", "SH500002", "SH500003"),
1.59,
inttodate(20120618),
inttodate(20120926),
1, true, 3, 1);
```

####### FundFHSPTable

用途：指数研究相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(PN_Stock(), 'SH500001');
return FundFHSPTable (true);
```

###### 临时指数

####### 内容

- BkVsBkKLine\_
- BkVsIndexKLine\_
- IndexLineMergeBak
- ManyBksKLine\_
- StockVsIndexKLine\_

####### BkVsBkKLine\_

范例

```tsl
return BkVsBkKLine_(
"申万采掘",
"申万电子",
1000,
inttodate(20120618),
inttodate(20120926),
0, true, 2, cy_day(), 1);
```

####### BkVsIndexKLine\_

范例

```tsl
return BkVsIndexKLine_(
'深证A股',
'SH000001',
1000,
inttodate(20120618),
inttodate(20120926),
1, true, 2, cy_day(), 1);
```

####### IndexLineMergeBak

- BkVsBkKLine\_
- BkVsIndexKLine\_
- IndexLineMergeBak
- ManyBksKLine\_
- StockVsIndexKLine\_

####### ManyBksKLine\_

范例

```tsl
begt := inttodate(20120618);
endt := inttodate(20121026);
return ManyBksKLine_(
"申万采掘;申万金融服务",
1000,
begt, endt, 0,
true, 2, cy_week());
```

####### StockVsIndexKLine\_

范例

```tsl
begt := inttodate(20120618);
endt := inttodate(20121026);
return StockVsIndexKLine_(
"SH600900",
"SH000001",
1000,
begt,
endt,
0,
true,
2,
cy_day(),
1);
```

###### 债券指数

####### 内容

- AddExInfoToArray
- BondTrueExDate
- DeleteBondByCriterion

####### AddExInfoToArray

用途：指数研究相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
r := array();
SetSysParam(PN_Stock(), 'SZ00002');
AddExInfoToArray(r, inttodate(20120618), 0, 0);
return r;
```

####### BondTrueExDate

用途：日期时间处理函数。
参数：arg1（按示例顺序传入）。
返回：日期或时间值。

范例

```tsl
PredictDate := inttodate(20120618);
BondTrueExDate(PredictDate);
return PredictDate;
```

####### DeleteBondByCriterion

用途：指数研究相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
BondArr := array("SH009704", "SH000896", "SH010107", "SH010004");
DeleteBondByCriterion(BondArr);
return BondArr; // 结果：SH010107
```

###### 中间函数

####### 内容

- DeleteDataOutOfScopes
- FileterValue
- FilterValueByCycle
- GetMaxListedDate
- IndexDataToShowable
- IndexLineMerge
- KLineMerge
- KLineDataForIndex
- ManyBkLineMerge
- SetToFirstValue
- VolDataForIndex

####### DeleteDataOutOfScopes

用途：指数研究相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
t1 := array(('s':0, 'time':41201), ('s':6, 'time':41202), ('s':2, 'time':41203), ('s':8, 'time':41204), ('s':2, 'time':41207), ('s':3, 'time':41208));
t2 := array(('s':2, 'time':41101), ('s':7, 'time':41202), ('s':9, 'time':41205), ('s':3, 'time':41206), ('s':5, 'time':41207), ('s':1, 'time':41209));
DeleteDataOutOfScopes(t1, t2);
return array(t1, t2);
```

####### FileterValue

用途：指数研究相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
v := array(('s':0, 'time':41201), ('s':6, 'time':41202), ('s':2, 'time':41203), ('s':8, 'time':41204), ('s':2, 'time':41207), ('s':3, 'time':41208));
w := array(41101, 41202, 41205, 41206, 41207, 41209);
FileterValue(v, w);
```

####### FilterValueByCycle

用途：指数研究相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(PN_Stock(), 'SZ000002');
SetSysParam(PN_DATE(), IntToDate(20121029));
t := Nday(20, 'time', datetoint(sp_time()), 'c', close());
FilterValueByCycle(t, inttodate(20120918), IntToDate(20121029), cy_week());
return t;
```

####### GetMaxListedDate

用途：日期时间处理函数。
参数：arg1（按示例顺序传入）。
返回：日期或时间值。

范例

```tsl
return GetMaxListedDate(array("SZ000920", "SH600718", "SH600900"));
```

####### IndexDataToShowable

用途：指数研究相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：整数。

范例

```tsl
SetSysParam(PN_Stock(), 'SZ000002');
SetSysParam(PN_DATE(), IntToDate(20121026));
t := Nday(20, 'Date', sp_time(), 'Close', close());
return array('转换前':t, '转换后':IndexDataToShowable(t, 1000));
```

####### IndexLineMerge

用途：指数研究相关函数。
参数：arg1，arg2，arg3，arg4，arg5（按示例顺序传入）。
返回：整数。

范例

```tsl
SetSysParam(PN_Stock(), 'SZ000002');
SetSysParam(PN_DATE(), IntToDate(20121026));
BkValue := nday(20, 'time', sp_time(), 'close', close());
SetSysParam(pn_stock(), 'SH000001');
IndexValue := nday(20, 'time', sp_time(), 'close', close());
return IndexLineMerge('SZ000002', BkValue, 'SH000001', IndexValue, 1);
```

####### KLineMerge

用途：指数研究相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(PN_Stock(), 'SH000001');
SetSysParam(PN_DATE(), IntToDate(20121026));
BkValue := nday(20, 'time', sp_time(), 'close', close());
return KLineMerge("SH000001", BkValue, "SH600718", inttodate(20120618),
inttodate(20121026), 1);
```

####### KLineDataForIndex

用途：指数研究相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：整数。

范例

```tsl
return KLineDataForIndex("SH600206", inttodate(20120618), inttodate(20120926));
```

####### ManyBkLineMerge

用途：指数研究相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
t := array(
("time":20061229, "close":2675.47),
("time":20070104, "close":2715.72),
("time":20070105, "close":2641.33),
("time":20070108, "close":2707.2),
("time":20070109, "close":2807.8),
("time":20070110, "close":2825.58),
("time":20070111, "close":2770.11),
("time":20070112, "close":2668.11),
("time":20070115, "close":2794.7),
("time":20070116, "close":2821.02),
("time":20070117, "close":2778.9),
("time":20070118, "close":2756.98));
t1 := array(
("time":20061229, "close":1000),
("time":20070104, "close":1017.56),
("time":20070105, "close":961.42),
("time":20070108, "close":978.96),
("time":20070109, "close":1022.61),
("time":20070110, "close":1017.87),
("time":20070111, "close":986.16),
("time":20070112, "close":947.22),
("time":20070115, "close":991.12),
("time":20070116, "close":988.37),
("time":20070117, "close":971.06),
("time":20070118, "close":948.98),
("time":20070119, "close":970.16));
r := array(("Name":"SH000001", "Value":t), ("Name":"复合指数", "Value"
:t1));
return ManyBkLineMerge(r, 1);
```

####### SetToFirstValue

- DeleteDataOutOfScopes
- FileterValue
- FilterValueByCycle
- GetMaxListedDate
- IndexDataToShowable
- IndexLineMerge
- KLineMerge
- KLineDataForIndex
- ManyBkLineMerge
- SetToFirstValue
- VolDataForIndex

####### VolDataForIndex

用途：指数研究相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：整数。

范例

```tsl
return VolDataForIndex("SH600206", inttodate(20120618), inttodate
(20120926));
```

###### 最新

####### 内容

- StandarizeBkData_III
- CalculateBkIndex
- StandarizeBkData_II
- StandarizeBkData_I
- CalculateFundBkIndex

####### StandarizeBkData_III

用途：指数研究相关函数。
参数：无。
返回：处理后的结果值。

范例

```tsl
return StandarizeBkData_III(array("SZ002001", "SZ002020", "SZ002022",
"SZ002050"), 0, inttodate(20020618));
```

####### CalculateBkIndex

用途：指数研究相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：整数。

范例

```tsl
st := 20200101t;
et := 20240930t;
t := array(
("日期":st, "代码":"SZ000001", "名称":"平安银行", "比例(%)":12.5),
("日期":st, "代码":"SH600418", "名称":"江淮汽车", "比例(%)":12.5),
("日期":st, "代码":"SH600649", "名称":"原水股份", "比例(%)":12.5),
("日期":st, "代码":"SH600362", "名称":"江西铜业", "比例(%)":12.5),
("日期":st, "代码":"SH600550", "名称":"天威保变", "比例(%)":12.5),
("日期":st, "代码":"SH600011", "名称":"华能国际", "比例(%)":12.5),
("日期":st, "代码":"SH600895", "名称":"张江高科", "比例(%)":12.5),
("日期":st, "代码":"SH600331", "名称":"宏达股份", "比例(%)":12.5));
return CalculateBkIndex(t, et);
```

####### StandarizeBkData_II

用途：指数研究相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
t := array(('代码':'SZ000002', '日期':41209), ('代码':'SZ000001', '日期':41209));
return StandarizeBkData_II(t, 0);
```

####### StandarizeBkData_I

用途：指数研究相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
t := array(('代码':'SZ000003', '日期':nil), ('代码':'SZ000002', '日期':41209), ('代码':'SZ000001', '日期':nil));
return StandarizeBkData_I(t);
```

####### CalculateFundBkIndex

用途：指数研究相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：整数。

范例

```tsl
t := array(
("日期":39994.00, "代码":"OF000031", "名称":"华夏复兴", "比例(%)":0.0206),
("日期":39994.00, "代码":"OF020001", "名称":"国泰金鹰", "比例(%)":0.00328),
("日期":39994.00, "代码":"OF020010", "名称":"国泰金牛", "比例(%)":0.02113),
("日期":39994.00, "代码":"OF519694", "名称":"交银蓝筹", "比例(%)":0.0588),
("日期":40086.00, "代码":"OF000031", "名称":"华夏复兴", "比例(%)":0.03068),
("日期":40086.00, "代码":"OF020001", "名称":"国泰金鹰", "比例(%)":0.00604),
("日期":40086.00, "代码":"OF020010", "名称":"国泰金牛", "比例(%)":0.03752),
("日期":40086.00, "代码":"OF070013", "名称":"嘉实精选", "比例(%)":0.0227),
("日期":40178.00, "代码":"OF000031", "名称":"华夏复兴", "比例(%)":0.02294),
("日期":40178.00, "代码":"OF020001", "名称":"国泰金鹰", "比例(%)":0.00532),
("日期":40178.00, "代码":"OF020010", "名称":"国泰金牛", "比例(%)":0.02964),
("日期":40178.00, "代码":"OF121008", "名称":"国投成长", "比例(%)":0.0175));
return CalculateFundBkIndex(t, inttodate(20100302));
```

###### 景气度

####### 内容

- Index_BF_Prosperity
- Stocks_BF_Prosperity

####### Index_BF_Prosperity

用途：指数研究相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：整数。

范例

```tsl
indexID := "SH000300";
Rdate := 20210630;
RightType := 0;
setsysparam(CT_TTMData(), true);
return Index_BF_Prosperity(IndexID, RDate, RightType, oRDetail); // 结果：13
```

####### Stocks_BF_Prosperity

用途：指数研究相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
StocksArr := array("SZ000001", "SZ000002", "SH600000");
Rdate := 20210630;
RightType := 0;
setsysparam(CT_TTMData(), true);
return stocks_BF_Prosperity(StocksArr, RDate, RightType, oRDetail); // 结果：-1
```

##### 基金研究

###### 内容

- 基金仓位
- 基金池构建
- 关联度分析

###### 基金仓位

####### 内容

- TSBF_FundBKstyleAccuracy

####### TSBF_FundBKstyleAccuracy

范例

```tsl
return TSBF_FundBKstyleCurrent("普通股票型;混合型", 20150101T, 20201016T);
```

###### 基金池构建

####### 内容

- Getsimufundbk
- Openendfundfilter
- Fund_ff3purealpha
- Funds_GetJZModifiedList
- OpenEndFundFilterByFundIndex

####### Getsimufundbk

- Getsimufundbk
- Openendfundfilter
- Fund_ff3purealpha
- Funds_GetJZModifiedList
- OpenEndFundFilterByFundIndex

####### Openendfundfilter

- Getsimufundbk
- Openendfundfilter
- Fund_ff3purealpha
- Funds_GetJZModifiedList
- OpenEndFundFilterByFundIndex

####### Fund_ff3purealpha

- Getsimufundbk
- Openendfundfilter
- Fund_ff3purealpha
- Funds_GetJZModifiedList
- OpenEndFundFilterByFundIndex

####### Funds_GetJZModifiedList

用途：基金研究相关函数。
参数：arg1，arg2，arg3，arg4，arg5（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
FundInds := array("TSJJ0201", "TSJJ0203");
EndT := 20250409T;
NType := 1;
N := 5;
DTime := 20250408T + 15 / 24;
return Funds_GetJZModifiedList(FundInds, EndT, NType, N, DTime);
```

####### OpenEndFundFilterByFundIndex

用途：基金研究相关函数。
参数：arg1（按示例顺序传入）。
返回：整数。

范例

```tsl
sp_s(pn_date(), today());
return OpenEndFundFilterByFundIndex(array('TSJJ0203', 'TSJJ0201')); // 股、混
```

###### 关联度分析

####### 内容

- 关联矩阵

####### 关联矩阵

######## 内容

- 矩阵转化

######## 矩阵转化

######### 内容

- Network_Conv_AdjDir
- Network_Conv_ToDist

######### Network_Conv_AdjDir

范例

```tsl
matrix := array((0.0, 5.1, 19.36, 0.0, 0.0),
(5.1, 0.0, 10.26, 0.0, 0.0),
(19.36, 10.26, 0.0, 0.0, 0.0),
(0.0, 0.0, 0.0, 0.0, 5.26),
(0.0, 0.0, 0.0, 5.26, 0.0));
matrixType := 2; // 2：距离类矩阵
dirType := 1; // 目标方向：1-正向
return Network_Conv_AdjDir(matrix, matrixType, dirType);
```

######### Network_Conv_ToDist

范例

```tsl
matrix := array((0.0, 5.1, 19.36, 0.0, 0.0),
(5.1, 0.0, 10.26, 0.0, 0.0),
(19.36, 10.26, 0.0, 0.0, 0.0),
(0.0, 0.0, 0.0, 0.0, 5.26),
(0.0, 0.0, 0.0, 5.26, 0.0));
return Network_Conv_ToDist(matrix);
```

##### 量化数据接口

###### 内容

- 高频因子
- 风险模型(CNE5)
- 基金拓展

###### 高频因子

####### 内容

- TSBF_QMD_Ext
- TSBF_QMD_QK
- TSBF_QMD_MNdays
- TSBF_QMD_Ndays
- 仓库信息
- 统计函数
- Tsbf_qmd_mks

####### TSBF_QMD_Ext

用途：量化数据接口相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

范例一：提取 OF00001 在 20200317 日的测算仓位(%)

```tsl
sp_s(PN_Date(), 20200317T);
sp_s(PN_Stock(), 'OF000001');
return TSBF_QMD_Ext(9802001001); // 返回 76.40605
```

范例二：提取 OF00001 在 20200317 日的仓位测算详情表

```tsl
sp_s(PN_Date(), 20200317T);
sp_s(PN_Stock(), 'OF000001');
return TSBF_QMD_Ext(9802001);
```

####### TSBF_QMD_QK

用途：量化数据接口相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 提取 OF00001 在 20200317 日至20200321日的测算仓位(%)
sp_s(PN_Stock(), 'OF000001');
return TSBF_QMD_QK(9802001001, 20200317T, 20200321T);
```

76.40605
74.88955
70.62129
72.88006

####### TSBF_QMD_MNdays

用途：量化数据接口相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 在 20200317 日同时提取前 5 日的活力指数表、 市场涨停统计信息
sp_s(PN_Date(), 20200317T);
sp_s(PN_Stock(), 'QT001'); // QT001 即自编代码
return TSBF_QMD_MNdays(array(9802001, 9802007, 9802007003), 5);
```

####### TSBF_QMD_Ndays

用途：量化数据接口相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 获取OF000001连续5日的测算仓位，常数项及R2的指标值
sp_s(PN_Date(), 20200317T);
sp_s(PN_Stock(), 'OF000001');
return TSBF_QMD_Ndays(array(9802001000, 9802001001, 9802001002, 9802001004), 5);
```

| 截止日     | 测算仓位(%) | 常数项   | R2      |
| ---------- | ----------- | -------- | ------- |
| 2020-03-11 | 72.44629    | -0.0119  | 0.8485  |
| 2020-03-12 | 73.62084    | -0.06691 | 0.86713 |
| 2020-03-13 | 74.32688    | -0.10526 | 0.86676 |
| 2020-03-16 | 75.37592    | -0.13947 | 0.87897 |
| 2020-03-17 | 76.40605    | -0.14072 | 0.8798  |

####### 仓库信息

######## 内容

- Tsbf_qmd_tablefield
- Tsbf_qmd_alltable
- Tsbf_qmd_diystockid

######## Tsbf_qmd_tablefield

范例

```tsl
// 获取基金仓位表结构
return TSBF_QMD_TableField(9802001);
```

返回:

| ID         | 名称             | 表ID    | 表名称     |
| ---------- | ---------------- | ------- | ---------- |
| 9802001000 | 截止日           | 9802001 | 基金仓位表 |
| 9802001001 | 测算仓位(%)      | 9802001 | 基金仓位表 |
| 9802001002 | 常数项           | 9802001 | 基金仓位表 |
| 9802001003 | 债券仓位(%)      | 9802001 | 基金仓位表 |
| 9802001004 | R2               | 9802001 | 基金仓位表 |
| 9802001005 | 回归仓位1(%)     | 9802001 | 基金仓位表 |
| 9802001006 | 回归仓位2(%)     | 9802001 | 基金仓位表 |
| 9802001007 | 回归仓位3(%)     | 9802001 | 基金仓位表 |
| 9802001008 | 残差             | 9802001 | 基金仓位表 |
| 9802001009 | t值@常数项       | 9802001 | 基金仓位表 |
| 9802001010 | t值@回归仓位1(%) | 9802001 | 基金仓位表 |
| 9802001011 | t值@回归仓位2(%) | 9802001 | 基金仓位表 |
| 9802001012 | t值@回归仓位3(%) | 9802001 | 基金仓位表 |
| 9802001013 | t值@债券仓位(%)  | 9802001 | 基金仓位表 |

######## Tsbf_qmd_alltable

范例

```tsl
return TSBF_QMD_AllTable();
```

返回:

| ID      | 名称                   | 表ID    | 表名称                 |
| ------- | ---------------------- | ------- | ---------------------- |
| 9802001 | 基金仓位表             | 9802001 | 基金仓位表             |
| 9802002 | 股票涨停统计           | 9802002 | 股票涨停统计           |
| 9802003 | 指数换手率             | 9802003 | 指数换手率             |
| 9802004 | 破净占比表             | 9802004 | 破净占比表             |
| 9802005 | 活力指数               | 9802005 | 活力指数               |
| 9802006 | 指数高低价股数据表     | 9802006 | 指数高低价股数据表     |
| 9802007 | 创新高创新低占比数据表 | 9802007 | 创新高创新低占比数据表 |
| 9802008 | 超跌个股数据表         | 9802008 | 超跌个股数据表         |
| 9803001 | 191因子                | 9803001 | 191因子                |
| 9803002 | Barra系列描述因子      | 9803002 | Barra系列描述因子      |
| 9803003 | BarraCNE5因子          | 9803003 | BarraCNE5因子          |
| 9803004 | 筹码分布衍生指标       | 9803004 | 筹码分布衍生指标       |
| 9803005 | 三四五因子数据         | 9803005 | 三四五因子数据         |
| 9803006 | 风险模型因子收益率     | 9803006 | 风险模型因子收益率     |
| 9803007 | 特质收益率数据         | 9803007 | 特质收益率数据         |
| 9803008 | 聪明钱因子             | 9803008 | 聪明钱因子             |
| 9809001 | 基金行业仓位表         | 9809001 | 基金行业仓位表         |
| 9809002 | 净值收益率\_固定周期   | 9809002 | 净值收益率\_固定周期   |
| 9810001 | 可转债指标             | 9810001 | 可转债指标             |

######## Tsbf_qmd_diystockid

范例

```tsl
// 返回字段ID9802001001所在表结构的具体信息
return TSBF_QMD_DIYStockID(9802001001);
```

| 表ID    | 表名       | 代码  | 范围 | 投资风格 | 加权方式         | 板块 |
| ------- | ---------- | ----- | ---- | -------- | ---------------- | ---- |
| 9802001 | 基金仓位表 | QT001 | 基金 | 整体     | 50%              |      |
| 9802001 | 基金仓位表 | QT002 | 基金 | 整体     | 25%              |      |
| 9802001 | 基金仓位表 | QT003 | 基金 | 整体     | 75%              |      |
| 9802001 | 基金仓位表 | QT004 | 基金 | 整体     | 平均值           |      |
| 9802001 | 基金仓位表 | QT005 | 基金 | 整体     | 去头尾5%平均值   |      |
| 9802001 | 基金仓位表 | QT006 | 基金 | 整体     | 最新资产净值加权 |      |
| 9802001 | 基金仓位表 | QT007 | 基金 | 混合型   | 25%              |      |
| 9802001 | 基金仓位表 | QT008 | 基金 | 混合型   | 50%              |      |
| 9802001 | 基金仓位表 | QT009 | 基金 | 混合型   | 75%              |      |
| 9802001 | 基金仓位表 | QT010 | 基金 | 混合型   | 平均值           |      |
| 9802001 | 基金仓位表 | QT011 | 基金 | 混合型   | 去头尾5%平均值   |      |
| 9802001 | 基金仓位表 | QT012 | 基金 | 混合型   | 最新资产净值加权 |      |
| 9802001 | 基金仓位表 | QT013 | 基金 | 股票型   | 25%              |      |
| 9802001 | 基金仓位表 | QT014 | 基金 | 股票型   | 50%              |      |
| 9802001 | 基金仓位表 | QT015 | 基金 | 股票型   | 75%              |      |
| 9802001 | 基金仓位表 | QT016 | 基金 | 股票型   | 平均值           |      |
| 9802001 | 基金仓位表 | QT017 | 基金 | 股票型   | 去头尾5%平均值   |      |
| 9802001 | 基金仓位表 | QT018 | 基金 | 股票型   | 最新资产净值加权 |      |
| 9802001 | 基金仓位表 | QT019 | 基金 |          |                  | A股  |

####### 统计函数

######## 内容

- 中间函数
- Tsbf_qmd_ma
- Tsbf_qmd_percentrank

######## 中间函数

######### 内容

- Emptyvalue
- Tsbf_md_getexdata
- Tsbf_qmd_firstay
- Tsbf_qmd_lastupday
- Tsbf_qmd_qknum
- Tsbf_qmd_refnday
- Tsbf_qtmd_unit

######### Emptyvalue

- Emptyvalue
- Tsbf_md_getexdata
- Tsbf_qmd_firstay
- Tsbf_qmd_lastupday
- Tsbf_qmd_qknum
- Tsbf_qmd_refnday
- Tsbf_qtmd_unit

######### Tsbf_md_getexdata

- Emptyvalue
- Tsbf_md_getexdata
- Tsbf_qmd_firstay
- Tsbf_qmd_lastupday
- Tsbf_qmd_qknum
- Tsbf_qmd_refnday
- Tsbf_qtmd_unit

######### Tsbf_qmd_firstay

- Emptyvalue
- Tsbf_md_getexdata
- Tsbf_qmd_firstay
- Tsbf_qmd_lastupday
- Tsbf_qmd_qknum
- Tsbf_qmd_refnday
- Tsbf_qtmd_unit

######### Tsbf_qmd_lastupday

- Emptyvalue
- Tsbf_md_getexdata
- Tsbf_qmd_firstay
- Tsbf_qmd_lastupday
- Tsbf_qmd_qknum
- Tsbf_qmd_refnday
- Tsbf_qtmd_unit

######### Tsbf_qmd_qknum

- Emptyvalue
- Tsbf_md_getexdata
- Tsbf_qmd_firstay
- Tsbf_qmd_lastupday
- Tsbf_qmd_qknum
- Tsbf_qmd_refnday
- Tsbf_qtmd_unit

######### Tsbf_qmd_refnday

- Emptyvalue
- Tsbf_md_getexdata
- Tsbf_qmd_firstay
- Tsbf_qmd_lastupday
- Tsbf_qmd_qknum
- Tsbf_qmd_refnday
- Tsbf_qtmd_unit

######### Tsbf_qtmd_unit

- Emptyvalue
- Tsbf_md_getexdata
- Tsbf_qmd_firstay
- Tsbf_qmd_lastupday
- Tsbf_qmd_qknum
- Tsbf_qmd_refnday
- Tsbf_qtmd_unit

######## Tsbf_qmd_ma

范例

```tsl
// 求全A股在20191112T的过去250日破净占比(%)的平均值
N := 250;
setsysparam(pn_stock(), 'QT001');
setsysparam(pn_date(), 20191112T);
return TSBF_QMD_Ma(9802004001, 250); // 返回：8.09367
```

######## Tsbf_qmd_percentrank

范例

```tsl
// 全A股在20191112T的破净占比历史百分位(%)
N := 250;
setsysparam(pn_stock(), 'QT001');
setsysparam(pn_date(), 20191112T);
return TSBF_QMD_Percentrank(9802004001, 250); // 94.7791
```

####### Tsbf_qmd_mks

用途：量化数据接口相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 获取OF000001与OF510050在20200317日的测算仓位，常数项及R2的指标值
sp_s(PN_Date(), 20200317T);
return Tsbf_qmd_mks(array(9802001000, 9802001001, 9802001002, 9802001004), array('OF000001', 'OF510050'));
```

| 代码     | 截止日     | 测算仓位(%) | 常数项   | R2      |
| -------- | ---------- | ----------- | -------- | ------- |
| OF000001 | 2020-03-17 | 76.40605    | -0.14072 | 0.8798  |
| OF510050 | 2020-03-17 | 90.24782    | -0.0244  | 0.96051 |

###### 风险模型(CNE5)

####### 内容

- Index_stylefactor
- Pf_stylefactor
- Stockstylefactor
- Stocks_stylefactor

####### Index_stylefactor

用途：量化数据接口相关函数。
参数：arg1（按示例顺序传入）。
返回：整数。

范例

```tsl
oV := BackUpSystemParameters2();
SetSysParam(pn_stock(), 'SH000300');
SetSysParam(pn_date(), 2020601T);
return Index_StyleFactor(2);
```

####### Pf_stylefactor

用途：量化数据接口相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
Portfolio := array(("代码":"SZ000001", "比例(%)":50),
("代码":"SZ000002", "比例(%)":50));
EndT := 20200601T;
DType := 2;
return pf_StyleFactor(Portfolio, EndT, DType);
```

####### Stockstylefactor

用途：量化数据接口相关函数。
参数：arg1（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(pn_stock(), 'SH600000');
SetSysParam(pn_date(), 20200509T);
return StockStyleFactor(1);
```

####### Stocks_stylefactor

###### 基金拓展

####### 内容

- 风险调整收益及风险

####### 风险调整收益及风险

##### 量化套利

###### 内容

- 事件套利

###### 事件套利

####### 内容

- 事件因子

####### 事件因子

######## 内容

- ET_Amount_Ratio
- ET_Hsl_Ratio
- ET_Vol_Ratio
- ET_Zf_Ratio
- Stock_EventEffect
- Stock_Event_IndicatorChange

######## ET_Amount_Ratio

范例

```tsl
SetSysParam(pn_stock(), "SZ000001");
SetSysParam(pn_Date(), 20230426T);
N := 120; M := 10; cType := 0;
r := ET_Amount_Ratio(N, M, cType);
return r;
// 0.11064783
```

######## ET_Hsl_Ratio

范例

```tsl
SetSysParam(pn_stock(), "SZ000001");
SetSysParam(pn_Date(), 20230426T);
N := 120; M := 10; cType := 0;
r := ET_Hsl_Ratio(N, M, cType);
return r; // 0.11247812
```

######## ET_Vol_Ratio

范例

```tsl
SetSysParam(pn_stock(), "SZ000001");
SetSysParam(pn_Date(), 20230426T);
N := 120; M := 10; cType := 0;
r := ET_Vol_Ratio(N, M, cType);
return r;
// 0.11247812
```

######## ET_Zf_Ratio

范例

```tsl
SetSysParam(pn_stock(), "SZ000001");
SetSysParam(pn_Date(), 20230426T);
N := 120; M := 10; cType := 0;
r := ET_Zf_Ratio(N, M, cType);
return r;
// 0.25091065
```

######## Stock_EventEffect

范例

```tsl
// 返回事件窗口日为3，基准指数为沪深300的累计超额收益率
SetSysParam(pn_stock(), "SZ000001");
SetSysParam(pn_Date(), 20230426T);
EventDay := 3;
IndexID := "SH000300";
IndicatorType := 0;
IndicatorRelativeType := 2;
IndicatorRelativeType := 0;
r := Stock_EventEffect(EventDay, IndexID, IndicatorType, IndicatorRelativeType, IndicatorCountType);
return r; // 3.66449511
```

######## Stock_Event_IndicatorChange

范例

```tsl
// 返回事件后10天日均换手率比时间前120天日均换手率
SetSysParam(pn_stock(), "SZ000001");
SetSysParam(pn_Date(), 20230426T);
N := 120;
M := 10;
IndicatorType := 1;
IndicatorCountType := 1;
r := Stock_Event_IndicatorChange(N, M, IndicatorType, IndicatorCountType);
return r; // 1.22703407
```

##### 债券研究

###### 内容

- 利率期限结构
- 利率因子
- 利差因子

###### 利率期限结构

####### 内容

- Bonds_NSBetaSensRet
- Bonds_NSModelBeta
- Bonds_NSModelBetaNL
- Bond_NSBetaSensitivity
- NSBetaSensitivityCal

####### Bonds_NSBetaSensRet

用途：债券研究相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
PBondID := "BTS000033";
Begt := 20230724t;
Endt := 20230725t;
Delta := 20;
Constant := 0;
lambda := 0.5;
return Bonds_NSBetaSensRet(PBondID, Begt, Endt, Delta, Constant, lambda);
```

####### Bonds_NSModelBeta

用途：债券研究相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
PBondID := "BTS000033"; // 国债
Endt := 20230725t;
Lambda := 0.5;
return Bonds_NSModelBeta(PBondID, Endt, Lambda);
// array(3.08,-1.43,-0.58)
```

####### Bonds_NSModelBetaNL

用途：债券研究相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
BondArr := array("SH020564", "SH019644", "SH019694", "SH019685", "SH019693", "SH019643", "SH019667", "SH019647", "SH019625", "SH019684");
Endt := 20230725t;
Lambda := 0.5;
return Bonds_NSModelBetaNL(BondArr, Endt, Lambda);
// array(2.8,-1.46,0.95)
```

####### Bond_NSBetaSensitivity

用途：债券研究相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
BondID := "SH019680";
Endt := 20230725t;
NSParamArr := array("lambda":0.5, "beta0":4, "beta1":-1, "beta2":1);
Delta := 20;
return Bond_NSBetaSensitivity(BondID, Endt, NSParamArr, Delta);
// array(0.57,0.49,0.07)
```

####### NSBetaSensitivityCal

用途：债券研究相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

范例1

```tsl
CashData := array(("现金流":1.7, "剩余期限":1), ("现金流":1.7, "剩余期限":2), ("现金流":1.7, "剩余期限":3), ("现金流":1.7, "剩余期限":4), ("现金流":1.7, "剩余期限":5), ("现金流":1.7, "剩余期限":6), ("现金流":1.7, "剩余期限":7), ("现金流":1.7, "剩余期限":8), ("现金流":1.7, "剩余期限":9), ("现金流":101.7, "剩余期限":10));
Endt := 20230725t;
NSParamArr := array("lambda":0.5, "beta0":4, "beta1":-1, "beta2":1);
Delta := 20;
return NSBetaSensitivityCal(CashData, Endt, NSParamArr, Delta);
// array(1.02,0.8,0.19)
```

###### 利率因子

####### 内容

- Bond_EffectiveDuration
- Bond_EffectiveConvexity
- Bond_KeyRateDuration

####### Bond_EffectiveDuration

用途：债券研究相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

算法ED=（P\_ - P+）/（2 _ P0 _ Δy），

P0表示债券现金流贴现价格，

Δy表示利率变动值，

P\_ 、P+分别表示债券收益率曲线向下或向上平移若干个基点后的债券价格范例

```tsl
Setsysparam(PN_Stock(), 'SH194037');
endt := 20200101T;
return Bond_EffectiveDuration(EndT, 0.0001, 'BTS000033', 2);
// 执行结果：4.92925411770183
```

####### Bond_EffectiveConvexity

用途：债券研究相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

算法EC=（P\_ + P+ - 2 _ P0）/（P0 _ （Δy）2）

P0表示债券现金流贴现价格，

Δy表示利率变动值，

P\_ 、P+分别表示债券收益率曲线向下或向上平移若干个基点后的债券价格范例

```tsl
Setsysparam(PN_Stock(), 'SH194037');
endt := 20200101T;
return Bond_EffectiveConvexity(EndT, 0.0001, 'BTS000033', 2);
// 执行结果：29.2364563483935
```

####### Bond_KeyRateDuration

用途：债券研究相关函数。
参数：arg1，arg2，arg3，arg4，arg5，arg6（按示例顺序传入）。
返回：处理后的结果值。

算法

首先提取指定日债券收益率曲线数据，使用线性插值法获得关键年期即期利率。提取指定债券现金流数据，并通过权重分配计算前后关键年期的现金流映射数据，得到债券现金流对应的关键年期现金流数据。最后通过公式计算关键利率久期。关键利率久期的计算公式如下:

Dkrd,i=-1PPyi=P-,i-P+,i2*P0*?yi

其中，Dkrd,i为第i个关键期限点的关键利率久期；n为关键期限点个数；yi分别为第i个关键期限点的利率变动；P0为债券的估值全价，P-,i、P+,i为第i个关键期限点利率变动yi后对应的债券估值全价。范例

```tsl
endt := 20200902T;
Ayear := 5;
RateChange := 0.0001;
keyyear := array(0, 0.25, 0.5, 1, 3, 5, 7, 10, 15, 20, 30, 50);
PBondID := "BTS000033";
Stockid := "BK020005";
N := 60;
Setsysparam(pn_Stock(), Stockid);
KRD := Bond_KeyRateDuration(Endt, Ayear, RateChange, keyyear, PbondID, N);
return KRD;
// 执行结果：0.248959583004042
```

###### 利差因子

####### 内容

- Bond_GSpread
- Bond_ZSpread

####### Bond_GSpread

用途：债券研究相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

算法个券到期收益率与同期限基准曲线收益率的差值范例

```tsl
Setsysparam(PN_Stock(), 'SH194037');
endt := 20230103T;
return Bond_GSpread(EndT, 'BTS000033', 2);
// 执行结果：1.16479423315908
```

####### Bond_ZSpread

用途：债券研究相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

算法在收益率曲线的基础上，使得债券现金流贴现价格等于全价时所需添加的利差

P=t=1nCFt(1+ft+ZSpread)t范例

```tsl
Setsysparam(PN_Stock(), 'SH194037');
endt := 20230103T;
return Bond_ZSpread(EndT, 'BTS000033', 2); // 1.17
```

##### 绩效分析

###### 内容

- 权重运算

###### 权重运算

####### 内容

- fipwc_CalEndWeight
- fipwc_CalportfolioZF
- fipwc_DerBeginWeight

####### fipwc_CalEndWeight

用途：绩效分析相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：整数。

范例

```tsl
sw := array(200, 50);
zf := array(50, 0);
return fipwc_CalEndWeight(sw, zf);
// 结果：array(150.0,25.0)
```

####### fipwc_CalportfolioZF

用途：绩效分析相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
sw := array(200, 50);
zf := array(50, 0);
return fipwc_CalportfolioZF(sw, zf);
// 结果：100
```

####### fipwc_DerBeginWeight

用途：绩效分析相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
w := array(50, 33.3);
zf := array(20, 33.3);
return fipwc_DerBeginWeight(w, zf);
// 结果：array(49.99,29.97)
```

##### 风险模型

###### 内容

- 应用

###### 应用

####### 内容

- 风险分析

####### 风险分析

######## 内容

- RM_ES
- RM_pfBeta
- RM_Sigma
- RM_StockBeta
- RM_VaR
- 算法层

######## RM_ES

范例

```tsl
PData := array(("代码":"SH600519", "比例(%)":2),
("代码":"SH601318", "比例(%)":2),
("代码":"SH600036", "比例(%)":2),
("代码":"SH600276", "比例(%)":2),
("代码":"SH601166", "比例(%)":2));
FactorExp := array(
("代码":"SH600519", "市值因子":1.15, "贝塔因子":-0.50, "动量因子":0.46), ("代码":"SH601318", "市值因子":1.15, "贝塔因子":-0.44, "动量因子":-0.17),
("代码":"SH600036", "市值因子":1.15, "贝塔因子":-0.63, "动量因子":0.28),
("代码":"SH600276", "市值因子":1.15, "贝塔因子":-0.59, "动量因子":-0.40),
("代码":"SH601166", "市值因子":1.15, "贝塔因子":-1.33, "动量因子":0.10));
FactorRetCov := array(
"市值因子":("市值因子":0.07, "贝塔因子":0.01, "动量因子":0.03),
"贝塔因子":("市值因子":0.01, "贝塔因子":0.07, "动量因子":-0.01),
"动量因子":("市值因子":0.03, "贝塔因子":-0.01, "动量因子":0.09));
SpecificRetVar := array(("代码":"SH600036", "特质收益方差":6.59),
("代码":"SH600276", "特质收益方差":15.43),
("代码":"SH600519", "特质收益方差":7.66),
("代码":"SH601166", "特质收益方差":6.07),
("代码":"SH601318", "特质收益方差":6.66));
ConfidenceInterval := 95;
return RM_ES(PData, FactorExp, FactorRetCov, SpecificRetVar, ConfidenceInterval);
// 返回：0.28
```

######## RM_pfBeta

范例

```tsl
PData := array(("代码":"SH600519", "比例(%)":2),
("代码":"SH601318", "比例(%)":2),
("代码":"SH600036", "比例(%)":2),
("代码":"SH600276", "比例(%)":2),
("代码":"SH601166", "比例(%)":2));
BData := array(("代码":"SH600519", "比例(%)":13.22),
("代码":"SH601318", "比例(%)":12.40),
("代码":"SH600036", "比例(%)":7.16),
("代码":"SH600276", "比例(%)":5.48),
("代码":"SH601166", "比例(%)":4.00));
FactorExp := array(
("代码":"SH600519", "市值因子":1.15, "贝塔因子":-0.50, "动量因子":0.46), ("代码":"SH601318", "市值因子":1.15, "贝塔因子":-0.44, "动量因子":-0.17),
("代码":"SH600036", "市值因子":1.15, "贝塔因子":-0.63, "动量因子":0.28),
("代码":"SH600276", "市值因子":1.15, "贝塔因子":-0.59, "动量因子":-0.40),
("代码":"SH601166", "市值因子":1.15, "贝塔因子":-1.33, "动量因子":0.10));
FactorRetCov := array(
"市值因子":("市值因子":0.07, "贝塔因子":0.01, "动量因子":0.03),
"贝塔因子":("市值因子":0.01, "贝塔因子":0.07, "动量因子":-0.01),
"动量因子":("市值因子":0.03, "贝塔因子":-0.01, "动量因子":0.09));
SpecificRetVar := array(("代码":"SH600036", "特质收益方差":6.59),
("代码":"SH600276", "特质收益方差":15.43),
("代码":"SH600519", "特质收益方差":7.66),
("代码":"SH601166", "特质收益方差":6.07),
("代码":"SH601318", "特质收益方差":6.66));
return RM_pfBeta(PData, BData, FactorExp, FactorRetCov, SpecificRetVar);
// 返回：0.21
```

######## RM_Sigma

范例

```tsl
PData := array(("代码":"SH600519", "比例(%)":2),
("代码":"SH601318", "比例(%)":2),
("代码":"SH600036", "比例(%)":2),
("代码":"SH600276", "比例(%)":2),
("代码":"SH601166", "比例(%)":2));
FactorExp := array(
("代码":"SH600519", "市值因子":1.15, "贝塔因子":-0.50, "动量因子":0.46), ("代码":"SH601318", "市值因子":1.15, "贝塔因子":-0.44, "动量因子":-0.17),
("代码":"SH600036", "市值因子":1.15, "贝塔因子":-0.63, "动量因子":0.28),
("代码":"SH600276", "市值因子":1.15, "贝塔因子":-0.59, "动量因子":-0.40),
("代码":"SH601166", "市值因子":1.15, "贝塔因子":-1.33, "动量因子":0.10));
FactorRetCov := array(
"市值因子":("市值因子":0.07, "贝塔因子":0.01, "动量因子":0.03),
"贝塔因子":("市值因子":0.01, "贝塔因子":0.07, "动量因子":-0.01),
"动量因子":("市值因子":0.03, "贝塔因子":-0.01, "动量因子":0.09));
SpecificRetVar := array(("代码":"SH600036", "特质收益方差":6.59),
("代码":"SH600276", "特质收益方差":15.43),
("代码":"SH600519", "特质收益方差":7.66),
("代码":"SH601166", "特质收益方差":6.07),
("代码":"SH601318", "特质收益方差":6.66));
return RM_Sigma(PData, FactorExp, FactorRetCov, SpecificRetVar);
// 返回：0.13
```

######## RM_StockBeta

范例

```tsl
BData := array(("代码":"SH600519", "比例(%)":13.22),
("代码":"SH601318", "比例(%)":12.40),
("代码":"SH600036", "比例(%)":7.16),
("代码":"SH600276", "比例(%)":5.48),
("代码":"SH601166", "比例(%)":4.00));
FactorExp := array(
("代码":"SH600519", "市值因子":1.15, "贝塔因子":-0.50, "动量因子":0.46), ("代码":"SH601318", "市值因子":1.15, "贝塔因子":-0.44, "动量因子":-0.17),
("代码":"SH600036", "市值因子":1.15, "贝塔因子":-0.63, "动量因子":0.28),
("代码":"SH600276", "市值因子":1.15, "贝塔因子":-0.59, "动量因子":-0.40),
("代码":"SH601166", "市值因子":1.15, "贝塔因子":-1.33, "动量因子":0.10));
FactorRetCov := array(
"市值因子":("市值因子":0.07, "贝塔因子":0.01, "动量因子":0.03),
"贝塔因子":("市值因子":0.01, "贝塔因子":0.07, "动量因子":-0.01),
"动量因子":("市值因子":0.03, "贝塔因子":-0.01, "动量因子":0.09));
SpecificRetVar := array(("代码":"SH600036", "特质收益方差":6.59),
("代码":"SH600276", "特质收益方差":15.43),
("代码":"SH600519", "特质收益方差":7.66),
("代码":"SH601166", "特质收益方差":6.07),
("代码":"SH601318", "特质收益方差":6.66));
return RM_StockBeta(BData, FactorExp, FactorRetCov, SpecificRetVar);
// 返回：
```

######## RM_VaR

范例

```tsl
PData := array(("代码":"SH600519", "比例(%)":2),
("代码":"SH601318", "比例(%)":2),
("代码":"SH600036", "比例(%)":2),
("代码":"SH600276", "比例(%)":2),
("代码":"SH601166", "比例(%)":2));
FactorExp := array(
("代码":"SH600519", "市值因子":1.15, "贝塔因子":-0.50, "动量因子":0.46), ("代码":"SH601318", "市值因子":1.15, "贝塔因子":-0.44, "动量因子":-0.17),
("代码":"SH600036", "市值因子":1.15, "贝塔因子":-0.63, "动量因子":0.28),
("代码":"SH600276", "市值因子":1.15, "贝塔因子":-0.59, "动量因子":-0.40),
("代码":"SH601166", "市值因子":1.15, "贝塔因子":-1.33, "动量因子":0.10));
FactorRetCov := array(
"市值因子":("市值因子":0.07, "贝塔因子":0.01, "动量因子":0.03),
"贝塔因子":("市值因子":0.01, "贝塔因子":0.07, "动量因子":-0.01),
"动量因子":("市值因子":0.03, "贝塔因子":-0.01, "动量因子":0.09));
SpecificRetVar := array(("代码":"SH600036", "特质收益方差":6.59),
("代码":"SH600276", "特质收益方差":15.43),
("代码":"SH600519", "特质收益方差":7.66),
("代码":"SH601166", "特质收益方差":6.07),
("代码":"SH601318", "特质收益方差":6.66));
ConfidenceInterval := 95;
return RM_VaR(PData, FactorExp, FactorRetCov, SpecificRetVar, ConfidenceInterval);
// 返回：0.22
```

######## 算法层

######### 内容

- FFI_ES
- FFI_pfBeta
- FFI_Sigma
- FFI_StockBeta
- FFI_VaR

######### FFI_ES

范例

```tsl
w_p := array(0.02, 0.02, 0.02, 0.02, 0.02);
X := array((1.149137, -1.274572), (1.006287, -1.158997),
(1.149137, -1.737788), (1.149137, 0.195703),
(0.878002, 0.686087)
);
F := array((0.047695, 0.008424), (0.008424, 0.051119));
Delta := array(7.662437, 6.661245, 6.594110, 15.436516, 6.071548);
ConfidenceInterval := 95;
return FFI_ES(w_p, X, F, Delta, ConfidenceInterval);
// 返回：0.27
```

######### FFI_pfBeta

范例

```tsl
w_b := array(0.13215, 0.12403, 0.0716, 0.05476, 0.03995);
w_p := array(0.02, 0.02, 0.02, 0.02, 0.02);
X := array((1.149137, -1.274572), (1.006287, -1.158997),
(1.149137, -1.737788), (1.149137, 0.195703),
(0.878002, 0.686087)
);
F := array((0.047695, 0.008424), (0.008424, 0.051119));
Delta := array(7.662437, 6.661245, 6.594110, 15.436516, 6.071548);
return FFI_pfBeta(w_b, w_p, X, F, Delta);
// 返回：4.03
```

######### FFI_Sigma

范例

```tsl
w_p := array(0.02, 0.02, 0.02, 0.02, 0.02);
X := array((1.149137, -1.274572), (1.006287, -1.158997),
(1.149137, -1.737788), (1.149137, 0.195703),
(0.878002, 0.686087)
);
F := array((0.047695, 0.008424), (0.008424, 0.051119));
Delta := array(7.662437, 6.661245, 6.594110, 15.436516, 6.071548);
return FFI_Sigma(w_p, X, F, Delta);
// 返回：0.13
```

######### FFI_StockBeta

范例

```tsl
w_b := array(0.13215, 0.12403, 0.0716, 0.05476, 0.03995);
X := array((1.149137, -1.274572), (1.006287, -1.158997),
(1.149137, -1.737788), (1.149137, 0.195703),
(0.878002, 0.686087)
);
F := array((0.047695, 0.008424), (0.008424, 0.051119));
Delta := array(7.662437, 6.661245, 6.594110, 15.436516, 6.071548);
return FFI_StockBeta(w_b, X, F, Delta);
// 返回：
```

######### FFI_VaR

范例

```tsl
w_p := array(0.02, 0.02, 0.02, 0.02, 0.02);
X := array((1.149137, -1.274572), (1.006287, -1.158997),
(1.149137, -1.737788), (1.149137, 0.195703),
(0.878002, 0.686087));
F := array((0.047695, 0.008424), (0.008424, 0.051119));
Delta := array(7.662437, 6.661245, 6.594110, 15.436516, 6.071548);
ConfidenceInterval := 95;
return FFI_VaR(w_p, X, F, Delta, ConfidenceInterval);
// 返回：0.22
```

##### 因子研究

###### 内容

- 因子计算
- 绩效分析
- 因子组

###### 因子计算

####### 内容

- 数据获取

####### 数据获取

######## 内容

- 中间函数

######## 中间函数

######### 内容

- MF_GetBenchmarketRate
- MF_Industry_Current
- MF_Industry_New

######### MF_GetBenchmarketRate

范例

范例1：单个指数作为基准

```tsl
IndexID := "SH000300";
BegT := 20230801t;
EndT := 20230901t;
return Method := 1; // 涨幅法
return MF_GetBenchmarketRate(IndexID, BegT, EndT, return Method);
```

返回:

范例2：多个券合成基准

```tsl
IndexID := array("SZ00001", "SH600000", "SZ000002");
BegT := 20230801t;
EndT := 20230901t;
return Method := 1; // 涨幅法
return MF_GetBenchmarketRate(IndexID, BegT, EndT, return Method);
```

返回:

######### MF_Industry_Current

范例

```tsl
oV := BackUpSystemParameters2();
setsysparam(pn_stock(), 'SH601318');
setsysparam(pn_date(), 20241206T);
IndustryType := 1;
type := 2;
level := 1;
return MF_Industry_Current(IndustryType, type, level); // "SWHY490000"
```

######### MF_Industry_New

范例

```tsl
oV := BackUpSystemParameters2();
setsysparam(pn_stock(), 'SH601318');
setsysparam(pn_date(), 20241206T);
IndustryType := 1;
type := 2;
level := 1;
return MF_Industry_New(IndustryType, type, level); // "SW801790"
```

###### 绩效分析

####### 内容

- 净值趋势评价

####### 净值趋势评价

######## 内容

- FIP_Trend_CrossMAPercent
- FIP_Trend_NHPercent
- FIP_Trend_OverMAPercent
- FIP_Trend_TrendPower
- FI_Trend_CrossMAPercent
- FI_Trend_NHPercent
- FI_Trend_OverMAPercent
- FI_Trend_TrendPower

######## FIP_Trend_CrossMAPercent

范例

```tsl
p := array(10, 20, 50, 40, 20, 30);
MAnum := 3;
return FIP_Trend_CrossMAPercent(p, MAnum); // 20
```

######## FIP_Trend_NHPercent

范例

```tsl
p := array(10, 20, 50, 40, 20, 30);
return FIP_Trend_NHPercent(p); // 40
```

######## FIP_Trend_OverMAPercent

范例

```tsl
p := array(10, 20, 50, 40, 20, 30);
MAnum := 3;
return FIP_Trend_OverMAPercent(p, MAnum); // 60
```

######## FIP_Trend_TrendPower

范例

```tsl
p := array(10, 20, 50, 40, 20, 30);
delta := 2;
return FIP_Trend_TrendPower(p, delta); // 25
```

######## FI_Trend_CrossMAPercent

范例

```tsl
r := array(4.5, 2.3, -1.5, 2.5, -3.3, 3);
MAnum := 3;
return FI_Trend_CrossMAPercent(r, MAnum); // 66.6666666666667
```

######## FI_Trend_NHPercent

范例

```tsl
r := array(4.5, 2.3, -1.5, 2.5, -3.3, 3);
return FI_Trend_NHPercent(r); // 50
```

######## FI_Trend_OverMAPercent

范例

```tsl
r := array(4.5, 2.3, -1.5, 2.5, -3.3, 3);
MAnum := 3;
return FIP_Trend_OverMAPercent(r, MAnum); // 40
```

######## FI_Trend_TrendPower

范例

```tsl
r := array(4.5, 2.3, -1.5, 2.5, -3.3, 3);
delta := 2;
return FI_Trend_TrendPower(r, delta); // 89.7011722230414
```

###### 因子组

####### 内容

- TS_GroupFactorReturn

####### TS_GroupFactorReturn

用途：因子研究相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
return?TS_GroupFactorReturn(1004, 20240401T, 20240405T, cy_day());
```

##### 量化择时

###### 内容

- 市场结构

###### 市场结构

####### 内容

- 涨停股

####### 涨停股

######## 内容

- 中间函数

######## 中间函数

######### 内容

- StockDTLBNumByEndt
- StockZtLBNumByEndt2

######### StockDTLBNumByEndt

范例

```tsl
// SZ002123在20250218跌停连板次数统计
SetSysParam(pn_stock(), "SZ002123");
return StockDTLBNumByEndt(20250218T);
// 结果：2
```

######### StockZtLBNumByEndt2

范例

```tsl
// "SH603139"在20250320的连板次数
setsysparam(pn_stock(), "SH603139");
return StockZtLBNumByEndt2(20250320T); // 结果：2
```

##### 期权基本函数

###### 内容

- 期权板块

###### 期权板块

####### 内容

- OP_GetOptionList

####### OP_GetOptionList

用途：期权基本函数相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 获取20250806标的为上证50etf在市的期权合约
stockid := 'SH510050';
endt := 20250806T;
return OP_GetOptionList(StockID, endt);
```
