1

我决定建立一个数据库来跟踪我在邮件中收到的信用卡优惠,而一个令人困惑的因素是如何表示这些优惠。有了最低财务费用、浮动利率和最低浮动利率,它比“10.99%”要复杂一些。如果我有机会比较或趋势这些报价,我决定我需要构建一种语言来表示这些东西。

问题是,我如何表示这一点?公式过于复杂,无法通过创建字段来建模,所以我将把公式存储在数据库中,尽其所能。是的,这意味着模糊数据和执行之间的界限,但由于这是一个个人项目,我并不那么担心。

  1. 嵌入式蟒蛇。将公式表示为 Python,只需绑定相关变量并调用公式。
  2. 使用特定领域的语言。我不可能是第一个想到用这种方式表达事物的人,事实上我知道我不是。是否有任何免费的公共语言可以代表这一点?

任何人都可以就哪种方法更好提供建议吗?

4

3 回答 3

3

这听起来有点类似于 Simon Peyton Jones 等人的工作。关于使用组合库表示金融合约,包括Haskell 中的实现,包括在它们上运行评估函数以计算给定模型的合约价值的能力。我对金融的了解还不够,无法告诉您这是否正是您正在寻找的东西,但听起来它在正确的范围内。

至于您的具体问题,我通常更喜欢嵌入式领域特定语言(即嵌入在宿主语言中的类似 DSL 的结构,例如 Ruby 及其面向对象的元编程、Scheme 及其宏或 Haskell 组合库),因为它提供您可以免费使用宿主语言的全部功能;通常在编写具有自己的语法、执行模型、运行时等的领域特定语言时,如果您有可用的现有语言,您会遇到一些很容易做到的事情,但是因为您没有,所以很难处理。 t 在你的 DSL 中实现了一些东西。

于 2009-11-18T05:25:16.847 回答
2

如果您觉得必须将公式存储在数据库中,我会投票支持嵌入式 Python。

DSL 似乎有点矫枉过正。你已经有了一种非常好的语言来评估公式。

于 2009-11-18T05:09:54.740 回答
1

另一种选择是使用R。它有一个很好的公式表示;您将其存储为字符串,然后使用 eval() 函数对其进行评估。还有大量的金融库(参见CRAN 金融视图),包括Rmetrics

R 还可以与其他语言很好地交互,包括 python、java 和 C++。您提到了 Python:如果您想编写包装脚本,可以使用 RPy。

于 2009-11-18T05:31:50.400 回答