Mirror docs/tsl/codegen into the bundled tsl-api-reference skill and rebuild the function index. Remove invalid duplicate API entries for cb_delistedbydate, createhttpsession, exportJsonString, and Anova_Bartlett so exact lookup returns the canonical entries.
30 KiB
Builtin - 数学 / 矩阵
矩阵运算
mInit(size_or_shape, value)
生成指定尺寸并填充指定值的 FMArray。
| 参数 | 类型 | 说明 |
|---|---|---|
size_or_shape |
array | 一维长度,或形如 array(rows, cols) 的尺寸数组 |
value |
float | 填充值;值的类型决定 FMArray 单元格类型 |
返回:fmarray
mInitDiag(rows, cols, value)
生成对角线填充值的 FMArray。
| 参数 | 类型 | 说明 |
|---|---|---|
rows |
integer | 行数 |
cols |
integer | 列数 |
value |
float | 对角线填充值 |
返回:fmarray
mRand(rows, cols)
生成随机 FMArray。
| 参数 | 类型 | 说明 |
|---|---|---|
rows |
integer | 行数 |
cols |
integer | 列数 |
返回:fmarray
数值微积分
MTM_f(n, m, _type)
动力指标
| 参数 | 类型 | 说明 |
|---|---|---|
n |
any | 天数 |
m |
any | 天数 |
_type |
any | 结果类型 |
返回:any
MTMMa_v(n, m)
动力指标MTM的移动平均MTMMa,与系统证券pn_stock()、系统时间pn_date()、系统周期pn_cycle()、复权方式pn_rate()和复权基准日pn_rateday()相关。调用时需注意设置系统参数。
| 参数 | 类型 | 说明 |
|---|---|---|
n |
any | 整数,交易日天数 |
m |
any | 整数,交易日天数 |
返回:float
MTM_v(n)
动力指标MTM,计算当日收盘价C与N日前的收盘价Cn之差M,差值越来越大则意味着市势正加速上升,与系统证券pn_stock()、系统时间pn_date()、系统周期pn_cycle()、复权方式pn_rate()和复权基准日pn_rateday()相关。调用时需注意设置系统参数。
| 参数 | 类型 | 说明 |
|---|---|---|
n |
any | 整数,交易日天数 |
返回:float
frameMean_JS(data, b_type, equal_var, alpha)
均值JS压缩估计
| 参数 | 类型 | 说明 |
|---|---|---|
data |
array | 二维数据表,T×N,T期样本数量,N个股票 |
b_type |
string | 字符串,压缩目标均值向量,b0:零向量,b1:均值,b2:波动率加权均值,b3:样本均值的均方误差 |
equal_var |
bool | object |
alpha |
float | 实数,压缩系数,0到1,缺省时系统自动计算(推荐),计算方式见JS均值压缩估计 |
返回:array
frameMean_BS(data, alpha)
均值BS压缩估计
| 参数 | 类型 | 说明 |
|---|---|---|
data |
array | 二维数据表,T×N,T期样本数量,N个股票 |
alpha |
float | 实数,压缩系数,0到1,缺省时系统自动计算(推荐),计算方式见BS均值压缩估计 |
返回:array
frameMean_BOP(data, b_type, alpha)
均值BOP压缩估计
| 参数 | 类型 | 说明 |
|---|---|---|
data |
array | 二维数据表,T×N,T期样本数量,N个股票 |
b_type |
string | 字符串,压缩目标均值向量,b0:零向量,b1:均值,b2:波动率加权均值,b3:样本均值的均方误差 |
alpha |
float | 实数,压缩系数,0到1,缺省时系统自动计算(推荐),计算方式见BOP均值压缩估计 |
返回:array
frameCov_LW(data, alpha)
协方差LW压缩估计
| 参数 | 类型 | 说明 |
|---|---|---|
data |
array | 二维数据表,T×N,T期样本数量,N个股票 |
alpha |
float | 实数,压缩系数,0到1,缺省时系统自动计算(推荐),计算方式见LW协方差压缩估计 |
返回:array
frameCov_OAS(data, alpha)
协方差OAS压缩估计
| 参数 | 类型 | 说明 |
|---|---|---|
data |
array | 二维数据表,T×N,T期样本数量,N个股票 |
alpha |
float | 实数,压缩系数,0到1,缺省时系统自动计算(推荐),计算方式见OAS协方差压缩估计 |
返回:array
frameCov_BS(data, alpha)
协方差BS压缩估计
| 参数 | 类型 | 说明 |
|---|---|---|
data |
array | 二维数据表,T×N,T期样本数量,N个股票 |
alpha |
float | 实数,压缩系数,0到1,缺省时系统自动计算(推荐),计算方式见BS协方差压缩估计 |
返回:array
ar_GetValue2()
数组类型教学函数。返回当前股票历史资产负债表序列的第四项,与系统参数(股票)相关。
返回:array
ar_SubArray(stocks, rdate)
字符串数组类型教学函数。返回字符串数组Stocks中每一只股票在指定报告期Rdate的十大股东情况。
| 参数 | 类型 | 说明 |
|---|---|---|
stocks |
array | 证券,股票代码 |
rdate |
datetime | 报告期 |
返回:array
ar_Define1(_type)
数组类型教学函数。跟据Type的值来返回相应的随机数组。
| 参数 | 类型 | 说明 |
|---|---|---|
_type |
any | 用户自定义 |
返回:array
ar_GetValue1(bkname)
数组类型教学函数。对板块Bkname下证券代码遍历,获得每个证券当前时间的收盘价。
| 参数 | 类型 | 说明 |
|---|---|---|
bkname |
string | 市场与板块 |
返回:array
ar_Define3()
数组类型教学函数。创建一个10×10的二维随机数组,同时对列下标命名。
返回:array
Demo_mt_va_Cholesky()
mt_va_Cholesky()函数教学函数。对指定对称正定矩阵的行列式值平方根,其中矩阵为array( (5.0,7.0,6.0,5.0),(7.0,12.0,8.0,7.0), (6.0,8.0,10.0,9.0),(5.0,7.0,9.0,10.0));。
返回:float
Demo_mt_iv_Gauss_Jordan()
mt_iv_Gauss_Jordan()函数教学函数。求一般实矩阵的逆矩阵,其中求逆的矩阵A=array((0.2368,0.2471,0.2568,1.2671),(0.1968,0.2071,1.2168,0.2271),(0.1581,1.1675,0.1768,0.1871),(1.1161,0.1254,0.1397,0.149))。
返回:any
Demo_mt_Subtraction()
mt_Subtraction()函数教学函数。矩阵减法,其中矩阵A=array((3,-3),(5,-5)),B=array((-2,4),(1,8)),返回A-B。
返回:any
Demo_mt_Addition()
mt_Addition ()函数教学函数。矩阵加法,其中矩阵A=array((3,-3),(5,-5)),B=array((-2,4),(1,8)),返回A+B。
返回:any
Demo_mt_Transposition()
mt_Transposition()函数教学函数。矩阵转置,返回转置后的矩阵,其中转置的矩阵A=array((3,-3,11),()5,-5,8)。
返回:any
Framedrop_duplicates(data, subset, keep, rowname)
数据表-去重
| 参数 | 类型 | 说明 |
|---|---|---|
data |
array | Table,二维数据表,源数据 |
subset |
string | String,去重字段 |
keep |
string | String,去重保留方法,""f"":保留首个,""l"":保留最后 |
rowname |
string | String,保留原索引重置字段名 |
返回:array
Framedrop_na(data, how, subset)
数据表-去掉含Nan的行
| 参数 | 类型 | 说明 |
|---|---|---|
data |
array | Table,二维数据表,源数据 |
how |
string | String,去na行方法,默认/1/""any"":任意,2/""all"":所有 |
subset |
string | String,去重字段 |
返回:array
framePivot_table(t, index, columns, vals, aggfunc, aggfuncnames)
分组、透视、汇总,类似可见Pivot_table
| 参数 | 类型 | 说明 |
|---|---|---|
t |
any | 数据表类型,数据表 |
index |
string | 字符串,行分类字段,字段值含有nill等不可设为索引 |
columns |
array | 一维字符串数组,列分类字段,字段值含有nill等不可设为索引 |
vals |
array | 一维字符串数组,值字段,未指定时,代表对所有除index、columns 指定字段之外的所有字段计算 |
aggfunc |
string | 字符串,值汇总函数,支持如下:;a、所有 TS_SQL 聚合函数:e.g:"avg"(avgof),"sum"(sumof);b、内置函数:;"_details": 分组详情;"_first": 第一个;"_last": 最后一个;c、自定义函数中使用关键字thisgroup 得到当前分组数据。 |
aggfuncnames |
array | 一维字符串数组,自定义汇总函数名称对照表 |
返回:array
Framelag_zf(t, period, fillzero)
数据表-推移涨幅(%) 涨幅(%)算法: period>0: 前n期涨幅 r[i] := (t(i)/t(i-period)-1)*100; period<0: 到未来n期涨幅 r[i] := (t(i-period)/t(i)-1)*100; 注意period>0时,与framePct_change的结果一致。
| 参数 | 类型 | 说明 |
|---|---|---|
t |
array | Array of number,数据表,支持一维和二维 |
period |
any | Integer,移动期数,默认1 |
fillzero |
bool | Bool,下标越界是,是否返回0.False返回inf |
返回:array
Framepct_change(t, period, fillzero)
数据表-到当期的变动百分比(%) 变动百分比(%)算法 r[i] := (t(i)/t(i-period)-1)*100;
| 参数 | 类型 | 说明 |
|---|---|---|
t |
array | Array of number,数据表,支持一维和二维 |
period |
any | Integer,变动期数,默认1 |
fillzero |
bool | Bool,下标越界是,是否返回0. False返回inf |
返回:array
Frame_addprefix(t, prefix, ifcopy)
数据表-数组下标批量加前缀 二维数组,对列名加前缀 一维数组,对行下标加前缀
| 参数 | 类型 | 说明 |
|---|---|---|
t |
any | Table,源数组 |
prefix |
string | String,前缀 |
ifcopy |
bool | Bool,是否在拷贝后的数组改列名,默认True |
返回:array
Frame_addsuffix(t, suffix, ifcopy)
数据表-数组下标批量加后缀 二维数组,对列名加后缀 一维数组,对行下标加后缀
| 参数 | 类型 | 说明 |
|---|---|---|
t |
any | Table,源数组 |
suffix |
string | String,后缀 |
ifcopy |
bool | Bool,是否在拷贝后的数组改列名,默认True |
返回:array
frameIndex_filter(rawkeys, filter_cond, filter_type, dz_valuetokey)
数组筛选器,用于下标数组行名或列名的筛选器
| 参数 | 类型 | 说明 |
|---|---|---|
rawkeys |
array | 一维字符串数组,下标数组(0开始的自增下标) |
filter_cond |
string | 字符串,筛选条件 |
filter_type |
any | 用户自定义,筛选类型 |
dz_valuetokey |
any | 整数,Out:类型1时,输出ivalue对照用 |
返回:array
frameIndex_getilocDZ(raw_data_cols)
用于方便获取 下标值 与 字段位置 下标数组对照(下标值->下标位置)
| 参数 | 类型 | 说明 |
|---|---|---|
raw_data_cols |
array | 一维字符串数组,下标数组(从0开始自增数组) |
返回:array
mt_Multiplication(a, b, c)
求N×M阶矩阵A与M×L阶矩阵B的乘积矩阵,即C=A×B
| 参数 | 类型 | 说明 |
|---|---|---|
a |
array | 实型二维数组,体积为N×M。被乘矩阵 |
b |
array | 实型二维数组,体积为M×L。乘矩阵 |
c |
array | 实型二维数组,体积为N×L。返回的结果矩阵 |
返回:any
mt_Addition(a, b, c)
求N×M阶矩阵A与N×M阶矩阵B的和矩阵,即C=A+B
| 参数 | 类型 | 说明 |
|---|---|---|
a |
array | 实型二维数组,体积为N×M。被加矩阵 |
b |
array | 实型二维数组,体积为N×M。加矩阵 |
c |
array | 实型二维数组,体积为N×M。返回的结果矩阵 |
返回:any
mt_Subtraction(a, b, c)
求N×M阶矩阵A与N×M阶矩阵B的差矩阵,即C=A-B
| 参数 | 类型 | 说明 |
|---|---|---|
a |
array | 实型二维数组,体积为N×M。被减矩阵 |
b |
array | 实型二维数组,体积为N×M。减矩阵 |
c |
array | 实型二维数组,体积为N×M。返回的结果矩阵 |
返回:any
mt_Transposition(a, c)
求m×n阶矩阵A的转置矩阵,即C=
| 参数 | 类型 | 说明 |
|---|---|---|
a |
array | 实型二维数组,体积为N×M。转置前矩阵 |
c |
array | 实型二维数组,体积为M×N。返回转置后的结果矩阵 |
返回:any
mt_iv_Gauss_Jordan(a, x)
用高斯-约当(Gauss-Jordan)法求解n阶方阵A的逆矩阵
| 参数 | 类型 | 说明 |
|---|---|---|
a |
array | 实型二维数组,体积为N×N。原矩阵 |
x |
array | 实型二维数组,体积为N×N。返回的逆矩阵 |
返回:any
mt_iv_Ldl(a, x)
求n阶对称正定矩阵A的逆矩阵
| 参数 | 类型 | 说明 |
|---|---|---|
a |
array | 实型二维数组,体积为N×N。原矩阵,必须为一个对称矩阵 |
x |
array | 实型二维数组,体积为N×N。返回的逆矩阵 |
返回:any
mt_va_Gauss_Jordan(a, v)
用高斯-约当(Gauss-Jordan)法求解n阶方阵A的行列式值
| 参数 | 类型 | 说明 |
|---|---|---|
a |
array | 实型二维数组,体积为N×N。 |
v |
float | 实型数。返回的行列式值 |
返回:any
mt_va_Cholesky(a, v)
求对称正定矩阵的行列式值平方根
| 参数 | 类型 | 说明 |
|---|---|---|
a |
array | 实型二维数组,体积为N×N。原矩阵,必须为一个对称矩阵 |
v |
float | 实型数。返回矩阵行列式值的平方根 |
返回:any
Mt_decompose_lu(h, l, u)
进行lu分解,H方阵,则可以得到下三角阵L,上三角矩阵U
| 参数 | 类型 | 说明 |
|---|---|---|
h |
array | 需要被分解的对称矩阵 |
l |
array | 下三角阵 |
u |
array | 上三角阵 |
返回:any
chol(h, l, p, options, sneg)
进行乔列斯基分解,H对称正定,则可以得到三角阵L
| 参数 | 类型 | 说明 |
|---|---|---|
h |
array | 需要被分解的对称矩阵,正定矩阵的分解才能成功 |
l |
array | 变参返回乔列斯基分解得到的三角阵 |
p |
integer | 变参返回H的分解信息,-1表示全部分解成功,否则表示分解到第p步 |
options |
array | 三角阵选项,默认'upper'为上三角,'lower' 为下三角 |
sneg |
array | 当 H 非正定时计算曲率方向,正定时为空 |
返回:array
示例
h := corr(rand(100, 4));
chol(h, l, p); // 乔列斯基分解
if p = -1 then return l; // p=-1表示分解成功
// 输出:
// Execute script error at Line:1
// function:__main__:line 1:instruction:rand: function:corr compile error or not found
// function:__main__:line 1:instruction:rand: function execute error
mt_decompose_qr(m, q, r, e, qr_type)
E缺省的时候,对矩阵进行QR分解,M=Q :*R,不缺省E的时候对矩阵进行QRe分解,M:*e=Q:*R.该分解使得R矩阵的对角元按绝对值从大倒小排列
| 参数 | 类型 | 说明 |
|---|---|---|
m |
array | 待分解矩阵 |
q |
array | 可选参数,变参返回正交矩阵Q |
r |
array | 可选参数,变参返回上三角矩阵R |
e |
array | 可选参数,变参返回列置换矩阵E,默认E的结构是一个方阵,当有qr_Type参数时,0:E方阵,1:E为1维数组,2:忽略E参数。 |
qr_type |
any | 可选参数,整数,为0,1,2之一,用于设定E参数的行为。 |
返回:array
mt_decompose_eig(a, wr, wi, vr)
计算特征值及特征向量
| 参数 | 类型 | 说明 |
|---|---|---|
a |
array | 需要被计算的n*m矩阵 |
wr |
array | 变参返回A的特征值的实部,一维数组 |
wi |
array | 变参返回A的特征值的虚部,一维数组 |
vr |
array | 变参返回A的特征向量,二维数组 |
返回:array
mt_decompose_svd(a, s, u, d)
矩阵的奇异值(SVD)分解
| 参数 | 类型 | 说明 |
|---|---|---|
a |
array | 待分解的m*n矩阵 |
s |
array | 变参返回A的奇异值,一维数组 |
u |
array | 变参返回A的左奇异矩阵,二维数组 |
d |
array | 变参返回A的右奇异矩阵,二维数组 |
返回:any
mt_decompose_chol(a, ra, flag)
cholesky分解基础函数;如果不担心效率可以使用公用函数chol
| 参数 | 类型 | 说明 |
|---|---|---|
a |
array | 待分解的方正矩阵(二维数字数组,行列数相同) |
ra |
array | 分解结果返回 |
flag |
bool | object |
返回:array
mt_decompose_ldl(a, ra, p)
ldl 分解基础函数,如果a正定L*D*`L=A;
| 参数 | 类型 | 说明 |
|---|---|---|
a |
array | 待分解的方正矩阵(二维数字数组,行列数相同) |
ra |
array | 分解结果返回,包括,三角矩阵,对角矩阵 |
p |
array | 分解结果的行列信息.a如果为正定矩阵那么p为1到length(a)递增序列.此时,ra的下三角为 L矩阵,对角元为D矩阵.当p为非递增序列,时表示行列置换信息.如果p[i]=k>0 and k<> i+1,那么a的i行和k-1行互换,i列与k-1列互换,p[i]=k<0 那么d在此处为2*2的块,在ra的i-1,i行列的4个元,a的第i行和k-1行互换,i列和k-1列互换. |
返回:array
reIndex2(data, flag)
修改数组的行标或列名,主要用于字符串下标修改为数字下标等
| 参数 | 类型 | 说明 |
|---|---|---|
data |
array,tablearray | |
flag |
integer |
返回:array,tablearray
示例
范例数据表:a := array('C':('A':1,'B':'too'),'D':('A':2,'B':'two'));
// 其显示如下:
范例一:将表列标改为数字
a := array('C': ('A': 1, 'B': 'too'), 'D': ('A': 2, 'B': 'two'));
return reIndex2(a, 0);
// 输出:
// Execute script error at Line:2
// function:__main__:line 2:instruction:usercall: function:reIndex2 compile error or not found
// function:__main__:line 2:instruction:usercall: function execute error
范例二:将行列标作为首列首行
a := array('C': ('A': 1, 'B': 'too'), 'D': ('A': 2, 'B': 'two'));
return reIndex2(a, 5);
// 输出:
// Execute script error at Line:2
// function:__main__:line 2:instruction:usercall: function:reIndex2 compile error or not found
// function:__main__:line 2:instruction:usercall: function execute error
orth(a)
矩阵范围内的标准正交基向量
| 参数 | 类型 | 说明 |
|---|---|---|
a |
array | 数组, |
返回:array
示例
// 计算矩阵A的标准正交基
a := array((0, 1), (1, 1), (1, 0));
return orth(a);
// 输出:
// Execute script error at Line:3
// function:__main__:line 3:instruction:usercall: function:orth compile error or not found
// function:__main__:line 3:instruction:usercall: function execute error
det(a)
行列式
| 参数 | 类型 | 说明 |
|---|---|---|
a |
array | 二维数字数组 样本 |
返回:real
示例
a := array((1, 2), (3, 4));
return det(a); // -2
isSymmetry(a, tol)
判断是否为对称矩阵
| 参数 | 类型 | 说明 |
|---|---|---|
a |
array | array 二维数组 |
tol |
real | real 精度 |
返回:integer
示例
a := array((2, 1), (1, 3));
return isSymmetry(a, 0.1); // 1
diag(a)
对角阵
| 参数 | 类型 | 说明 |
|---|---|---|
a |
array | array 数组 |
返回:array
示例
a := array((2, 1), (1, 3));
return diag(a); // array(2,3);
norm2(a, flag)
范数
| 参数 | 类型 | 说明 |
|---|---|---|
a |
array | 二维数字数组 样本 |
flag |
string | string 范数类型 |
返回:real
示例
a := array((2, 1), (1, 3));
return norm2(a, 'inf'); // 4
roots(p)
一元n次方程求根
| 参数 | 类型 | 说明 |
|---|---|---|
p |
array | array 多项式 |
返回:array
示例
// 求根:3x^3+x^2+x^1+0^0=0
return roots(array(0, 1, 1, 3));
// 输出:
// Execute script error at Line:2
// function:__main__:line 2:instruction:array: function:roots compile error or not found
// function:__main__:line 2:instruction:array: function execute error
cond(x)
求矩阵 X 的条件数,最大奇异值除最小奇异值
| 参数 | 类型 | 说明 |
|---|---|---|
x |
array | array 需要求条件数的矩阵或二维数组 |
返回:real
示例
x := array((9, 1), (-1, 0), (0, 2), (1, 1));
return cond(x); // 4.22
pinv(a, t)
伪逆
| 参数 | 类型 | 说明 |
|---|---|---|
a |
array | array 矩阵 |
t |
real | real 精度 默认为 2.220446049250313e-016 |
返回:array
示例
x := array((9, 1), (-1, 0), (0, 2), (1, 1));
return pinv(x);
// 输出:
// Execute script error at Line:2
// function:__main__:line 2:instruction:usercall: function:pinv compile error or not found
// function:__main__:line 2:instruction:usercall: function execute error
eigen(a, eigen, eigenvectors, isreal)
特征根与特征向量
| 参数 | 类型 | 说明 |
|---|---|---|
a |
array | array 特征值分解的数据 |
eigen |
array | array 变参返回特征值 |
eigenvectors |
array | array 变参返回特征向量 |
isreal |
integer | bool 是否只输出实特征值及特征向量 |
返回:integer
示例
a := array((1, 2), (3, 4));
eigen(a, eigen);
return eigen;
// array(-0.37,5.37)
isDefinite(h)
判断矩阵是否正定、半正定,采用 Cholesky 分解方法
| 参数 | 类型 | 说明 |
|---|---|---|
h |
array | array 样本 |
返回:real
示例
x := array((3, 1), (1, 4));
return isDefinite(x); // 1
transPose(data)
数组转置。注意,该函数主要用于客户端结果处理,不提供给用户程序编辑。
| 参数 | 类型 | 说明 |
|---|---|---|
data |
array | 数据表结构数据,第一列数据必须为字符串并且列数要大于3 |
返回:array
transPoseForChart(data)
表格转置。注意,该函数主要用于客户端结果处理,不提供给用户程序编辑。
| 参数 | 类型 | 说明 |
|---|---|---|
data |
array | 数据表类型 |
返回:array
transPoseForChartSysParam()
表格转置。注意,该函数主要用于客户端结果处理,不提供给用户程序编辑。
返回:array
transPoseForChartSysParamEx()
表格转置。注意,该函数主要用于客户端结果处理,不提供给用户程序编辑。
返回:array
transDataStandardize(nil_v)
空(NIL)数据标准化。注意,该函数主要用于客户端结果处理,不提供给用户程序编辑。
| 参数 | 类型 | 说明 |
|---|---|---|
nil_v |
integer | Nil类型的数据标准化后的值 |
返回:array