全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学
3881 35
2009-08-25
Timepricetime_recordtimedifferencelagtradetime_5second
27:00.85141220160
28:11.5514129171
28:28.4514130817
28:36.551413168
28:40.9514132044
28:54.2514133414
28:56.4514133622
28:57.3514133711
29:02.8514134255
29:09.851413497
29:19.8514135910
29:26.551413667
29:41.1514138115
29:46.4514138655
29:56.2514139610
30:02.851414026
30:04.9514140422
30:04.9514140400
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2009-8-25 17:39:46
我实在无法熟悉 SAS的数据库算法!    我现在想把这个表中的TIME RECORD 这一行中的 随机出现的 相邻的5秒钟的 交易合并。

难题是: 不能静态删除 所有标记5秒以内的交易。因为删除任何一个纪录后,余下的间隔可能就已满足了大于5秒的要求。

似乎得用双循环,我今天一直沿lag函数和双循环的方向努力,但始终无法得到结果。 因为在循环里。我发现LAG 函数赋值不正确。另外在循环中,当碰到一个小于5秒的纪录后 ,只能中断循环,却无法在循环内删除这条记录。痛苦!


我这几天使用SAS的初步感觉:

似乎 SAS 的编译技术很不同于思维直觉。编程者好像不能无束缚的写 流水账 式的程序。可是作为统计软件。我觉得这应该是个缺陷。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-8-25 20:35:03
相邻的5秒钟的 交易合并?
如何地合并呢?合并后的time, price, time_record 取什么值呢?均值?较大值?或者是第一个值?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-8-25 21:44:57
合并后的time, price, time_difference取第一个值
然后对time_record求和么?象下面图可以么?
QQ截图未命名.jpg
刚才的数据区间刚好没有交叉 也就说5秒区间的time变量首末之差不超过5
如果那数据改一下 把29:02:8变成29:00:8 区间会有交叉了
也就是说符合条件的time变量挨着的每每两个不超过5秒,但是首末time差超过5秒了
是不是要象下面的处理?
28:36.5--28:40.9 第一行
28:54.2--28:57.3 第二行
28:56.4--29:00.3 第三行
28:57.3--29:00.8  第四行
30:02.8--30:04.9  第五行
2.jpg
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-8-26 06:20:50
微观交易结构现在有几个模型 用来发现informed trading. 其中最简单的就是统计日交易的买卖盘的交易笔数。非常像我们看盘软件中的买一, 买二 。。。卖一, 卖二。。。的统计。

这样统计是为了侦测是否有目的性的买卖盘,我现在着手先做一个最简单的试验性质的模型(最好能扩展),只对每日的每笔交易数据统计频率,然后用最大似然函数来考虑其一年或一个季度的平均情况,目前没有加入每笔交易大小,每笔交易间的时间差,以及每笔交易对报价的影响特点等等信息。


即使这个模型,在对每笔交易的统计时也会出现偏差,而且方向交易者会故意隐藏其交易目的。使这个模型的解释力下降。

具体这个问题,我需要把每一笔交易的后续5秒内的交易都去除,这样隐含的假设是认为他们其实是由一个目的人发起的。滤掉这个噪音。当然这个5秒是否准确是个统计研究方向。

合并后的time, price, time_record 只取这笔交易的数据。后续5秒内的数据都不要了。



可能的一个变化是把同一price的5秒内的数据合并。我还没有在算法上斟酌。

sushe1527 : 这个 TAQTIC里的ticker数据,是完全按时间排序的,会有错,但我目前还没有发现交叉现象,当然应该在程序里做分支保护是最上乘的。

time 和 TIME RECORD 是一个数据,后者是秒的绝对数。TIMEDIFFERENCE 是这个绝对数的差,而最后lagtradetime_5second是我挑出来 需要考虑合并的数据。


这个数据,我认为,最佳的应该不要用区间算法来考虑,因为固定区间或按某个时间原点开始计算区间都会有偏,且算法不够灵活。

我自认为应该的方向(可能不成熟),是对所有数据至少做两次扫描。一个手工的过程:在当前纪录下,看下面N条记录,计算和这笔之间的时间差,小于等于5秒的删去后面的纪录(这里最好考虑price的判别,可以有两个算法,同价格的 和不需要考虑价格的) 一旦大于5秒则进行下面的一条记录。如此处理所有记录。这个应该也是动态过程,因为一旦一条不符合的纪录删掉。则timedifference 和lagtradetime_5second 的计算值就发生变化。要重新考虑新的删去一条记录后的这些计算,再看是否在5秒以内。

谢谢两位!我知道两位都是高手。将软件,金融,和统计结合起来。一定是未来金融交易的方向。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-8-26 07:03:39
Time        price        time_record        Lagtradetime        lagtradetime_5second
28:54.2        51        41334        14        
28:56.4        51        41336        2        2
28:57.3        51        41337        1        1
29:02.8        51        41342        5        5


像这个子集, 28:54,2的交易后面2秒内的数据要删掉。在看2秒后的那条记录,现在变成差3秒了,也要删掉。在往后那条差8秒了(是个向后累加timedifference的过程),这样就要保留29:02.8这条数据,然后再从这条再往后看。如果一旦发现新的不满足的数据。重复上面的过程。

我本来也是这样做的:
   先在当前数据下,看timedifference是否前面数据为零,是则看,lag(lagtradetime_5second) 是否不为空? 是,则累加至timedifference。再看是否小于等于5? 是,则将其赋值给lagtradetime_5second 然后再次清零本条的timedifference, 如此会形成一个中间有零和大于5的timedifference的数据表,再一次清除所有有零的 timedifference 的记录。

但我无论怎样做,lag函数总是无法找到前一条数据。而跑到上一个小于5的纪录的紧随的一个非小于5的纪录上。非常奇怪!!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群