QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

  • 2013-05-06
  • 本文字数:1260 字

    阅读完需:约 4 分钟

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 )关注我们,并与我们的编辑和其他读者朋友交流。

2013-05-06 06:042024
用户头像

发布了 256 篇内容, 共 77.2 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

聚势启新,KaiwuDB 生态联盟沙龙首站落地长春

KaiwuDB

流程图怎么画?3个好用的在线流程图软件推荐,绘图再也没烦恼!

彭宏豪95

可视化 流程图 在线白板 画图工具 流程图绘制

影响HTTP代理IP的稳定性的相关因素

Geek_bf375d

IP 代理IP 免费代理ip 跨境电商 #HTTP

如何在 Python 中执行 MySQL 结果限制和分页查询

小万哥

Python 程序员 软件 后端 开发

CnosDB 在最近新发布的 2.4.0 版本中增加对时空函数的支持。

CnosDB

开源 时序数据库 CnosDB

代理服务IP的选择上有什么技巧

Geek_bf375d

IP HTTP 代理IP 免费代理ip 跨境电商

万物智联的数字底座上,LightBeeOS筑起金融安全的春巢

脑极体

AI 金融

都快2024年了还在用传统服务器?试试华为云这款中小企业“上云”利器吧!

轶天下事

同济 MBA × 和鲸:聚焦商业数据思维培养,赋能工管人才转型升级

ModelWhale

人才培养 企业数字化转型 数智化 MBA 同济大学

2023年前端流行的新技术

树上有只程序猿

前端 前端技术

使用Amazon WAF有效保护托管Web应用

Hanson

Databend 开源周报第 119 期

Databend

爬虫代理ip和代理ip池确保用户隐私和数据安全的问题

Geek_bf375d

代理IP 代理IP设置 跨境电商 IP 路由 #HTTP

还在烧钱买量?华为云这款轻量应用服务器让跨境电商生意不难做

轶天下事

深入理解 Django 信号机制

K8sCat

django signal

阿里云、腾讯云之后,华为云耀云服务器L实例凭实力成为“卷”死对手

轶天下事

未来之选:为什么向量数据库是您的数据管理利器

熬夜磕代码、

数据库

为什么要使用动态IP代理爬取

Geek_bf375d

IP HTTP 跨境电子商务 代理IP 跨境电商

投资机构Janus Capital Group为Rola-IP品牌融资700万美元

Geek_bf375d

IP 代理IP 免费代理ip 跨境电商 #HTTP

爬虫IP使用后遇到问题如何解决

Geek_bf375d

IP 跨境贸易 代理IP 免费代理ip #HTTP

Linux 源码包安装

芯动大师

正式开源!网易有道上线“易魔声”语音合成引擎

有道技术团队

人工智能 语音合成 TTS

在AI时代,提升程序员竞争力的关键策略

不在线第一只蜗牛

人工智能 编程 程序员 AI

公司让我开发一个管理系统,有了它,So easy!

互联网工科生

软件开发 低代码 快速开发 JNPF

快速拉取聚水潭单据的ETL工具

RestCloud

数据同步 ETL

保持http代理服务器的方法

Geek_bf375d

IP HTTP 跨境电子商务 跨境电商 #HTTP

使用F#与QuantLib开发金融应用_语言 & 开发_Anand Narayanaswamy_InfoQ精选文章