写点什么

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

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

关注

评论

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

让区块链技术在经济社会发展中发挥更大作用

CECBC

95%Java开发者已收藏的十大开源库,手把手教你写Java项目文档

Java 程序员 后端

Alibaba高并发业务实战文档,java自学百度网盘,Java架构师知识体系

Java 程序员 后端

docker面试题汇总,尚学堂尚硅谷java,已拿offer入职

Java 程序员 后端

阿里云容器服务多项重磅发布:高效智能、安全无界的新一代平台

阿里巴巴云原生

阿里云 容器 云原生 云栖大会

996页阿里Java面试真题解析火爆全网,Java工程师笔试题目

Java 程序员 后端

BTAJ大厂最新面试题汇集,中级Java开发人员要掌握的技术

Java 程序员 后端

Javaweb框架面试题,尚学堂java全套资料百度云,附高频面试题合集

Java 程序员 后端

Javaweb面试问题,java教程马士兵全集,设计思想解读开源框架

Java 程序员 后端

Java中级笔试题百度文库,java架构师直通车百度云,使用指南

Java 程序员 后端

60分钟快速掌握RabbitMQ,Java常用数据结构面试题

Java 程序员 后端

80后程序员月薪30K+感慨中年危机,Java开发面试准备

Java 程序员 后端

985研究生入职电网6个月,牛客网面经下载,血与泪的总结

Java 程序员 后端

flutter中文网,达内java教程视频,HTTP规范中的那些容易掉进去的坑

Java 程序员 后端

GitHub标星8k!黑马springboot笔记,阿里Java校招面试题

Java 程序员 后端

997页字节跳动Java面试真题解析火爆全网,腾讯T3大佬亲自教你

Java 程序员 后端

Dubbo高频面试题+解析,宅家36天咸鱼翻身入职腾讯

Java 程序员 后端

ELK性能优化实战总结,黑马java笔记与作业,Java面试基础知识点

Java 程序员 后端

hash、set、zset的底层数据结构原理,字节Java面试必问

Java 程序员 后端

HTTPS面试常问全解析,黑马学习java,Java中高级工程师面试题及答案

Java 程序员 后端

Java400道面试题通关宝典助你进大厂,Java后端工程师需要掌握的知识

Java 程序员 后端

74道高级Java面试合集:nginx入门到精百度云,Java校招笔试面试题目

Java 程序员 后端

BIO和NIO有啥区别,Redis灵魂14问

Java 程序员 后端

BIO和NIO有啥区别,绝对干货分享

Java 程序员 后端

在线手机号码VCF批量导入工具

入门小站

工具

60分钟快速掌握RabbitMQ,Java基础全套视频教程

Java 程序员 后端

Java-SSM框架相关面试题整理,2021Java面试题知识点总结

Java 程序员 后端

7天拿到阿里Java岗位offer,2021腾讯Java面试题精选

Java 程序员 后端

分布式存储和区块链结合能碰撞出怎样的火花?

CECBC

Github爆火的《高并发秒杀顶级教程》,2021最新Java框架体系架构面试题

Java 程序员 后端

Github爆火的《高并发秒杀顶级教程》,尚学堂java资料,Java基础面试题

Java 程序员 后端

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