从计算、建模到回测:因子挖掘的最佳有系统

五河娱乐新闻网 2025-07-30

000001 000002 000003 000004 ... --------- ---------- ------- ------ --- 2020.01.02T09:29:00.000|3066.336 3212.982 257.523 2400.042 ... 2020.01.02T09:30:00.000|3070.247 3217.087 258.696 2402.221 ... 2020.01.02T09:31:00.000|3070.381 3217.170 259.066 2402.029 ...

在LCD数据集上,由于是以等待时除此大部份为索引,第三人为至多,位点可以不方便地在截面积上要用各类运算。DolphinDB 包含 row 系至多模板以及各类旋转车站内模板,在示事例两个位点近似值事事例之中,从前繁杂的近似值范的单,在LCD数据集之中,可以用四人文档轻而易举解决原因。

Alpha 1 位点 近似值之中,下事例来作了 rowRank 模板,可以在LCD数据集之中的每一个等待时除此大部份截面积对各第三人来进行排名;iif 条件运算,可以在第三人标量层面反之亦然筛选及近似值;mimax 及 mstd 等旋转车站内模板也是在第三人层面垂直近似值的。因此,在LCD近似值之中合理应用领域 DolphinDB 的可选模板,可以从有所不同一维自在近似值。 //alpha 1 //Alpha #001公的单:rank(Ts_ArgMax(SignedPower((returns<0?stddev(returns,20):close), 2), 5))-0.5

@statedef alpha1TS( close){ returnmimax(pow(iif(ratios( close) - 1< 0, mstd(ratios( close) - 1, 20), close), 2.0), 5) }

def alpha1Panel( close){ returnrowRank(X=alpha1TS( close), percent=true) - 0. 5}

input = execclosefrom loadTable( "dfs://k_minute", "k_minute") where date(tradetime) between 2020.01. 01: 2020.01. 31pivot by tradetime, securityid res = alpha1Panel(input)

Alpha 98 位点 近似值之中,同时来作了三个LCD数据集,分别是 vwap, open 和 vol。不仅各等价内部运用了 rowRank 模板平行截面积运算以及m系至多垂直旋转车站内近似值,等价密切关系也来进行了二元运算。用四人文档解决了多一维的繁杂的嵌套近似值范的单。 //alpha 98//Alpha #98近似值公的单:(rank(decay_linear(correlation(vwap, sum(adv5, 26.4719), 4.58418), 7.18088)) - rank(decay_linear(Ts_Rank(Ts_ArgMin(correlation(rank( open), rank(adv15), 20.8187), 8.62571), 6.95668), 8.07206)))

def prepareDataForDDBPanel(raw_data, start_time, end_time){t = select tradetime,securityid, vwap,vol, openfrom raw_data wheredate(tradetime) between start_time : end_time returndict(----vwap---- open----vol, panel(t.tradetime, t.securityid, [t.vwap, t. open, t.vol])) }

@statedef alpha98Panel(vwap, open, vol){ returnrowRank(X = mavg(mcorr(vwap, msum(mavg(vol, 5), 26), 5), 1.. 7),percent= true) - rowRank(X=mavg(mrank( 9- mimin(mcorr(rowRank(X= open,percent= true), rowRank(X=mavg(vol, 15),percent= true), 21), 9), true, 7), 1.. 8),percent= true) }

raw_data = loadTable( "dfs://k_minute", "k_day") start_time = 2020.01.01 end_time = 2020.12.31 input = prepareDataForDDBPanel(raw_data, start_time, end_time)timer alpha98DDBPanel = alpha98Panel(input.vwap, input. open, input.vol)

2.2 SQL 方的单也

DolphinDB 在初始化和近似值作法论上都是基于至多的单结构设计,注记之中的一个至多可以反之亦然作为一个向二阶模板的读引模板。因此如果一个位点的近似值范的单只关乎注资者自身的等待时除此大部份序至多数据集,不关乎多个注资者梯形上的个人信息,可以反之亦然在 SQL 之中按注资者一第三组,然后在 select 之中绑定位点模板近似值每个注资者在一段等待时除此大部份内的位点值。如果数据集在数据集坎之中本身是按注资者一区初始化的,那么可以相当高效地解决原因数据集坎内立体化近似值。

def sum_diff( x, y) { return(x-y)(x+y) }

@ statedef factorDoubleEMA( price) { ema_2 = ema(price, 2) ema_4 = ema(price, 4) sum_diff_1000 = 1000* sum_diff(ema_2, ema_4) returnema(sum_diff_1000, 2) - ema(sum_diff_1000, 3) }

res = selecttradetime, securityid, ----doubleEMA asfactorname, factorDoubleEMA(close) asval fromloadTable( "dfs://k_minute", "k_minute") wheretradetime between 2020.01.01 : 2020.01.31 context bysecurityid

上面的事事例之中概念了一个位点模板 factorDoubleEMA,只尽可能来作注资者的售价序至多个人信息。在 SQL 之中通过 context by姪句按ST一第三组,然后绑定factorDoubleEMA模板,近似值每个注资者的位点序至多。值得一提的是的是,context by是 DolphinDB SQL 对 group by 的扩大,是 DolphinDB 特有的 SQL 上下文。group by 只适运用于剪切近似值,不一定读引阔度为n,可用阔度是1;context by适运用于标量近似值,读引阔度是n,可用阔度也是n。另外位点模板 factorDOubleEMA 除了可以接曾受一个标量作为读引,也可以接曾受一个LCD数据集作为读引。这也是DolphinDB所最弱调的,位点模板的粒度尽不太可能细,这样可以应用领域于很多情节。

3、有所不同增益的位点整合举事例

有所不同增益数据集的位点,特别是在有所不同的特点。本节选将分别举事例分钟则否、日则否、一个系统、逐笔数据集的特点位点,阐述有所不同增益数据集近似值位点的最佳有的系统。

3.1 分钟级和日级数据集

日级数据集的近似值,一般来说是关乎多个截面积的繁杂近似值,在上面的节选之中已展示出。对于稍直观的近似值,则与分钟级数据集的位点相似。

针对分钟级数据集,示事例的事事例是日内收益率偏度的位点近似值,对于这类只关乎注记内配置机密文件的近似值,一般来说来作 SQL 方的单也,快速反应group by上下文将近似值一第三组:

defg dayReturnSkew( close) { returnskew(ratios(close)) }

minReturn = select----dayReturnSkew asfactorname, dayReturnSkew(close) asval fromloadTable( "dfs://k_minute_level", "k_minute") wheredate( tradetime) between 2020.01.02 : 2020.01.31 groupbydate( tradetime) astradetime, securityid

#outputtradetime securityid factorname val ---------- ---------- ------------- -------2020.01.02 000019 dayReturnSkew 11.83282020.01.02 000048 dayReturnSkew 11.05442020.01.02 000050 dayReturnSkew 10.6186

3.2 基于一个系统数据集的有正常位点近似值

有正常的位点,意为位点的近似值尽可能基于之此前的近似值结果,如一般的旋转车站内近似值,剪切近似值等,都是有正常的位点近似值。

下事例 flow 这个自订模板之中,模板为四个至多配置机密文件,运用 mavg旋转最少模板以及 iif条件运算模板,可以反之亦然在SQL之中取得位点结果:

@ statedef flow( buy_vol, sell_vol, askPrice1, bidPrice1) { buy_vol_ma = round(mavg(buy_vol, 5* 60), 5) sell_vol_ma = round(mavg(sell_vol, 5* 60), 5) buy_prop = iif(abs(buy_vol_ma+sell_vol_ma) < 0, 0.5, buy_vol_ma/ (buy_vol_ma+sell_vol_ma)) spd = askPrice1 - bidPrice1spd = iif(spd < 0, 0, spd) spd_ma = round(mavg(spd, 5* 60), 5) returniif(spd_ma == 0, 0, buy_prop / spd_ma) }

res_flow = selectTradeTime, SecurityID, ----flow asfactorname, flow(BidOrderQty[ 1],OfferOrderQty[ 1], OfferPrice[ 1], BidPrice[ 1]) asval fromloadTable( "dfs://LEVEL2_Snapshot_ArrayVector", "Snap") wheredate( TradeTime) < = 2020.01.30and date( TradeTime)> = 2020.01.01context bySecurityID

# output sampleTradeTime SecurityID factorname val ----------------------- ---------- ---------- -----------------2020.01.22T14: 46: 27.000110065flow 3.75872020.01.22T14: 46: 30.000110065flow 3.75152020.01.22T14: 46: 33.000110065flow 3.7443...

3.3 一个系统数据集的多档赋权无正常位点近似值

近似值 Level 2的多档一个系统数据集,现代的方的单是将多档量价数据集初始化成为多个至多, 再继续将多档挂单或者额度用 matrix 匹配与也就是说为要用近似值。愈来愈引荐的要用法是,将多档数据集初始化为 array vector,仍旧可以用慢慢地的自订模板,但是资源消耗都有效能都有提升。示事例的事事例是近似值多档额度的也就是说为偏度位点,来作 array vector 后近似值等待时除此大部份从 4 秒伸长到 2 秒。

def mathWghtCovar( x, y, w) { v = (x - rowWavg(x, w)) * (y - rowWavg(y, w))returnrowWavg(v, w) }

@ statedef mathWghtSkew( x, w) { x_var = mathWghtCovar(x, x, w)x_std = sqrt(x_var)x_1 = x - rowWavg(x, w)x_2 = x_1*x_1len = size(w)adj = sqrt((len - 1) * len) (len - 2) skew = rowWsum(x_2, x_1) (x_var * x_std) * adj lenreturn iif( x_std== 0, 0, skew ) }

//weights:w= 10987654321

//也就是说为偏度位点:resWeight = selectTradeTime, SecurityID, ----mathWghtSkew asfactorname, mathWghtSkew(BidPrice, w) asval fromloadTable( "dfs://LEVEL2_Snapshot_ArrayVector", "Snap") wheredate( TradeTime) = 2020.01.02map resWeight1 = selectTradeTime, SecurityID, ----mathWghtSkew asfactorname, mathWghtSkew(matrix(BidPrice0,BidPrice1,BidPrice2,BidPrice3,BidPrice4,BidPrice5,BidPrice6,BidPrice7,BidPrice8,BidPrice9), w) asval fromloadTable( "dfs://snapshot_SH_L2_TSDB", "snapshot_SH_L2_TSDB") wheredate( TradeTime) = 2020.01.02map

#outputTradeTime SecurityID factorname val ----------------------- ---------- ---------- ------...2020.01.02T09: 30: 09.000113537array_1 -0.88282020.01.02T09: 30: 12.000113537array_1 0.73712020.01.02T09: 30: 15.000113537array_1 0.6041...

3.4 基于一个系统数据集的分钟剪切

投研之中经常尽可能基于一个系统数据集剪切分钟本站的 OHLC ,下事例就是这一情节之中的通用要用法:

//基于一个系统位点的分钟剪切OHLC,vwaptick_aggr = selectfirst(LastPx) asopen, max(LastPx) ashigh, min(LastPx) aslow, last(LastPx) asclose, sum(totalvolumetrade) asvol, sum(lastpx*totalvolumetrade) asval,wavg(lastpx, totalvolumetrade) asvwap fromloadTable( "dfs://LEVEL2_Snapshot_ArrayVector", "Snap") wheredate(TradeTime) <= 2020.01.30anddate(TradeTime)>= 2020.01.01groupbySecurityID, bar(TradeTime, 1m)

3.5 逐笔数据集

逐笔数据集量不大,一般才会针对跌幅等配置机密文件来进行近似值,示事例的事事例近似值了每天主买跌幅分之一仅有部跌幅的分之一,同样来作 SQL 方的单也,发挥坎内立体化近似值的占优,并来作 csort 上下文用来对第三组内数据集按照等待时除此大部份顺序顺序:

@ statedef buyTradeRatio( buyNo, sellNo, tradeQty) { returncumsum(iif(buyNo>sellNo, tradeQty, 0))cumsum(tradeQty) }

factor = selectTradeTime, SecurityID, ----buyTradeRatio asfactorname, buyTradeRatio(BuyNo, SellNo, TradeQty) asval fromloadTable( "dfs://tick_SH_L2_TSDB", "tick_SH_L2_TSDB") wheredate( TradeTime)<2020.01.31 and time( TradeTime)> = 09: 30: 00.000context bySecurityID, date(TradeTime) csort TradeTime

#outputTradeTime SecurityID factorname val ------------------- ---------- ---------------- ------2020.01.08T09: 30: 07511850buyTradeRatio 0.00862020.01.08T09: 30: 31511850buyTradeRatio 0.05742020.01.08T09: 30: 36511850buyTradeRatio 0.0569...

4、产出生存环境的低密度位点近似值

在产出生存环境之中,DolphinDB 给予了同步引近似值作法论。在引近似值作法论下,Gmail在投研期中烧录好的基于大批量数据集整合的位点模板,可以无缝投入融资和注资全面性的产出程序来之中,这就是一般来说所说的批引主体。

来作引批主体可以加速Gmail的整合和协同作战。同时引近似值作法论还在插值的路径上,要用了精髓的优化,在具有高效整合的占优的同时,又配合了近似值的高效效率。在这一章之中,将才会基于基本上的正常位点范事例,展示同步引近似值的来作作法。

引近似值变速箱和引数据集注记之外继承于 DolphinDB 的数据集注记(table),因此都可以通过 append! 模板往其注入数据集。引近似值变速箱的可用也是数据集注记的形的单,因此多个近似值变速箱可以跟搭积木一样混,形成低密度解决问题的引水本站。

4.1 低密度持续性近似值

汇丰银行业全面性的数据格式集和近似值举事例来说,在等待时除此大部份上一般来说有延续性的关系。以最直观的五等待时除此大部份尺度移动之外本站mavg(close,5)为事例,当从新一个等待时除此大部份尺度的数据集风行假分设时,可以将之此前最远的第五等待时除此大部份尺度值从 sum 之中减造出,再继续把最从新一个等待时除此大部份尺度的值加入 sum ,这样就不必每个等待时除此大部份尺度只愈来愈从新一个值时都重为算一遍 sum 。这种持续性近似值是引近似值的基本,可以大大降低同步近似值的频。DolphinDB可选了大量二阶汇丰银行业之中尽可能来作的基本算姪,并为这些算姪解决原因了高效的持续性插值。不仅如此,DolphinDB还默许自订模板的持续性解决原因。在此前一节选之中,大部份自订的位点模板加了修饰符 @state,注记示该模板默许持续性近似值。

4.1.1主买跌幅分之一比位点的低密度解决问题

第三章的逐笔数据集位点的事事例展示了主买跌幅分之一比位点(buyTradeRatio)的大批量解决原因方的单。此处展示出如何来作声势浩大的单正常变速箱(reactive state engine)来解决原因该位点的低密度持续性近似值。

@statedefbuyTradeRatio(buyNo, sellNo, tradeQty){ returncumsum(iif(buyNo>sellNo, tradeQty, 0))cumsum(tradeQty) }

tickStream = table( 1:0, ----SecurityID----TradeTime ----TradePrice----TradeQty ----TradeAmount----BuyNo ----SellNo, [SYMBOL,DATETIME,DOUBLE,INT,DOUBLE,LONG,LONG])result = table(1:0, ----SecurityID ----TradeTime----Factor, [SYMBOL,DATETIME,DOUBLE]) factors = demoEngine = createReactiveStateEngine(name= "demo", metrics=factors, dummyTable=tickStream, outputTable=result, keyColumn= "SecurityID")

上述文档创立了一个名为 demo 的声势浩大的单正常变速箱,SecurityID 作为一第三组键,读引的死讯JPEG同机密文件系统注记 tickStrea。尽可能近似值的举事例来说概念在 factors 之中,其之中1个是读引注记之中的原始配置机密文件 TradeTime,另一个是尽可能近似值的位点的模板注记示。可来作机密文件系统注记 result,除了在 factors 之中概念的举事例来说外,可用结果还才会附加一第三组键。请注意,自订的位点模板跟批近似值之中的完仅有相一致!创立完变速箱此后,即可往变速箱之中插入几条数据集,并推论近似值结果。

4.1.2 大小不一单的低密度解决问题

资金来源引深入研究是逐笔委托数据集的一个重为要应用领域情节。在同步解决问题逐笔数据集时,大小不一单的统计深入研究是资金来源引深入研究的一个就其应用领域。大小不一上半年一定层面上能反映主力、注资人的行踪。

但在同步情节之中,大小不一单的转化有很多难点:

(1)大小不一单的近似值关乎历史正常,如若不能解决原因持续性近似值,当近似值下午的数据集时,不太可能尽可能回溯有关这笔下单上午的数据集,效能才会相当不足。

(2)近似值关乎仅仅两个期中。在第一期中尽可能根据下单一第三组,根据下单的累计跌幅判断大小不一单,在第二期中要根据注资者来一第三组,统计深入研究每个注资者的大小不一单比事例及金额。

大小不一单是一个实时的作法论,一个小上半年跌幅减少后不太可能变成一个大单。DolphinDB 的两个可选模板:dynamicGroupCumsum和 dynamicGroupCumcount,可以运用于对实时第三组的持续性近似值。

@statedeffactorSmallOrderNetAmountRatio(tradeAmount, sellCumAmount, sellOrderFlag, prevSellCumAmount, prevSellOrderFlag, buyCumAmount, buyOrderFlag, prevBuyCumAmount, prevBuyOrderFlag){cumsumTradeAmount= cumsum(tradeAmount)smallSellCumAmount,bigSellCumAmount = dynamicGroupCumsum(sellCumAmount, prevSellCumAmount, sellOrderFlag, prevSellOrderFlag, 2)smallBuyCumAmount,bigBuyCumAmount = dynamicGroupCumsum(buyCumAmount, prevBuyCumAmount, buyOrderFlag, prevBuyOrderFlag, 2) f= (smallBuyCumAmount - smallSellCumAmount) cumsumTradeAmountreturnsmallBuyCumAmount, smallSellCumAmount, cumsumTradeAmount, f}

defcreateStreamEngine(result){tradeSchema= createTradeSchemaresult1Schema= createResult1Schemaresult2Schema= createResult2SchemaengineNames= ["rse1", "rse2", "res3"]cleanStreamEngines(engineNames)metrics3= rse3= createReactiveStateEngine(name=engineNames[2], metrics=metrics3, dummyTable=result2Schema, outputTable=result, keyColumn="SecurityID")metrics2= rse2= createReactiveStateEngine(name=engineNames[1], metrics=metrics2, dummyTable=result1Schema, outputTable=rse3, keyColumn="SellNo")metrics1= returncreateReactiveStateEngine(name=engineNames[0], metrics=metrics1, dummyTable=tradeSchema, outputTable=rse2, keyColumn="BuyNo")}

自订模板 factorSmallOrderNetAmountRatio是一个正常位点模板,运用于近似值小单的净引入资金来源分之一总的融资资金来源的分之一。createStreamEngine创立低密度近似值变速箱。DolphinDB 一共创立了3个级同德的声势浩大的单正常变速箱,后一个作为此前一个的可用,因此从之前一个变速箱开始创立。此前两个近似值变速箱 rse1 和 rse2 分别以履约下单号(BuyNo)和卖方下单号(SellNo)作为一第三组键,近似值每个下单的累计融资量,并以此区分是大单或小单。第三个变速箱rse3把ST(SecurityID)作为一第三组键,统计深入研究每个注资者的小单净引入资金来源分之一总融资资金来源的分之一。示事例读引一些样本数据集来推论引近似值变速箱的运行。

result= createResultTablerse= createStreamEngine(result)insertinto rse values(----000155, 1000, 1001, 2020.01.01T09:30:00, 20000)insertinto rse values(----000155, 1000, 1002, 2020.01.01T09:30:01, 40000)insertinto rse values(----000155, 1000, 1003, 2020.01.01T09:30:02, 60000)insertinto rse values(----000155, 1004, 1003, 2020.01.01T09:30:03, 30000)

select* from result

SecurityIDTradeTime smallBuyOrderAmount smallSellOrderAmount totalOrderAmount factor----------------------------- ------------------- -------------------- ---------------- ------0001552020.01.01T09:30:00 20000 20000 20000 00001552020.01.01T09:30:01 60000 60000 60000 00001552020.01.01T09:30:02 0 120000 120000 -10001552020.01.01T09:30:03 30000 150000 150000 -0.8

4.1.3 繁杂位点Alpha #1低密度近似值的快捷解决原因

从此前一个大小不一单的事事例可以看到,有些位点的低密度解决原因来得繁杂,尽可能创立多个变速箱来进行引水本站解决问题来进行时。完仅有用手工的方的单来创立多个变速箱其实是一件费时的兼职。如果读引的举事例来说近似值只关乎一个一第三组键,DolphinDB给予了一个解变速箱 streamEngineParser来解决此原因。示事例以第三章3.1LCD数据集方的单也的alpha #1位点为事例,展示 streamEngineParser的来作作法。表列为基本文档。

@statedef alpha1TS( close){ returnmimax(pow(iif(ratios( close) - 1< 0, mstd(ratios( close) - 1, 20), close), 2.0), 5) }

def alpha1Panel( close){ returnrowRank(X=alpha1TS( close), percent=true) - 0. 5}

inputSchema = table( 1: 0, [ "SecurityID", "TradeTime", "close"], [SYMBOL,TIMESTAMP,DOUBLE]) result = table( 10000: 0, [ "TradeTime", "SecurityID", "factor"], [TIMESTAMP,SYMBOL,DOUBLE]) metrics = <[SecurityID, alpha1Panel( close)]> streamEngine = streamEngineParser(name= "alpha1Parser", metrics=metrics, dummyTable=inputSchema, outputTable=result, keyColumn= "SecurityID", timeColumn= ----tradetime, triggeringPattern='keyCount', triggeringInterval=4000)

位点alpha1基本上上包含了等待时除此大部份序至多解决问题和梯形解决问题,尽可能声势浩大的单正常变速箱和梯形变速箱串同德来解决问题才能进行时。但这儿仅仅来作了 streamEngineParser 就创立了仅有部变速箱,这两项了创立过程。

此前面三个事事例展示了 DolphinDB 如何通过引近似值变速箱解决原因位点在产出生存环境之中的持续性近似值。在现代的科学研究作法论下,Gmail一般来说尽可能对同一个位点近似值范的单写两套文档,一套运用于在历史数据集上构建、回测,另外一套专门解决问题盘之中风行的同步数据集。值得一提的是的是,DolphinDB 的低密度近似值时反之亦然来作了投研期中转化的基本位点文档,这很好的解决了现代汇丰银行业深入研究面临的批引主体原因。

除了三个事事例之中来作的声势浩大的单正常变速箱(reactive state engine)和梯形变速箱(cross sectional engine),DolphinDB 还给予了多种引数据集解决问题变速箱都有要用引注记连接的 asof join engine,equal join engine,lookup join engine,window join engine ,等待时除此大部份序至多剪切变速箱(time series engine),诱发检测变速箱(anomaly detection engine),才会话车站内变速箱(session window engine)等。

4.2 数据集解码器

此前一节讲解了位点近似值的批引主体解决原因促请,直观地说,就是一套文档(自订的位点模板),两种变速箱(批近似值变速箱和引近似值变速箱)。事实上,DolphinDB给予一种愈来愈为简洁的批引主体解决原因促请,那就是在历史数据集构建时,通过数据集解码器,也用引变速箱来解决原因近似值。

在第三章之中讲解了用 SQL 上下文方的单批解决问题近似值 factorDoubleEMA 位点的事事例,这里讲解如何来作引近似值的方的单解码器数据集,近似值 factorDoubleEMA 的位点值。

//创立引变速箱,并风行位点插值factorDoubleEMAfactors = demoEngine = createReactiveStateEngine(name=engineName, metrics=factors, dummyTable=inputDummyTable, outputTable=resultTable, keyColumn= "SecurityID") //demo_engine订阅snapshotStreamTable引注记subscribeTable(tableName=snapshotSharedTableName, actionName=actionName, handler=append!{demoEngine}, msgAsTable= true)

//创立播放数据集源供replay模板历史解码器;盘之中的时候,改为行情数据集反之亦然读引snapshotStreamTable引注记inputDS = replayDS(< selectSecurityID, TradeTime, LastPx fromtableHandle wheredate( TradeTime), ----TradeTime, ----TradeTime)

4.3 对接融资的系统

current_ddb_session.subscribe(host=DDB_datanode_host,tableName=stream_table_shared_name,actionName=action_name,offset=0,resub=False,filter=None,port=DDB_server_port,handler=python_callback_handler, #此处风行python上端要转给死讯的回调模板)

DolphinDB 向 ZMQ 死讯队至多推送引数据集文档样事例:

(1)首先为启动河段的 ZMQ 数据集奢侈品程序来,作为监听上端(ZeroMQ死讯队至多的服务上端)。

zmq_context = Contextzmq_bingding_socket = zmq_context.socket(SUB) #闻零碎版文档分设定socket选项zmq_bingding_socket.bind( "tcp://*:55556") asyncdefloop_runner: whileTrue: msg= awaitzmq_bingding_socket.recv #截断循环until收到引数据集print(msg) #在此编写河段死讯解决问题文档asyncio.run(loop_runner)

(2)启动位点数据集的引解决问题近似值和发布。

在外部奢侈品 ZMQ 死讯的程序来启动后,DolphinDB 上端要启动引近似值,并开始对外发布近似值结果。表列是 DolphinDB 上端的文档。可用结果注记之此前的所有文档大部份,和 4.2 之中引解决问题近似值 doubleEma 位点事事例的相一致,故下事例文档之中早已继续赘述。

resultSchema=table( 1: 0,[ "SecurityID", "TradeTime", "factor"], [SYMBOL,TIMESTAMP,DOUBLE]) //可来作死讯队至多的注记结构设计

def zmqPusherTable(zmqSubscriberAddress,schemaTable){SignalSender=def (x) { returnx} pushingSocket = zmq::socket( "ZMQ_PUB", SignalSender) zmq::connect(pushingSocket, zmqSubscriberAddress)pusher = zmq::createPusher(pushingSocket, schemaTable)returnpusher }

zmqSubscriberAddress= "tcp://192.168.1.195:55556"//引注记resultStream向zmq队至多推送,来作时根据有所不同的zmq地址变更此字段

pusherTable=zmqPusherTable(zmqSubscriberAddress,resultSchema) //转化一个范的单注记向上述地址发送zmq包,配置机密文件结构设计参阅resultSchema

demoEngine = createReactiveStateEngine(name= "reactiveDemo", metrics=, dummyTable=snapshotSchema, outputTable=pusherTable, keyColumn= "SecurityID",keepOrder= true) //创立引变速箱,output指定可来作pusher注记

5、位点的初始化和键入

无论是大批量近似值还是同步近似值,将 DolphinDB 之中近似值转化的位点留存下来给予给投研要用后续的深入研究都是很有意义的。本章主要是根据初始化、键入,来作方的单等全面性,来深入研究如何基于来作情节来考虑愈来愈高效的初始化假分设。

在基本上回避数据集初始化促请时,尽可能从表列三个全面性回避:

考虑 OLAP 变速箱还是 TSDB 变速箱。OLAP 最适合仅有量赛跑批近似值,TSDB 则在序至多键入上占优突造出,效率和功能上来得仅有面。 位点的初始化方的单是单值纵注记方的单还是多值宽注记方的单。单值方的单的仅次于缺点是灵活性最弱,减少位点和注资者时,不用变更注记结构设计,缺点是数据集冗余度高。多值宽注记的数据集冗余度很低,快速反应 TSDB 变速箱的 array vector,初始化效能很高,但是从新位点或从新注资者的造出现,尽可能重为从新转化位点注记。 一区方的单考虑。可运用于一区的至多都有等待时除此大部份至多,ST至多和位点至多。OLAP 变速箱引荐的一区大小不一为数据格式集 100MB 左右。TSDB 变速箱引荐的一区分设置为数据格式集 100MB~1GB 全域才会效率最佳。

结合以上回避因素,本文以 4000 只注资者,1000 个位点,初始化分钟级位点坎为事例,有如下三种考虑:

以纵注记初始化,来作 OLAP 变速箱,每行按等待时除此大部份初始化一只注资者一个位点数据集,一区促请 VALUE(天)+ HASH(位点名,125)。 以纵注记初始化,来作 TSDB 变速箱,每行按等待时除此大部份初始化一只注资者一个位点数据集,一区促请 VALUE(月末)+ HASH(位点名,50), 按ST+等待时除此大部份顺序。 以宽注记初始化,来作 TSDB 变速箱,每行按等待时除此大部份初始化仅有部注资者一个位点,或者一支注资者仅有部位点数据集,一区促请VALUE(月末)+ HASH(位点名,20),按位点名+等待时除此大部份顺序。

OLAP 变速箱是稀至多的单初始化,不适合注记过宽,在至多数激过80以后,读引效率才会逐渐下降,故不要用回避。

纵注记结构设计:

宽注记结构设计:

5.1 位点初始化

详闻之中以初始化五个位点一年的分钟级数据集来来进行试验,核对这三种初始化方的单也在数据集大小不一、基本上来作的初始化空除此大部份、读引速率等全面性的权衡。

从核对结果来看,宽注记 TSDB 方的单也的读引速率是纵注记 OLAP 的4倍,纵注记 TSDB 的5倍,初始化空除此大部份上宽注记 TSDB 和 OLAP 纵注记相近,之外约为 TSDB 纵注记的三分之二,增压上纵注记 OLAP 给定,纵注记 TSDB 次之,宽注记 TSDB 最差。这是因为首先为基本上显现出的数据集个位上,纵注记方的单也是宽注记方的单也的三倍,这决定了宽注记 TSDB 的的读引速率给定,存储来作空除此大部份给定,也加剧了宽注记 TSDB 方的单也的增压才会相对来说差一些,另外模拟数据集值得注意来说很多大,也影响了 TSDB 变速箱宽注记得数据集压缩;其次 TSDB 变速箱才会来进数据集顺序,转化索引,所以同样是纵注记,TSDB 变速箱在初始化空除此大部份、初始化速率、增压全面性都中有逊于 OLAP 变速箱。

5.2 位点键入

接下来模拟大数据集量来来进行键入试验,模拟 4000 支注资者,200 个位点,一年的分钟级数据集,详述数据集个人信息及一区个人信息闻示事例注记格:

键入 1 个位点 1 支注资者指定点除此大部份点数据集

在点键入上 TSDB 变速箱占优明显,而宽注记 TSDB 因为数据集数少,速率上还要快于纵注记 TSDB 方的单也。

键入 1 个位点 1 只注资者一年分钟级数据集

键入单位点单注资者一年的分钟级数据集宽注记 TSDB 变速箱速率破纪录,这是因为 TSDB 变速箱一区不大,读引的机密文件少,且数据集有顺序,而 OLAP 变速箱本身数据集一区较小,尽可能扫描的数又同样不少,所以速率平均速度。

键入 1 个位点仅有美国市场注资者一年分钟级数据集

宽注记 TSDB 读引速率破纪录,读引的总数据集量来得大时,这几种方的单也都才会读引很多零碎一区,而宽注记 TSDB 方的单也因为基本上数据集来得小,所以速率上是纵注记 OLAP 的一半,是纵注记 TSDB 的三分之一略多。

键入 3 个位点仅有美国市场注资者一年分钟级数据集

愈来愈大数据集量的数据集读引,键入费时标量增长速度,同样原因,宽注记 TSDB 读引速率基本上破纪录。

键入 1 支注资者仅有部位点一年的分钟级数据集

宽注记在来进行该键入时,键入 SQL 应只考虑尽可能ST至多,SQL 如下:

//纵注记键入sql, 键入仅有部配置机密文件,来作缺省*tsdb_symbol_all= select* fromtsdb_min_factor wheresymbol=----sz000056

//宽注记键入sql,只查询大部份配置机密文件,详述至多造出selectmtime,factorname,sz000001 fromtsdb_wide_min_factor

以上结果可以看到,宽注记 TSDB 变速箱和纵注记 TSDB 都可以很快的查造出数据集,而纵注记方的单也 OLAP 则尽可能百倍以上的等待时除此大部份才能键入造出数据集。这是因为纵注记方的单也 OLAP 的一区配置机密文件是等待时除此大部份和位点,这种但会键入某只注资者所有的位点尽可能扫描仅有大部份区的仅有部至多才能引造出所之外需的数据集;而宽注记TSDB变速箱只尽可能引三至多数据集,所以可以很快查造出数据集;纵注记TSDB变速箱可以按ST来进行索引查询所以速率也来得快。

综上所述,位点的初始化之外需根据有所不同的键入生活习惯去要用建分设建筑工程。本节之中的这些键入,引荐来作宽注记 TSDB 的方的单初始化位点。

5.3 离本站获引LCD数据集

针对有所不同的初始化假分设,在来作时若尽可能LCD数据集,DolphinDB 也有离本站匹配的方的单。

转化1个位点仅有美国市场注资者一年分钟级LCD数据集 //纵注记方的单也引LCD数据集sqlolap_factor_year_pivot_1= selectval fromolap_min_factor wherefactorcode=----f0002 pivot bytradetime,symbol //宽注记方的单也引LCD数据集sqlwide_tsdb_factor_year= select* fromtsdb_wide_min_factor wherefactorname =----f0001

宽注记 TSDB 方的单也键入LCD数据集时的速率是纵注记 OLAP 和纵注记 TSDB 的十倍以上,这是因为宽注记 TSDB 的数据集本身就以类似LCD数据集的方的单初始化,不尽可能再继续匹配为LCD数据集,而纵注记方的单也无论 OLAP 变速箱还是 TSDB 变速箱键入造出数据集后还要来作 pivot by 来进行至多转行可用,这个命令要来进数据集核对去重为、顺序等可用,所以才会花费一些等待时除此大部份,在数据集量大时,费时明显,所以速率才会大大幅度落后于宽注记 TSDB 方的单也。

转化3个位点仅有美国市场注资者一年分钟级LCD数据集 //纵注记方的单也引LCD数据集sqlolap_factor_year_pivot= selectval fromolap_min_factor wherefactorcode in( 'f0001', 'f0002', 'f0003') pivotbytradetime,symbol ,factorcode //宽注记方的单也引LCD数据集 sqlwide_tsdb_factor_year= select* fromtsdb_wide_min_factor wherefactorname in( 'f0001', 'f0002', 'f0003')

宽注记 TSDB 变速箱具有最佳的键入效率,随着数据集量持续上升,纵注记数据集至多转行可用要额外减少 piovt by的至多,从而减少愈来愈多的去重为、顺序可用,加剧转化LCD数据集的费时必要性减少。

来作宽注记 TSDB 方的单也初始化在表列全面性给之外有明显占优:

(1) 初始化空除此大部份:虽然宽注记 TSDB 在增压上相对来说胜过,但是由于宽注记方的单也本书数据集个位只有纵注记方的单也的三分之一,所以在空除此大部份开销上宽注记 TSDB 方的单也来作最少; (2) 初始化速率:宽注记 TSDB 方的单也的在读引相同有效性数据集的但会读引速率是纵注记 OLAP 的4倍,纵注记 TSDB 的5倍; (3) 反之亦然查询数据集:宽注记TSDB方的单也在有所不同情节的键入速率仅仅是纵注记OLAP和纵注记TSDB的1.5倍,甚至不太可能激出100倍以上; (4) 以LCD方的单也查询数据集:宽注记 TSDB 方的单也的键入速率是纵注记 OLAP 和纵注记 TSDB 的仅仅10倍以上; (5) 在以非一区一维查询数据集:事例如,按位点一区的按注资者查询数据集,此情节宽注记TSDB方的单也键入速率是纵注记 OLAP 和纵注记 TSDB 的300倍和500倍。

综上,如果一定点期内注资者和位点比事例一般来说,位点初始化的最佳考虑方的单为TSDB宽注记的方的单也来进行初始化,Gmail可以按基本上的键入生活习惯,来考虑转化以注资者名或位点名要用为至多的宽注记。

6、位点回测和构建

很多时候,近似值位点只是投研期中的第一大部份,而最重为要的大部份其实在于如何中选颇为有效性的位点。在本节选之中,将才会主人翁如何在 DolphinDB之中 要用位点除此大部份的相似性深入研究,以及重为回深入研究。

6.1 位点回测

位点的构建和近似值等,一旦从图注记上深入研究造出有方向性的得出结论,就要要用成思路。按照确定的位点信号来分设计造出来的一套买卖条件,就是其实质的注资思路。把一套注资思路计算造出来到历史数据集当之中,近似值按照这样的思路条件去要用融资是否长期丰厚的过程就是回测。

事件驱动型回测主要用来深入研究少量第三人,之中高则否的融资思路。在按位点装配注资第三Pop的思路各种类型之中不是基本或重为点,在这里 DolphinDB 选引了向二阶的位点回测作为范事例来进行说明。

首先为,在k本站数据集上,解决原因了一个按多日注资者收益率连乘打分的位点。此后根据平均分顺序高低扣除第三人持仓也就是说为。

取得扣除持仓也就是说为后,再继续与持仓注资者的日收益率要用等价乘法,之前按天累加,可得整个注资第三Pop的盈利巨大变化曲本站。

6.2 位点相似性深入研究

在之此前的节选之中,初始化位点的坎注记可以是多值假分设,也可以是单值假分设。在所求位点除此大部份相似性时,引荐为了让 array vector将同一注资者同一等待时除此大部份的多个位点摆在一个至多之中,这样可以避免数据结构多个至多名。示事例以单值假分设为事例,展示出如何有效性地先为在注资者内所求位点除此大部份相似性,然后根据注资者个数所求之外值。

单值假分设近似值位点除此大部份自相似性等价 其基本概念是先为将当天的位点根据等待时除此大部份和第三人,匹配成 array vector ,再继续对转化的小机密文件系统注记来进行近似值所求值。 day_data = selecttoArray(val) asfactor_value fromloadTable( "dfs://MIN_FACTOR_OLAP_VERTICAL", "min_factor") wheredate(tradetime) = 2020.01.03groupbytradetime, securityid result= selecttoArray(matrix(factor_value).corrMatrix) ascorrfromday_data groupbysecurityid corrMatrix = result.corr.matrix.avg.reshape( size( distinct(day_data.factorname)): size( distinct(day_data.factorname)))

6.3 多位点构建

在大大部份情节之中,多位点注资假分设的架设可分为:(1)直观计量法;(2)重为回法;两种方的单之外可以在 DolphinDB 之中解决原因。

直观计量法 对有所不同的位点有所不同的也就是说为,近似值造出所有位点分析的各只注资者的意味著盈利的计量最少值,然后考虑意味著盈利三高的注资者。这类作法来得直观,故不在本小节赘述。 重为回法 在DolphinDB官方发布的自然语言解决问题教程之中可选了多种标量重为回假分设,都有一般而言最少二乘法重为回(OLS Regression),棱重为回(Ridge Regression),广义标量假分设(Generalized Linear Model)等。目此前,一般而言最少二乘法重为回 olsEx ,棱重为回 ridge 之中的 'cholesky' 插值,广义标量假分设 glm 都默许分布的单立体化近似值。 其他重为回假分设,DolphinDB 默许 Lasso 重为回,ElasticNet 重为回,随机树林重为回,AdaBoost 重为回等。其之中,AdaBoost 重为回 adaBoostRegressor , randomForestRegressor 默许分布的单立体化近似值。

7、位点近似值的建筑工程化

在基本上二阶投研过程,科学研究员要聚焦思路位点共同整合,而位点近似值作法论的整合安全及一般来说是IT部门政府机构人员来负责,为了加最弱相互快速反应,一般来说要来进行建筑工程化政府机构。好的建筑工程化政府机构能减少重为复、冗余兼职,极大的提高产出效能,使思路投研愈来愈加高效。本节选将才会通过一些范事例来讲解如何对位点近似值来进行建筑工程化政府机构。

7.1 文档政府机构

位点的整合一般来说关乎到 QUANT 制作团队和 IT 制作团队。QUANT 制作团队主要负责位点整合和安全及位点范的单文档;IT 制作团队负责位点近似值作法论的整合和运维。因此要把近似值作法论的文档和位点本身的范的单文档要来作有效性的分离出来,降低耦合,并且可以默许位点整合制作团队实质上审批位点范的单文档,近似值作法论尽可能终上端愈来愈从新并来进行位点重为算等护航。本节主要讨论位点范的单文档政府机构,近似值作法论和运维请参阅7.3和7.6。

DolphinDB 引荐Gmail来作自订模板来烧录基本的位点范的单,每个位点近似于一个自订模板。DolphinDB 对自订模板的政府机构给予了两种作法,模板界面(Function View)和基本功能(Module)。模板界面的缺点都有:

(1)集之中政府机构,附加到协同后,所有路由都可以来作;

(2)默许权责政府机构。

模板界面的主要缺点是难以来进行基本功能化政府机构,当比事例减少时,运维高难度减少。基本功能的优缺点正好同模板界面相反。基本功能可以将大量模板按参考资料树结构设计第三组织在有所不同基本功能之中。既可以在的系统姪程序来时预初始化,也可以在尽可能来作的时候来作 use 上下文,引入这个基本功能。但是基本功能不必复制到每个尽可能来作的路由才可以来作,另外难以对基本功能之中的模板来进行权责政府机构。后续零碎版才会分立模板界面和基本功能的缺点。

详闻之中,DolphinDB分别讲解通过 Module 和 Function View 两种方的单来解决原因近似值作法论与位点文档的分离出来。

7.1.1 通过 Module 解决原因文档分离出来

对于尽可能微调和从新共同整合位点的情形,科学研究员经常尽可能从自己电脑(Client 上端)来拒绝执行位点的近似值,并对位点近似值结果来进行检验,以及留存数据集。这种情节,DolphinDBGmail一般来说在数据集坎 Server 上端通过 Module 来协同作战通用的近似值作法论,然后科学研究员通过 python 客户上端发送自己的位点近似值作法,绑定 Server 上端 Module 之中近似值作法论来转给插值,初始化近似于数据集,并来进行近似值、返回结果。详闻就其展示这种之外需所求量的 Server 上端和 Client 上端解决原因,以及他们同德和运作。

7.1.2 通过 Function View 解决原因文档分离出来

对于今日共同整合进行时,早已继续尽可能调试的位点,则一般来说将位点插值通过 Funciton View 留存到数据集坎之中,并通过数据集坎的Job来对所有留存到数据集坎之中的位点来进行大批量绑定近似值、并留存位点近似值结果。大致过程如下:

(1)准备位点制作者,并通过 addFunctionView 将位点制作者留存到数据集坎之中,留存的 functionview 可以来进行权责政府机构。

(2)在服务上端通过制作者循环绑定 submitJob 可以大批量的创立位点绑定护航,解决原因大批量位点绑定。

7.2 单元试验

遇到位点文档重为构、近似值作法论微调、数据集坎升级等情形,不必对最基本的位点范的单来进行正确性试验。DolphinDB可选了单元试验作法论,可运用于终上端化试验。

这个单元试验作法论主要包含了表列素材:

test 模板,可以试验一个单元试验机密文件或一个参考资料下的所有单元试验机密文件。 @testing 宏,运用于描绘出一个试验case。 assert 上下文,判断结果是否符合意味著。 eqObj 等模板,运用于试验结果是否符合意味著。

示事例通过对位点模板factorDoubleEMA的试验来展示单元试验的撰写。文档之中展示了三个试验cases,两个运用于批解决问题,一个运用于引近似值解决问题。

@testing: case= "factorDoubleEMA_without_null"re = factorDoubleEMA( 0.10.10.20.20.150.30.20.50.10.2) assert 1, eqObj(re, NULLNULLNULLNULLNULL5.788743-7.2918897.031123-24.039933-16.766359, 6)

@testing: case= "factorDoubleEMA_with_null"re = factorDoubleEMA( NULL0.10.20.20.15NULL0.20.50.10.2) assert 1, eqObj(re, NULLNULLNULLNULLNULLNULL63.64131060.2566088.156385-0.134531, 6)

@testing: case= "factorDoubleEMA_streaming"try{dropStreamEngine( "factorDoubleEMA")} catch(ex){} input = table(take( 1, 10) asid, 0.10.10.20.20.150.30.20.50.10.2asprice) out = table( 10: 0, ----id----price, [INT,DOUBLE]) rse = createReactiveStateEngine(name= "factorDoubleEMA", metrics=, dummyTable=input, outputTable=out, keyColumn= 'id') rse.append!(input)assert 1, eqObj(out.price, NULLNULLNULLNULLNULL5.788743-7.2918897.031123-24.039933-16.766359, 6)

7.3 立体化近似值

到今日为止,上文讨论的都是位点的基本范的单解决原因,仍未关乎通过立体化近似值或分布的单近似值来延缓近似值速率的原因。在位点近似值的建筑工程有的系统之中,可以通过立体化来加速的一维都有:证券(注资者),位点和等待时除此大部份。

在DolphinDB之中,解决原因立体化(或分布的单)近似值的应用路径有表列4个途径。

通过SQL上下文来解决原因隐的单的立体化近似值。当SQL上下文作运用于一个分布的单注记时,变速箱才会尽不太可能下推近似值到各个一区拒绝执行。 创立多个数据集源(data source),然后来作mr模板(map reduce)来解决原因立体化近似值。 Gmail通过 submitJob 或 submitJobEx 审批多个护航。 用 peach 或 ploop 解决原因立体化。

DolphinDB 不促请在位点近似值之中采用 peach 或 ploop 的方的单来解决原因立体化。DolphinDB 之中可运用于近似值的本站程分为两类,分别亦称 worker 和 executor。一般 worker 运用于接曾受一个护航(job),并将护航转化成多个姪护航(task)在本地的 executor 或远程的 worker 上拒绝执行。一般executor拒绝执行的都是本地的费时来得短的姪护航,不一定在 executor 上拒绝执行的护航一般不才会再继续转化造出姪护航。peach 或 ploop 将所有的姪护航都在本地的 exeuctor 拒绝执行。如果姪护航本身再继续转化造出姪护航(譬如姪护航是一个分布的单 SQL Query),将严重为影响整个的系统的吞吐量。

详闻将讨论此前三种作法在位点立体化近似值之中的应用领域。

7.3.1 分布的单SQL

分布的单SQL的第一个应用领域是近似值无正常的位点。对于无正常的位点,即近似值本身不太可能只关乎单条历史记录内一个或者批注段。这样的近似值可以为了让分布的单注记的机制,在各一邻近立体化近似值。

以第三章之中的也就是说为偏度位点为事例,此位点近似值只用了一个配置机密文件,且近似值范的单不关乎此前后数据集,所以在SQL之中绑定点,DolphinDB才会终上端在各一邻近立体化近似值。如果目标数据集是机密文件系统注记,可以使其转成机密文件系分立区注记,使之分布的单立体化近似值。机密文件系分立区注记的创立,参阅 createPartitionedTable。

resWeight = selectTradeTime, SecurityID, ----mathWghtSkew asfactorname, mathWghtSkew(BidPrice, w) asval fromloadTable( "dfs://LEVEL2_Snapshot_ArrayVector", "Snap") wheredate( TradeTime) = 2020.01.02

分布的单 SQL 的第二个应用领域情节是近似值按第三人一第三组的数据流相关位点。对于第三组内近似值的位点,在 SQL 方的单也之中,将第三组配置机密文件分设为一区配置机密文件,可以用 context by第三组配置机密文件立体化。如若近似值关乎到的数据集不跨一区,则可以用 map 上下文,加速结果可用。如若近似值关乎到的数据集跨一区,则 SQ L才会在一邻近立体化近似值,之前在结果大部份核对再继续拆分。

以日内收益率偏度的位点 dayReturnSkew近似值为事例, 这个近似值本身是尽可能对第三人一第三组,在第三组内每天分别要用近似值。关乎到的数据集为分钟则否数据集,数据集源是按月末一区,第三人 HASH 3 一区。因此,要用近似值时除了可以用 context by第三组配置机密文件立体化大部份,还可以用 map 上下文加速可用结果。

minReturn = select----dayReturnSkew asfactorname, dayReturnSkew(close) asval fromloadTable( "dfs://k_minute_level", "k_minute") wheredate( tradetime) between 2020.01.02 : 2020.01.31 groupbydate( tradetime) astradetime, securityid map

7.3.2 map reduce

当Gmail不想根据一区要用立体化近似值时,可以通过 mr 模板自订要用立体化近似值。

以第三章之中讲解的 factorDoubleEMA 位点为事例。DoubleEMA 位点的近似值是对第三人一第三组,在第三组内月份要用车站内近似值。此类近似值由于将车站内的分成才会跨等待时除此大部份一区,所以在 SQL 近似值之中才会先为在一邻近要用近似值,然后之前拆分再继续要用一次近似值,费时才会来得长。

愈来愈合理的要用法是,如果一区只按照第三人一区,那么近似值就可以反之亦然在一邻近要用完而不用拆分核对再次结果了。此时可以用 repartitionDS模板先为将从前的数据集重为从新一区再继续通过 map reduce 的方的单要用立体化近似值。

//将原数据集按注资者重为从新10个HASH一区ds = repartitionDS(< select* fromloadTable( "dfs://k_minute_level", "k_minute") wheredate( tradetime) between 2020.01.02 : 2020.03.31>, ----securityid, HASH,10)

def factorDoubleEMAMap( table) { returnselecttradetime, securityid, ----doubleEMA asfactorname, factorDoubleEMA(close) asval fromtable context bysecurityid map }

res = mr(ds,factorDoubleEMAMap,,unionAll)

7.3.3 通过submitJob审批护航

之此前的两种立体化近似值都是在此后台拒绝执行的,立体化度是由模板 localExecutors分设置。而有些厂内不太可能很大,或者Gmail不想影响此后台来作,此时可以通过 submitJob审批护航。submitJob的立体化度由 maxBatchJobWorker模板分设置。由于后台厂内密切关系是独立的,一般来说不尽可能返回到此前上端的护航都引荐用后台审批 submitJob 的形的单。

仍旧以 dayReturnSkew 位点为事例。一般来说尽可能将位点读引位点坎注记,此时可以将整一个过程审批几个后台厂内去拒绝执行,而在客户上端之中,同时可以继续要用其他近似值。由于此事例上交的位点坎的一区是按月末和位点名 VALUE 一区,故此时应按照月末份去审批厂内。这样既可以立体化读引不才会争执,又可以将厂内审批到后台,不影响此后台审批其他护航。

def writeDayReturnSkew( dBegin,dEnd) { dReturn = select----dayReturnSkew asfactorname, dayReturnSkew(close) asval fromloadTable( "dfs://k_minute_level", "k_minute") wheredate( tradetime) between dBegin : dEnd groupbydate( tradetime) astradetime, securityid //读引位点坎loadTable( "dfs://K_FACTOR_VERTICAL", "factor_k").append!( dReturn) }

for( i in0..11) { dBegin = monthBegin(temporalAdd( 2020.01.01,i, "M")) dEnd = monthEnd(temporalAdd( 2020.01.01,i, "M")) submitJob( "writeDayReturnSkew", "writeDayReturnSkew_"+dBegin+ "_"+dEnd, writeDayReturnSkew,dBegin,dEnd) }

7.4 机密文件系统政府机构

在装配 DolphinDB 后上端生存环境时,近似值和管理兼职的机密文件系统分之一用可在单路由的 ”dolphindb.cfg” 或协同的 cluster.cfg(表列又称“路由装配机密文件”)之中,通过模板”maxMemSize“装配单路由仅次于分之一用机密文件系统。

在调试大护航量的近似值进行时后,可通过 undef 模板将变量字段为 NULL,或者关闭 session 来及早被囚变量的机密文件系统。

节选3.2之中的事事例,对半年的一个系统数据集要用可用,批解决问题方的单的之中除此大部份变量分之一用机密文件系统激出21GB,如果分设置的机密文件系统小于21GB,则报Out of Memory错误。这种但会可以将厂内分立后再继续审批读引。

愈来愈多有关机密文件系统政府机构的详述素材,请参阅DolphinDB机密文件系统政府机构教程。

7.5 权责政府机构

位点数据集是相当重为要的数据集,并不是每一个Gmail都可以胡乱采访所有位点的,所以要对位点数据集要用好权责政府机构。DolphinDB database 给予了最弱大、灵活、安仅有的权责管控的系统,可以受限制位点坎注记级,模板界面级的政府机构。管控路由(controller)作为权责政府机构之中心,来作RSA解密方的单对Gmail更为重要个人信息来进行解密。DolphinDB的权责政府机构主要有表列功能,可以不方便科学研究员和运维政府机构人员安仅有有效性的政府机构权责:

给予Gmail和第三组剧情,不方便权责管控 给予9种权责管控姪类,适应各种情节 丰富的权责管控模板 模板界面配合保护数据集隐私与给予深入研究结果 对护航调度和引数据集护航实时鉴权,保证的系统安仅有 来作RSA对Gmail更为重要个人信息解密 默许SSO,简化登录,不方便的系统扩大

愈来愈多有关权责政府机构的详述素材,请参阅DolphinDB权责政府机构和安仅有教程。

7.6 护航政府机构

位点近似值的护航一般来说分为仅有量近似值所有位点护航、交互的单单位点重为算护航、所有位点持续性近似值护航这三种,本章才会对每一种位点近似值护航来进行详述讲解。

位点护航可以通过表列三种方的单拒绝执行:

通过交互的方的单拒绝执行。 通过 submitJob 审批一个Job来拒绝执行。 通过 scheduleJob 审批一个定点护航来来进行等待时除此大部份尺度性的拒绝执行。

7.6.1 仅有量近似值

位点的仅有量赛跑批护航,一般来说是的系统姪程序来位点数据集时的一次性护航,或者较短等待时除此大部份尺度来进行一次的护航,这类护航可以通过单次一连串或者定点护航(scheduleJob)的方的单来进行政府机构。

单次一连串的护航:促请通过 submitJob 模板审批护航。通过 submitJob 审批的护航,才会审批到服务器的Job 队至多之中拒绝执行,早已继续曾受客户上端影响。可以通过 getRecentJobs 推论护航是否进行时。 // 通过summitjob来进行审批submitJob( "batchTask", "batchTask", bacthExeCute) 等待时除此大部份尺度性护航:如果近似值的位点增益较高尽可能每天盘后或者其他等待时除此大部份尺度定期仅有部重为算一次,可以来作定点护航(ScheduleJob)的方的单来进行政府机构。 //分设置一段等待时除此大部份每天拒绝执行scheduleJob(jobId=----daily, jobDesc= "Daily Job 1", jobFunc=bacthExeCute, scheduleTime= 17: 23m, startDate= 2018.01.01, endDate= 2018.12.31, frequency= 'D')

7.6.2 位点运维政府机构

在位点共同整合过程之中,当遇到位点插值、模板微调的情形,尽可能对该位点来进行重为从新近似值,同时尽可能将近似值的从新的位点数据集愈来愈从新到数据集坎之中,对于有所不同愈来愈从新的增益的位点,一般来说有表列两种方的单:

位点的数据集增益很低, 位点的总数据集量 不大

位点的数据集增益很低,数据集量很大时,引荐在位点数据集一区时伸长等待时除此大部份一维,以位点名来进行VALUE一区。这样可以使每个位点的数据集独立的留存在一个一区之中,管控一区大小不一在一个合理的全域。当Gmail遇到位点重为算的情形,便可以用dropPartition模板先为删除这个位点所近似于的一区数据集,然后反之亦然重为算这个位点并留存到数据集注记之中。

位点的数据集增益较高,位点的总数据集量较小

当位点的数据集增益较高,位点的总数据集量较小时,如若将每个位点分成为独立的一区才会使得每个一区特别小,而过小的一区不太可能才会影响读引速率。这种但会,可以按照位点 HASH 一区。来作 update!来来进行位点数据集愈来愈从新可用,或来作 upsert 来来进行插入愈来愈从新可用。此外,对于 TSDB 变速箱,可以分设置模板 keepDuplicates=LAST, 此时可以反之亦然来作append!或者 tableInsert插入数据集,从而激出效能愈来愈高的愈来愈从新数据集的效果。

update!, upsert以及 TSDB 变速箱特殊分设置下的反之亦然 append!延展数据集,这三种愈来愈从新可用都促请在数据集量较小,且愈来愈从新不则否繁的但会来作。对于尽可能大量位点重为算的数据集愈来愈从新的情节,DolphinDB 引荐来作单位点独立一区的方的单。当位点重为算时之外需用dropPartition模板删除位点所在一区,再继续重为算读引从新位点厂内。

总 结

用DolphinDB来来进行位点的近似值时,可考虑LCD和SQL两种方的单来烧录位点的基本范的单。LCD方的单来作等价来近似值位点,解决原因初衷相当简练;而SQL方的单要所求投研政府机构人员来作向二阶的初衷来进行位点整合。无论哪种方的单,DolphinDB之外默许批引主体的解决原因。DolphinDB可选了相似性和重为回深入研究等近似值物件,可深入研究位点的有效性性,可对多位点构建。

在位点坎的建分设建筑工程上,如果自觉灵活性,促请采用单值纵注记假分设。如果自觉效能和效率,引荐来作TSDB变速箱,启用多值宽注记方的单也,第三人(ST)作为注记的至多。

之前,基于大大部份制作团队的IT和投研相对来说独立的事实,给造出了在文档政府机构上的建筑工程化促请,投研制作团队通过基本功能和自订模板烧录基本位点业务范的单,IT制作团队则安全及作法论文档。同时为了让权责基本功能有效性隔离各制作团队密切关系的数据集采访权责。

肝癌有什么症状
郑州看妇科哪家好
济南看白癜风哪里好
深圳看牛皮癣医院哪个好
重庆看白癜风去什么医院最好
咳嗽有黄痰吃什么止咳糖浆
关节肿疼
维生素d3
止血药
老人腿疼
相关阅读

字节进军茶饮:组建食品饮料新产品团队,开设线上茶饮店

资讯 2025-10-25

时隔去年Tech宇宙人独家报道bit推出供于实际上的白酒饮厂家“蓬莱秋海棠”后,bit又想要亲手同队要用食品饮料经营范围。 Tech宇宙人独家谎称,bit于据统计期在北京组建食品

芒特上下半场连失良机,武磊式不为所动,他能体会到吗?

综艺 2025-10-25

在直到现在凌晨的加拿大黑池比赛中会,埃弗顿队球星卜特体现让全场不已纠结。一方面他屡屡利用风骚的跑位,反越位成功创造绝佳的破门急于,但他上下半场两次错过了绝佳的进球急于。看着不快的卜特,不知道

猪价正在合理回归 但中期走势仍谨慎看来

综艺 2025-10-25

[导读] 近来欧美奶牛的产品适度呈现偏强态势,经过4年初中下旬以来短一段时间上扬之前,目前全省猪价现在反弹到1年初初程度。养殖业上端出栏负面影响较中后期缓解,不下价信心较佳,但猪价短期共计增幅较

云跨国企业面临最强宿敌:收入翻番、横扫大单、强势踢馆

资讯 2025-10-25

产值增长速度整整翻了一番。腾讯在2009年就开端了“直到现在阳蓬勃发展攻防战略”,但直到2018年才制订“阳改”,即从阳新媒体核心、公交;也统种;也统等方面全部都是面性主导。随着2021年3月底直到现

2008年的今天:詹姆斯成为NBA近代最年轻的一万分球员

图片 2025-10-25

2008年的那时候:邓肯视作NBA历史最中年的一万分后卫 直播吧2月28日讯 2008年的那时候,邓肯视作NBA历史最中年的一万分后卫。 勒布朗-邓肯在输给凯尔特

友情链接