Sorting 算法股票交易-如何有效地处理事件流以更新[平均值、标准差、中值]值?
我已经实现了一个简化的算法,该算法从传入数据流中维护股票统计信息。目标是使用有效的算法来计算简单的统计数据,Sorting 算法股票交易-如何有效地处理事件流以更新[平均值、标准差、中值]值?,sorting,mean,median,stock,algorithmic-trading,Sorting,Mean,Median,Stock,Algorithmic Trading,我已经实现了一个简化的算法,该算法从传入数据流中维护股票统计信息。目标是使用有效的算法来计算简单的统计数据,均值,方差和中值。该计划将只为每个公司保留一个值,因此以前评级公司的新值应取代以前的值。还可以使用delete命令从当前列表中删除公司。输入必须如下所示: A 111.12 Apple_Inc A 745.29 Alphabet_Inc A 17.10 Twitter_Inc S A 101.33 Apple_Inc S A 112.55 Facebook_Inc S D Apple_In
均值
,方差
和中值
。该计划将只为每个公司保留一个值,因此以前评级公司的新值应取代以前的值。还可以使用delete
命令从当前列表中删除公司。输入必须如下所示:
A 111.12 Apple_Inc
A 745.29 Alphabet_Inc
A 17.10 Twitter_Inc
S
A 101.33 Apple_Inc
S
A 112.55 Facebook_Inc
S
D Apple_Inc
S
“A
”表示输入数据,“
D
”表示删除数据,当要求
“S
”时,程序应给出以下输出:(avg
是平均值,S
是标准偏差,m
是中值)
正如一个注释,当我们必须计算中位数时,如果公司的数目是奇数的,它应该在中间用相应的公司名称返回更大的数字。
只要我们插入、删除或添加新值,统计值就应该始终更新,而不是生成新值。最有效的处理方法是使用有限状态机
在经历了近半个世纪的高科技实践经验后,我敢说这一点(并且可以看到资源占用/总体性能/流处理延迟极限)。
(当然,术语“高”会随着时间的推移而蔓延:o),但令人惊讶的是,它不会膨胀所获得的知识)
鉴于上述规则,金融服务管理局的任务非常简单
- FSA输入:
{A,D,S}-前缀值对-(aListedTitleVALUE,aListedTITLE)
- FSA内部状态变量:
ListTitleValuePairsToProcess
,
在[X]
-状态下为空(未初始化状态(当FSA“关闭”)
- FSA事件处理:
如上所述:
{ onA_aListedValuePairUPDATE, //.CHK aValuePAIR presence in FSA-state + .UPD { aValuePAIR | aValuePAIR.aListedTitleVALUE }
onD_aListedValuePairDELETE, //.DEL aValuePAIR from FSA-state
onS_ProcessAndPrintRESULTS //.DO {Mean,StDev,Median } on FSA-state + .PRINT
}
一种形式拓扑&有限状态自动机图
设计选项:
根据底层硬件的输入流处理延迟v/s计算能力(因为FSA
-s非常简单,它可能是一个极简的超高速SoC硬件实现)v/s(输出处理器的非)阻塞性质,将[FSA.PROCESS]
作为一种在之后,onS\u进程和打印结果的“预计算”部分已经作为尾部活动(.onA\u aListedValuePairUPDATE)->
FSA过渡参考:*您需要向我们展示您尝试了什么以及哪里出了问题。我们不是来为您做项目的,尽管我们很乐意帮助您解决具体问题。路易斯,我们需要更多信息和一些代码来准确了解您将要解决的问题。我将擅长帮助您解决此类问题我在市场金融工作,但我们需要代码和一个特定的问题。
{ onA_aListedValuePairUPDATE, //.CHK aValuePAIR presence in FSA-state + .UPD { aValuePAIR | aValuePAIR.aListedTitleVALUE }
onD_aListedValuePairDELETE, //.DEL aValuePAIR from FSA-state
onS_ProcessAndPrintRESULTS //.DO {Mean,StDev,Median } on FSA-state + .PRINT
}
[X]
\
( .onInit )->---[FSA.WAIT-STATE]
^ \ \ \
| \ \ ( .onA_aListedValuePairUPDATE )->---[FSA.UPDATE aListedValuePair]
| \ \ \
| \ \ ( .onDone )->---(*)-----------+
| \ \ |
| \ ( .onD_aListedValuePairDELETE )->---[FSA.DELETE aListedValuePair] |
| \ \ |
| \ ( .onDone )->---------------+ |
| \ | |
| ( .onS_ProcessAndPrintRESULTS )->---[FSA.PROCESS] | |
| \ | |
| ( .onDone )->---[FSA.PRINT] | |
| \ | |
| ( .onDone )->---+ | |
| | | |
+-----------------------------------------------------------------------------------------------------+-+-+