在DolphinDB中快速实现因子计算

已有pandas代码,计算累积bid和ask量比:

ask = df["av1"]
bid = df["bv1"]

p = df["mp"].iloc[0]
for i in range(2,11):    
     ask += np.exp(-10*(i-1)/p)*df["av"+str(i)]
     bid += np.exp(-10*(i-1)/p)*df["bv"+str(i)]

vol_diff = 0.5*np.log(bid/ask)

想快速用到dolphindb中,并且用dophonDB的计算引擎来并行计算,请问有什么改动最小的办法。

请先 登录 后评论

1 个回答

Jason Tang - 时序数据库技术支持

这些因子可以翻译成DolphinDB database的代码,然后在内置的流数据框架中完成。

def factorVolDiff(t){
  w = exp(-10 * 0..9/t.mp[0])
  return select 0.5*log(rowSum([bv1,bv2,bv3,bv4,bv5,bv6,bv7,bv8,bv9,bv10]*w)/rowSum([av1,av2,av3,av4,av5,av6,av7,av8,av9,av10]*w)) as volDiff from t

 } 

上面这个写法是直接在DolphinDB数据库内使用的。

https://github.com/dolphindb/Orca/blob/master/tutorial_cn/factor.md这个例子对比了orca和pandas的实现方法

请先 登录 后评论