这里应该是输入的矩阵是满秩的
这里可以加一个判断输入的b是否是满秩的矩阵的逻辑,比如
if(sum(0!=svd(b, computeUV=false)) == 0){
return 0
}
你好, 请问ols无法和context by一起用吗?类似下面语句:
update factor set o = ols(nextRet, (arc, vrc, src, krc))[0] context by underlying
update factor set cor = moving(calOls{n}, (close, arc, vrc, src, krc), win) context by underlying => calOls: r = ols(nextRet, a) => The input matrix is singular.总是报这个错。
附:
defg calOls(n, close, arc, vrc, src, krc)
{
tb = table(close as close, arc as arc, vrc as vrc, src as src, krc as krc)
update tb set nextRet = log(close.move(-n)/close)
b = matrix(tb[["arc", "vrc", "src", "krc"]])
try
{
r = ols(tb["nextRet"],b)
return r[0] + r[1] * arc[size(arc)-1] + r[2] * vrc[size(vrc)-1] + r[3] * src[size(src)-1] + r[4] * krc[size(krc)-1]
}
catch(ex)
{
print(b)
print("=========")
return 0
}
}