阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

使用 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:041757
用户头像

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

关注

评论

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

Prometheus2.25新特性讲解

远鹏

Prometheus cncf openmetrics

手摸手教你阅读和调试大型开源项目 ZooKeeper

HelloGitHub

Java zookeeper 源码分析 ZooKeeper原理

空中交警:借你一双“慧眼”,让你看透这飞机的“黑色十分钟”

华为云开发者联盟

modelarts yolo 华为云ModelArts 模型开发 华为开发者大会2021

区块链电子合同--助推合同数字化管理

13530558032

使用 lxrunoffline 管理运行wsl

花费一月时间吐血整理程序员必读书单,建议收藏

Silently9527

程序员

马特量化交易机器人,炒币24小时不停歇

飞亚科技

区块链农产品溯源平台,为农产品质量安全护航

13828808769

区块链 区块链+

年薪百万是社会认同,更是自身价值体现

博文视点Broadview

善盾SD币是什么?

飞亚科技

Golang 字符串分组

一代咩神

Go 语言

架构实战营 模块1 课后作业

༺NPE༻

模块一作业

chenmin

Rust从0到1-结构体-一个例子

rust struct

区块链产业园区服务平台开发,搭建区块链园区运营平台

13828808769

区块链+ #区块链#

架构实战营模块一作业

陈俊

架构实战营

架构实战营作业:模块一

心晴雨亦晴(~o~)

LeetCode题解:剑指 Offer 49. 丑数,二叉堆,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

区块链农产品质量安全溯源,保证农产品品质

13530558032

模块一:课后作业

iHai

架构实战营

Spark数据倾斜方案实战(二)

小舰

4月日更

Spring IOC 特性有哪些,不会读不懂源码!

小傅哥

Java spring 小傅哥 控制反转IOC

python 调用 cmd 而不显示黑框的方法

一代咩神

Python cmd

3w 字长文爆肝 Java 基础面试题!太顶了!!!

cxuan

Java 面试 后端

初识Nginx(一)

书旅

nginx

手把手教你写一个spring IOC容器

华为云开发者联盟

spring 容器 ioc spring框架

Linux cat 命令

一个大红包

4月日更

架构实战营 模块1作业

唐江

架构实战营

旋转木马案例

赫鲁小夫

4月日更

盘点 15 个好用的 API 接口管理神器

Java小咖秀

工具 工具分享

智慧平安社区建设,创建“三零平安社区”

13530558032

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