写点什么

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

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

关注

评论

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

2023年度技术卓越奖名单揭晓,天翼云TeleDB数据库荣誉上榜

编程猫

大厂面试题集合之阿里一面[1]

派大星

Java 面试题

拆解低代码平台核心功能:八大关键点解析

天津汇柏科技有限公司

低代码

Java第一个程序——Hello,World!

小魏写代码

软件测试/测试开发|一文详解Linux grep命令

霍格沃兹测试开发学社

软件测试/测试开发|测试用例设计方法——边界值

霍格沃兹测试开发学社

软件测试/测试开发|Python selenium CSS定位方法详解

霍格沃兹测试开发学社

打造高效用户旅程:埋点分析系统的实操指南

ClkLog

开源 埋点分析系统

强大的数据库管理:Valentina Studio Pro终端激活版最新

胖墩儿不胖y

Mac软件 数据库软件 Mac管理数据库

强烈推荐的前端学习资源,先收藏!

伤感汤姆布利柏

前端 工具

营销科学AIA:汽车企业坚定长期主义的秘密武器

新消费日报

AI Native工程化:百度App AI互动技术实践

百度Geek说

人工智能 大数据 12 月 PK 榜 Prompt

人工智能可以战胜人类智慧大脑么?

天津汇柏科技有限公司

人工智能

HarmonyOS应用事件打点开发指导

HarmonyOS开发者

HarmonyOS

同事突然问我:异步网络请求编码的方法

华为云开发者联盟

开发 华为云 华为云开发者联盟

终端闲思录(2)- 终端的源流嬗变

蓬蒿

终端 终端仿真

电池最大充电限制软件分享:AlDente Pro 激活中文最新版

胖墩儿不胖y

Mac软件 电池管理工具 电池充电管理

一键在线获取APP公钥、包名、签名及备案信息方法介绍

Geek_66e2f3

数据库编程大赛:一条SQL计算扑克牌24点

NineData

数据库 sql SQL开发 NineData 编程大赛

高级数据库数据安全保障方法就是使用靠谱的工具!

行云管家

数据库 数字化 数据安全 数据安全运维

一套分布式IM即时通讯系统的技术选型和架构设计

JackJiang

网络编程 即时通讯 IM

深度解析英特尔,以全方位产品技术创新,助大语言模型应用落地

E科讯

聚焦“工程师文化”,TDengine 创始人陶建辉在 TOP100Summit 上发表演讲

TDengine

tdengine 时序数据库

深度解析阿里巴巴API,关键字搜索和商品详情接口

tbapi

阿里巴巴API接口 阿里巴巴商品列表数据接口 阿里巴巴商品详情接口 阿里巴巴数据采集 阿里巴巴商品数据API

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