写点什么

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

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

关注

评论

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

纳斯达克上市公司Pinnacle Food宣布新战略计划,旨在扩展其智慧农业创新平台

财见

零刻发起NAS用户共创活动,征集创新理念共塑未来产品形态

财见

TÜV莱茵为开立威尔逊多款消化内科手术器械颁发MDR公告机构证书

财见

宝尊将于2025年11月25日发布2025年三季度未经审计财务业绩

财见

转转客服IM聊天系统背后的技术挑战和实践分享

JackJiang

websocket 即时通讯 im开发 Web端即时通讯

Weblate审计日志IP泄露漏洞分析

qife122

网络安全 Weblate

Rathbones呼吁紧急增加区域投资以推动英国增长

财见

分钟级定位 IO 瓶颈:多租户云环境下的智能诊断

阿里云基础软件

阿里云 操作系统控制台 IO异常

进入职场第四课—产出

老李说技术

职场 职场发展

DotNetGuide突破了 9.5K + Star,一份全面的C#/.NET/.NET Core学习、工作、面试指南知识库!

追逐时光者

C# .net 微软

工业设计 自控设计经验总结(18)

万里无云万里天

设计师 工业 工厂运维

沙特阿拉伯将于11月主办第11届最不发达国家问题部长级会议

财见

软硬协同!RISC-V 生态分论坛精彩议程公布 | 2025 龙蜥大会

OpenAnolis小助手

龙蜥操作系统大会

别再把DevOps当工具!90%企业都在做假DevOps,文化才是根本,很多团队都搞反了!

六边形架构

DevOps CI/CD 团队文化 自动化运维

RedisTemplate和StringRedisTemplate的区别及个人见解

刘大猫

人工智能 云计算 算法 物联网 大模型

Meta AI 推出全语种语音识别系统,支持 1600+语言;谢赛宁、李飞飞、LeCun 联手发布「空间超感知」AI 框架丨日报

声网

嘉为蓝鲸CCI持续集成平台流水线互斥:自定义排队规则,百级并发也能有序执行

嘉为蓝鲸

研发效能 持续集成 CI/CD 流水线 持续集成平台

RPA这么多,到底该选谁?2026 企业自动化选型全攻略

Techinsight

从同步耦合到异步解耦:消息中间件如何重塑系统间的通信范式?

poemyang

消息中间件 高并发架构

工业管理 项目管理经验总结(30)

万里无云万里天

项目管理 工业 工厂运维

企业智能体中台落地指南:蓝凌 LanBots.AI 赋能新质生产力实践

极客天地

ONES 重磅升级|全新内核,深度可配置,适配复杂业务流

万事ONES

项目管理 研发管理 ONES 全新升级

干货推荐:看阿里云操作系统控制台如何一招擒拿网络丢包

OpenAnolis小助手

技术干货 阿里云操作系统控制台

从信任到证明:为何说 Succinct ($PROVE) 是万亿资产上链的公证书?

股市老人

第五届 RTE 年度 Demo Day 三强公布!看到对话式 AI 的 N 种未来

声网

自动化运维规划全指南:OASR模型+三年实施路线,从蓝图到落地

嘉为蓝鲸

运维自动化 智能运维 自动化运维 自动化运维系统 国产自动化运维厂商

Inspira在PEAK Matrix®评估中获评领导者

财见

收藏!2025 龙蜥操作系统大会闯关攻略来啦

OpenAnolis小助手

龙蜥操作系统大会

干货推荐:OOM 杀进程 or 应用卡顿?该如何抉择

OpenAnolis小助手

操作系统 阿里云操作系统控制台

深度解析YRCache多机共享丨打破跨节点KVCache缓存壁垒 尽释大规模GPU推理集群计算潜能

焱融科技

AI推理 KVCache 大规模GPU集群

干货推荐:分钟级定位 IO 瓶颈,多租户云环境下的智能诊断

OpenAnolis小助手

阿里云操作系统控制台

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