在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

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

关注

评论

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

模块化控制协议(MCP)在网络中增强智能体执行效率的研究

申公豹

MCP

这几个 Vibe Coding 经验,真的建议学!

量贩潮汐·WholesaleTide

经验分享

对话 AI 陪伴新宠 Tolan 创始人:拒绝「恋爱脑」,「非人」陪伴更受欢迎?丨 Voice Agent 学习笔记

RTE开发者社区

Higress MCP 服务管理,助力构建私有 MCP 市场

阿里巴巴云原生

阿里云 云原生 Higress

使用自然语言体验对话式MySQL数据库运维

袋鼠云数栈

数据库 运维 MySQL 数据库 大数据运维 数据库 大数据

豆蔻妇科大模型实现重大突破!精标数据 SFT 驱动准确率从 77.1% 升至 90.2%

隽阜

官宣!MinerU 正式接入和鲸 ModelWhale,加速您的科研进程!

ModelWhale

科研 minerU modelwhale

订单初版—支付和履约链路中的技术问题说明文档

量贩潮汐·WholesaleTide

架构 软件开发

OpenAI 即将推出 AI 浏览器;Perplexity 发布 AI 浏览器 Comet,语音操控网页丨日报

RTE开发者社区

数字时代,如何保护你的内容安全

腾讯云音视频

腾讯云 内容安全 媒体处理 DRM 水印

金属材料表面六种缺陷类型数据集 | 适用于YOLO等视觉检测模型(1800张图片已划分、已标注)

申公豹

YOLO数据集

e签宝连续六年入选胡润全球独角兽榜单,是中国电子签名行业唯一品牌

科技汇

基于YOLOv8的FPS射击类游戏人物识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!

申公豹

yolov8

基于ubuntu系统部署FateLLM1.3.0

天翼云开发者社区

云计算

数据 + 模型 驱动 AI Native 应用发展

阿里云大数据AI技术

人工智能 深度学习 数据处理 模型 大数据、

上海交大医学院张维拓老师赴同济医院做R语言训练营培训

ModelWhale

R 语言 同济医院 上海交通大学

直播预告 | 7月10日晚19:30,解锁AI原生数据力量!

MatrixOrigin

观测云产品更新 | 付费计划与账单、事件中心、基础设施等

观测云

产品迭代

焱融存储实力入围国家算力强基揭榜行动名单

焱融科技

人工智能 AI存储 焱融存储 算力基础设施

Excelize 荣获 2025 上海开源创新菁英奖

xuri

GitHub 微软 开源 Excel Excelize

技术研发引领前行,中烟创新荣获 “北京软件核心竞争力企业(技术研发型)” 称号

中烟创新

轻松解密WebDecode:从网页源码中挖掘隐藏的Base64 flag

qife122

CTF挑战 Base64解码

USB‑C 式的工具联接:MCP 的模块化及通用标准探讨

申公豹

MCP

MatrixOne Intelligence v3.3 正式发布:结构化、自动化、可视化三重进化

MatrixOrigin

MySQL 09 普通索引和唯一索引,应该怎么选择?

不在线第一只蜗牛

MySQL

数智制造的下一个范式?低代码与云原生、AI的融合战略展望

电子尖叫食人鱼

低代码

征程 6M 部署 Omnidet 感知模型

地平线开发者

自动驾驶 算法工具链 地平线征程6

官宣 | Fluss 正式加入 Apache 孵化器

Apache Flink

大数据 flink Fluss Apache 基金会

时序数据库 Apache IoTDB V2.0.4 发布|新增用户自定义表函数及多种内置表函数功能

Apache IoTDB

iPaaS+MCP,赋能企业数智化转型,别让数据和AI“躺平”!

谷云科技RestCloud

数据处理 数据集成 集成平台 ipaas MCP

漏洞赏金猎人必备的10款浏览器扩展工具

qife122

网络安全 浏览器扩展

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