哪种编程语言用于模拟计算性交易组合?

2024-05-16 23:57:32 发布

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

我正在构建一个交易组合管理系统,负责非高频交易组合的生成、优化和模拟(处理1分钟或3分钟的数据条,而不是滴答数据)。在

我计划使用amazonweb服务来承担应用程序的全部负载。在

作为语言,我有四个选择。在

  1. 爪哇
  2. C++ +<
  3. C#
  4. Python

以下是项目范围的极端范围。可能永远不会这样,但它在需求范围内:

  • 每周模拟10000000个交易系统。在
  • (每个交易系统都有自己的数据挖掘方法,包括计算成本极高的特征选择算法。想象一下500-5000个特性使用包装器。这些都不是经常运行的,但仍需考虑)
  • 实时生成投资组合w/100000交易策略
  • 从全球每个股票/期货市场获取1分钟或3分钟的数据(约100000)
  • 投资组合优化,策略多达100000个。(相当密集的算法)

速度是个问题,但我相信Java可以处理负载。在

我只想确保Java能够轻松地处理上述需求。我不想在C++中做这个项目,但如果需要的话,我会的。在

之所以使用C,是因为我认为它是Java的一个很好的替代品,尽管我一点也不喜欢Windows,如果一切都一样,我更喜欢Java。在

Python—我读过一些关于PyPy和pyscho的文章,它们声称Python可以通过JIT编译进行优化,以接近C语言的速度运行。。。这几乎是它在这个列表上的唯一原因,此外,Python是一种很棒的语言,可能是编写代码最愉快的语言,这对这个项目来说根本不是一个因素,而是一种额外的好处。在

总而言之:

  • 实时生产
  • 每周对大量系统进行模拟
  • 每周/每月优化投资组合
  • 要从中收集数据的大量连接

我们不处理毫秒甚至基于秒的交易。唯一要考虑的是,当Java在必要数量的EC2服务器上分散时,Java是否能够处理这种负载。在

非常感谢你们的智慧。在


Tags: 数据项目方法算法数据挖掘语言应用程序管理系统
3条回答

选择你最熟悉的语言。如果你对它们都了解得一样,而且速度是一个真正的问题,那么选择C

虽然我是Python的超级粉丝,但就个人而言,我并不是Java的超级爱好者,但在这种情况下,我不得不承认Java是正确的选择。在

对于许多项目来说,Python的性能并不是一个问题,但是在您的情况下,即使是轻微的性能损失也会很快增加。我知道这不是一个实时模拟,但即使是批量处理,它仍然是一个需要考虑的因素。如果一台虚拟服务器的负载太大,那么速度加倍的实现将使虚拟服务器成本减半。在

对于许多项目,我还认为Python将允许您更快地开发解决方案,但在这里我不确定是否会这样。Java拥有世界级的开发工具和顶级的企业级框架,用于并行处理和跨服务器部署,尽管Python在这方面有解决方案,但Java显然具有优势。您还可以使用Python无法匹配的Java架构选项,比如Javaspaces。在

<>我认为C和C++对这样的项目施加了太多的开发开销。他们是可行的,如果你非常熟悉这些语言,我相信这是可行的,但除了潜在的更高的性能,他们没有其他东西可以带来。在

C只是对Java的重写。如果你是一个Windows开发人员,如果你喜欢Windows,我会用C而不是Java,但如果你不关心Windows,就没有理由关心C。在

我会选择Java来完成这个任务。在RAM方面,java和C++之间的区别在于java中每个对象的开销为8字节(使用Sun 32位JVM或Sun 64位JVM带有压缩指针)。所以如果你有上百万的物体飞来飞去,这会有不同。就速度而言,java和C++在这个比例上几乎相等。在

所以对我来说更重要的是开发时间。如果你在C++中犯了一个错误,你会得到一个分割错误(有时你甚至没有得到),而在爪哇,你会得到一个很好的异常,有堆栈跟踪。我一直喜欢这个。在

<>在C++中,你可以有原始类型的集合,而java没有。你必须使用外部库来获取它们。在

如果您有实时性需求,Java垃圾收集器可能会很麻烦,因为收集20GB的堆需要几分钟的时间,即使在具有24核的计算机上也是如此。但是,如果在运行时不创建太多的临时对象,那也可以。只是你的程序可以让垃圾回收在你意想不到的时候暂停。在

相关问题 更多 >