BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

使用F#与QuantLib开发金融应用

| 作者 Anand Narayanaswamy 关注 0 他的粉丝 ,译者 李彬 关注 1 他的粉丝 发布于 2013年5月7日. 估计阅读时间: 4 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

QuantLib是一个适用于F#语言的开源类库,用于计量金融的建模、交易和风险管理。为调用QuantLib,开发者需要使用NQuantLib.dll和NQuantLibc.dll,前者是一个.NET组件,而后者是一个本地组件。

如果以上类库文件不可用,那么开发者可以从.lib文件、C++源代码和头文件创建它们;而要获取.lib文件和头文件,开发者需要安装Boost。开发者也可以从Boost或BoostPro的官方代码库中的源代码来构建这些类库。

下一步是安装QuantLib,并按照官方文档提供的指南使用微软Visual C++构建.lib和头文件。安装后,下载QuantLib-SWIG压缩文件和SWIG(注:SWIG是帮助C/C++编写的软件与其它高级编程语言嵌入联接的工具),并运行位于QuantLib-SWIG\CSharp路径下的swig.cmd文件,生成C++封装文件。接下来开发者可以使用Visual Studio构建NQuantLibc.dll和NQuantLib.dll。

如果开发者尝试使用Visual C++ 2012构建这些类库,则需按如下所示修正auto_link.hpp

打开auto_link.hpp并找到下面几行代码:

#else

# error "unknown Microsoft compiler"

在这两行代码前面插入以下内容:

#elif (_MSC_VER == 1700)

# define QL_LIB_TOOLSET "vc110"

右键点击QuantLib项目并选择“属性”选项,在 “配置属性|通用”中,根据当前在构建QuantLib的版本是发布版本或者调试版本,将“目标名称”改为QuantLib-vc110-mt或QuantLib-vc110-mt-gd。

上述变通方案由一位昵称为pmcs的F#开发者发表在微软官方博客中,该方案已经通过了产品团队的审核。

完成以上步骤后,将NQuantLib.dll和NQuantLibc.dll放在F#脚本路径下面叫做“引用”的目录中。如果使用的是一个项目,那么将NQuantLibc.dll作为一个文件添加到该项目,并将“复制到输出”设置为“如果较新则复制”。

为了在Visual Studio中使用F#和QuantLib工作,开发者需要将“工具|选项|F#工具|F# 交互|64-bit”关闭。开发者也可以使用MonoDevelop、Xamarin Studio或任何自己喜欢的文本编辑器。

#I "references"
#r "NQuantLib.dll"
let date = QuantLib.Date.todaysDate()
printfn "today is: %s" (date.ISO())

以上代码段在F#交互式控制台中输出日期。我们可以看到,这里引用了NQuantLib.dll并调用了todaysDate()函数。

在大型项目中,开发者还可以用关键字“use”替代“let”,以便恰当地清理对象。

use date = QuantLib.Date.todaysDate()

Don Syme与Alexandre Radicchi共同领导的F#产品团队,在Mono中检查了编译类库文件所需的步骤,同时还涉及了少量额外的例子,例如计算条式组合的欧式看涨期权的价格,或是日期和日程。

如果开发者有兴趣对QuantLib进行细致的探索,Don推荐阅读《Implementing QuantLib》这本书。该书的作者免费提供了全部章节的手稿。

查看英文原文Develop Financial Applications with F# and QuantLib


感谢康锦龙对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT