当股票价格在其他股票价格的0.5%以内时,将股票价格分组

2024-10-01 00:19:31 发布

您现在位置:Python中文网/ 问答频道 /正文

谢谢你的回答,我以前没有用过StackOverflow,所以我对答案的数量和速度感到惊讶-太棒了。在

我还没有完全理解答案,但我想我应该在问题说明中添加一些信息。请参见下图。在

我不能在这里发布图像,因为我没有足够的点数,但是你可以看到图像 在http://journal.acquitane.com/2010-01-20/image003.jpg

这张图片可能更接近于我想要达到的目标。所以你可以在横线上看到图表上的价格点。现在你得到了一个0.5%以内的线的聚类,这被认为是一件好事,也是为什么我要自动识别这些簇。您可以在图表中看到S2&MR1、R2&WPP1有一个群集。在

所以每天我都会生产出这些价格点,然后我可以手工确定那些在0.5%以内的价格。-但是这个问题的目的是如何使用python例程来完成它。在

我已经用标签再次复制了这个列表(见下文)。请注意,列表价格点与图片中的价格点不匹配,因为它们来自两个不同的日期。在

[3175.24,8年] [SR3147.85,6] [2144.13,8年] [SR2130.44,6] [1127.79,8年] [QR3127.42,5] [SR1120.94,6] [QR2120.22,5] [MR3118.10,3] [WR3116.73,2] [DR3116.23,1] [WR2115.93,2] [QR1115.83,5] [MR2115.56,3] [DR2115.53,1] [WR1114.79,2] [DR1114.59,1] [WPP,113.99,2] [民进党,113.89,1] [MR1113.50,3] [DS1112.95,1] [WS1112.85,2] [DS2112.25,1] [WS2112.05,2] [DS3111.31,1] [MPP,110.97,3] [WS3110.91,2] [50毫安,110.87,4] [MS1108.91,3] [QPP,108.64,5] [MS2106.37,3] [MS3104.31,3] [QS1104.25,5] [SPP,103.53,6] [200毫安,99.42,7] [QS2,97.05,5] [YPP,96.68,8] [SS1,94.03,6] [QS3,92.66,5] [YS1,80.34,8] [SS2,76.62,6] [SS3,67.12,6] [YS2,49.23,8] [YS3,32.89,8]

我确实犯了一个错误,原来C组的名单是错误的,不应该被包括在内。谢谢你指出这一点。在

另外,0.5%是不固定的,这个值每天都会变化,但我只是用0.5%作为例子来说明这个问题。在

再次谢谢。 马克

另外,我现在就开始检查答案。在

你好:

我需要操纵股票价格。我刚刚开始使用Python(但我想在任何语言中实现它都会有困难)。我在寻找如何在python中很好地实现这一点的一些想法。在

谢谢 马克

问题: 我有一个列表列表(FloorLevels(见下文)),其中子列表有两个项(股票价格、权重)。我想把股票价格分成几组,当它们彼此相差不到0.5%时。A组的强度由其总重量决定。例如:

Group-A
115.93,2
115.83,5
115.56,3
115.53,1
-------------
TotalWeight:12
-------------
Group-B
113.50,3
112.95,1
112.85,2
-------------
TotalWeight:6
-------------    

FloorLevels[   
[175.24,8]
[147.85,6]
[144.13,8]
[130.44,6]
[127.79,8]
[127.42,5]
[120.94,6]
[120.22,5]
[118.10,3]
[116.73,2]
[116.23,1]
[115.93,2]
[115.83,5]
[115.56,3]
[115.53,1]
[114.79,2]
[114.59,1]
[113.99,2]
[113.89,1]
[113.50,3]
[112.95,1]
[112.85,2]
[112.25,1]
[112.05,2]
[111.31,1]
[110.97,3]
[110.91,2]
[110.87,4]
[108.91,3]
[108.64,5]
[106.37,3]
[104.31,3]
[104.25,5]
[103.53,6]
[99.42,7]
[97.05,5]
[96.68,8]
[94.03,6]
[92.66,5]
[80.34,8]
[76.62,6]
[67.12,6]
[49.23,8]
[32.89,8]
]

Tags: 答案图像列表数量错误图表group图片
3条回答

我建议重复使用k-means clustering——我们简称它为KMC。KMC是一个简单而强大的聚类算法。。。但它需要“被告知”你的目标是多少个集群。你事先不知道(如果我理解正确的话)——你只需要最小的k,这样“聚集在一起”的两个项目之间的距离不超过X%。所以,从k等于1开始——所有的东西都聚在一起,不需要群集过程;-)——然后检查簇的直径(从几何术语的使用来看,簇的“直径”是簇中任何两个成员之间的最大距离)。在

如果直径是> X%,则设置k += 1,以k作为簇数执行KMC,然后重复检查。在

在伪代码中:

def markCluster(items, threshold):
    k = 1
    clusters = [items]
    maxdist = diameter(items)
    while maxdist > threshold:
        k += 1
        clusters = Kmc(items, k)
        maxdist = max(diameter(c) for c in clusters)
    return clusters

当然,假设我们有合适的diameterKmcPython函数。在

这听起来像你想要的那种东西吗?如果是这样,那么我们可以继续向您展示如何编写diameter和{}(如果您要处理的items的数量相对有限,那么可以使用纯Python编写,否则,也许可以利用功能强大的第三方附加框架,如numpy),但是如果您真的想要一些非常不同的东西,那么就不值得再麻烦了,这张支票从哪里来的!-)在

你需要更详细地说明你的问题。“当股票价格彼此相差不到0.5%时,将它们分组”是什么意思?在

可能性:

(1)本集团的每个成员与本集团其他成员的比率在0.5%以内

(2)对列表进行排序,并在差距大于0.5%的地方拆分

注意,116.23在115.93--abs((116.23 / 115.93 - 1) * 100) < 0.5的0.5%之内,但是您将一个数字放在组A中,一个数字放在组C中

简单的例子:a, b, c = (0.996, 1, 1.004)。。。注意a和b适合,b和c适合,但a和c不适合。你希望他们如何分组,为什么?输入列表中的顺序是否相关?在

可能性(1)产生ab,c或a,bc。。。打破平局规则,请
可能性(2)产生abc(没有大的差距,所以只有一组)

一支股票s属于一个组G如果每支股票tGs*1.05>;=t和{}/1.05<;=t,对吗?在

我们如何将股票添加到每组中?如果我们有存货95,100,101,和105,我们以100开始一个组,然后加上101,我们将得到{100,101,105}。如果我们在100后做了95,我们会得到{100,95}。在

我们只需要考虑所有可能的排列吗?如果是这样的话,你的算法将是低效的。在

相关问题 更多 >