【交易技术前沿】FPGA加速计算应用研究----美式期权价格计算的FPGA实现

论坛 期权论坛 期权     
上交所技术服务   2019-9-7 07:47   3217   0

本文选自《交易技术前沿》总第三十三期文章(2018年12月)




刘超凡、王卓 / 西安子午线智能技术有限公司
邹经纬、马辉 / 国泰君安股份有限公司
钟浪辉、陈敏 / 上交所技术有限责任公司



  随着资本市场对外开放的步伐加快,国内的证券期货业核心机构、会员单位等不同的市场参与人都在以不同方式推动金融科技创新,持续助力金融科技在交易、监管等方面的进步。上海证券交易所(简称“上交所”)也一直在深入跟踪、引领交易技术、监管科技的发展趋势,积极将大数据、人工智能新技术运用到自律监管和交易服务中去,进一步提升监管的效率和交易的效率。
  现场可编程门阵列(简称“FPGA”)技术是近年来证券期货市场发展得比较快、研究得比较热的技术之一。与证券期货业许多核心机构、会员单位一样,上交所技术公司也积极布局研究FPGA应用研究,我们部门在去年研究《FAST行情硬解码》的基础上,今年又与国泰君安合作研究《FPGA实现股票期权相关指标》,希望利用FPGA的加速计算特性实现快速的期权定价,探索一条利用FPGA加速计算任意金融指标的路径。
  期权又称选择权,是证券期货市场发展到一定阶段出现的衍生性金融工具,包括个股期权、股指期权、ETF期权、外汇期权、商品期权、利率期权等。目前国内可交易的有上证vix.shtml" target="_blank" class="relatedlink">50ETF期权、豆粕、白糖、玉米、棉花、铜等商品期权,每种期权都有一定的做市商提供流动性。期权交易中的各个市场参与人都对期权理论价格的确定有着强烈的需求,高精度、低延时的定价也是市场参与人核心竞争力之一。本文描述了CRR定价模型的FPGA工程实践,希望借助这一工程描述FPGA应用的一般过程,特别是反应出FPGA加速计算的特质。






   
        一、美式期权的CRR定价模型
   



  美式期权是指可以在成交后有效期内任何一天被执行的期权。美式期权允许期权持有者在到期日或到期日前执行购买(如果是看涨期权)或出售(如果是看跌期权)标的资产的权利。
  某甲公司突然宣布发放较预期金额高的现金股利时,持有该公司美式期权的人可以立即要求履约,将选择权转换为股票,领取该笔现金股利;而持有该公司欧式期权的人就只能干瞪眼,无法提前履约换股、领取现金股利了。因此,绝大部分市场的股票期权采用美式期权。
  美式期权作为最基础的金融衍生产品之一,为其定价一直是金融工程的重要研究领域。和欧式期权不一样,美式期权价格没有明确的表达式,目前只能通过数值方式进行求解。网络分析法是一种数值求解的办法,主要思想是在风险中性前提下,将标的资产符合的随机过程进行离散化处理,再动态规划对其进行求解,获得标的资产衍生品的价格。网络分析法具体有可以分为二叉树法、三叉树法以及更多的分支模型。
  Cox、 Ross和Rubinstein三人提出了CRR模型,该模型将二叉树与有限差分方法运用于期权定价中,在定价时具有收敛的特性。期权定价基本思想是假设投资者对待风险的态度中性,所有证券预期收益率是无风险利率。风险中性的投资者将期望值用无风险利率折现获得现金流量的现值。
  该方法需要计算价格上下波动的概率和数量,主要变量有:股息收益率q,贴现率r,远期利率b=r-q,标的资产连续复利收益率的标准差σ,到期时间tcal,总分期数N。








  为了简化数学描述,下面通过简单的例子说明CRR模型的运算过程。
  例如:假设股票价格初始为50元,期权到期执行价格52.08元,无风险利率4%,股票波动率(标准差)0.4068,到期6个月,划分期数6期。
首先计算u=1.1246,d=0.8892。


按照股票价格二叉树和执行价格,构建期权价值二叉树并计算期权价值。
首先计算p=0.4848,1-p=0.5152。
其次,执行价格大于股票价格时,期权价值为0。
最后,最右边列的期权价值是股票价格减去执行价格,其他列从右到左分别通过公式计算:期权价值=(上行概率*上行时到期日价值+下行概率*下行时到期日价值)/(1+r),例如38.04=(0.4848*49.07+0.5152*27.9)/(1+4%/12)。








   
        二、实现期权定价的困难
   



  由于美式期权没有明确表达式,只能通过数值方式求解,但是以CRR模型为代表的各类方法都存在收敛速度慢的特点,一旦时间节点数增多,树的分枝数将会呈现出指数爆炸状态。
  大多市场的期权行情刷新间隔是500毫秒甚至250毫秒(统一简称1个TICK),这就意味着市场参与者必须在1个TICK内完成所有股票期权的理论定价,并据此判断套利机会与套利成本,对于明显不合理的报价进行买卖直到市场报价回归合理。理论定价越快,留给投资者实施套利的时间就越多,投资回报就越高。对期权做市商而言,理论定价越快,向市场提供的报价就越合理、公正,就越能激发市场活力、提高市场效率。
  显然,这些业务需求对技术实现提出了苛刻的要求。如果利用通用CPU计算价格,计算效果差,不能兼顾高精度与低延时。本文利用FPGA实现CRR模型,加速了期权定价加速计算,有效地缩短了美式期权的定价时间。






   
        三、实现CRR模型的FPGA应用工程
   








图1



  我们的FPGA应用运行在Xilinx KCU1500板卡(图1)上实现。KCU1500主要器件是Xilinx中端系列器件Kintex Ultrascale中最大的一颗芯片KU115,它有丰富的LUT查找表与FF触发器资源,DSP单元高达5520个,适合大吞吐量的算法设计,性价比较高。
  主要接口如上图所示,需要特别指出的是我们使用10G网口对外服务,通过它接收网络上的行情数据并返回定价结果,板卡所在的服务器PCIe只做供电用,所有运算完全在FPGA上独立完成,服务器其他部件可以处于休眠状态,实测发现FPGA交易期间功耗40W左右。





3.1、设计说明:



  实际工作环境中,FPGA作为单独的计算加速单元使用,配合Server端完成指定的计算。
  具体工作流程为:
  Server从网口下发计算参数→FPGA网口接收参数→FPGA分配计算任务给空闲的Channel→FPGA内部Channel并行计算→FPGA从网口发送计算结果→Server做后处理
  整个设计除了接口部分,算法上重点是单个Channel内部的设计





3.2、设计要点:



1)充分利用FPGA设计的Pipeline特点,在Channel内将循环计算中的数据在时间上做好排布,使得计算单元在时间上的占用率尽可能高
2)将一次期权计算中涉及的运算尽可能并行排布,利用FPGA的并行特点,减小单独Channel的算法总时延,会增加一定资源
3)最终整个设计的瓶颈在于单个Channel的资源占用与芯片能放下的Channel数以及主时钟的频率三者的均衡,达到尽可能高的性能





3.3、FPGA 开发流程





3.3.1、软件说明


  Xilinx公司的开发工具Vivado(2017.4版本),可以完成从综合,布局,布线,BIT文件生成,加载到在线调试的全部功能,而且有IP库可以免费或付费使用Xilinx的多种IP,加速设计。





3.3.2、工程建立


  启动Vivado后,选择Quick Start中的Create Project去新建工程,在界面中输入工程名称和路径,如下图。





图2



  然后选择建立RTL Project,此时可以勾选Do not specify source at this time,先不添加设计文件。
  接着按照界面提示选择FPGA器件,由于我们使用Xilinx官方的开发板,直接选择Boards后输入“KCU1500”,会自动匹配出对应的开发板。





3.3.3、设计文件导入


  在RTL设计做完功能仿真验证后,运行工程实现前必须将设计文件导入,包含Design Sources和Constraints两部分。
  Design Sources通常包含RTL设计代码如Verilog HDL/VHDL文件以及网表文件如EDF文件,还有调用的Xilinx的IP文件接口XCI文件以及其它Vivado工程中综合得到的DCP(Design Check Point)文件。需要在Settings中指定整个设计的Top module name以确定Top文件,根据该文件中的例化调用关系来构建出整个设计的Hierarchy。
  Constraints只有XDC一种文件格式。XDC是在业界标准SDC(Synopsys Design Constraints)基础上,增加Xilinx定制的部分规则而形成的一套设计约束体系,通常包含物理位置约束与时序约束。物理位置约束需要定义Top文件对外的I/O在FPGA芯片管脚的位置对应以及电平/驱动强度等物理信息,以及限定内部设计中一些Cell或Primitive的位置等信息。时序约束通常要约束设计中所有的时钟频率/相位等信息,进出FPGA管脚的时钟与数据相位关系,以及各时钟时间的例外约束等。
  导入Design Sources和Constraints后的工程如下图所示。





图3





3.3.4、工程实现


  Vivado工程实现包含Synthesis与Implementation。
  Synthesis是将RTL代码与所有被调用的IP等综合成一体,相当于生成FPGA芯片底层电路Primitive的所有配置与连接关系,配合Constraints信息,就形成整个设计的Netlist。
  Implementation是将Netlist适配到FPGA芯片的流程,主要步骤是Place和Route,通常称前者为布局,后者为布线。Place选择将Netlist中的Primitive放置在FPGA中合适的位置,而Route完成Primitive间连线的实现。
  Implementation完成后可以点击按钮Generate Bitstream生成最终上板加载的Bit文件,但必须检查Implementation的Timing结果是否正常,通常主要查看整个设计所有时许路径建立保持时间的完成情况,在Project Summary中可以查看。
  下图是Setup和Hold的时序结果





图4



  注意:一个完成实现后可以上板测试的版本的TWS和THS必须为0,此时WNS和WHS一定是大于等于0的,这两个值越大意味着时序余量越好。
  如果时序不满足或者实现报错,需要返回到设计步骤重新调整设计与约束。



  在Project Summary中同时可以查看到实现后FPGA芯片的资源占用,如下图所示。





图5



  本设计占用了49%的LUT,49%的FF,24%的BRAM以及64%的DSP资源。






   
        四、FPGA加速计算的测试结果与加速计算展望
   





4.1、设计性能:



  因业务精度需要,一个二叉树从根开始合计需要分叉200次(分叉次数因人而异,也许100次、50次分叉就够用。理论上分叉越大越接近全微分方程,精度越高),详细过程见下图:





图6



  完成这200批次双精度浮点的循环计算即可满足现有期权业务的定价精度需求,实现一次理论价格计算(Operation,简称op)。由于临近交割等情况下时单精度(float)计算精确度很差,所以业务上必须双精度(double)计算,代价是FPGA资源消耗多、延迟拉长,代价大约是单精度的3倍。通过逻辑综合与实测确定FPGA应用一次理论价格计算耗时(Calculation Latency)大约14000时钟周期(cycles)。
  不考虑网络传输及Server端效率以及其它开销,FPGA板卡的性能可以用以下公式表达:Operation per second=Fmax * Channel / Calculation Latency(number of cycles)
  KCU1500主频308MHZ,拥有80个通道,理论性能接近308M*80/14000=1.76M op/s,即每秒176万次美式期权定价。如果考虑线路开销与软件后处理延时,实际效率为45%左右,即实际定价能力大约为800k op/s。
  实盘以及日常测试时因业务需要,KU115的80个通道只分配60个做200批次双精度浮点循环计算,实盘的实际定价能力大约为616k op/s。





4.2、测试用例与测试结果:



  每个strike对应1个call(认购期权)1个put(认沽期权),以及各自的greeks(常用的5个期权希腊字符),实际每个strike需要12颗二叉树的计算量,即每个strike需要12次op。
  测试中假定有1000个strike(对应一个期权行权价格),这1000个strike单次定价计算量是12000次op。迭代1000次运算就是12M次op(计算平均延时需要在总耗时基础上除以1000)。




  Model Time Steps(批次) Strikes(对应12次op) Iter Size(迭代次数)


  CRR American 200 1000(*12) 1000




  Card Type Mean(ms) GPU Usage Avg


  GPU(Tesla M40) 43.41 96%


  FPGA(Xilinx KU115) 19.45 N/A



  一个TICK内FPGA应用平均耗时19.45毫秒处理整幅行情快照(1000个strike有行权价的期权)。1000个strike需要二叉树计算12K op,它们被平均分配在60个Channel内并行计算,每个Channel串行200个op耗时19.45毫秒。可以推算每次op耗时19.45ms/200=97微秒。97微秒中包含网络延时、预处理任务时间、FPGA净计算时间等因素,其中单次op的FPGA净计算时间需要14000时钟周期,根据主频308M可以推算所以单次op的FPGA净计算时间是14000/308M=45微秒,FPGA净计算时间占单次op耗时的比率是45/97=46.4%。未来还可以把预处理任务交由FPGA完成,进一步拉长FPGA净计算时间、缩短预处理时间,从而提升FPGA净计算时间的占比,缩短单次op的时间。
  考虑到FPGA板卡与GPU的价格与性能的可比性,GPU的M40型号与KU115 FPGA 接近,但是M40的美式期权定价耗时比KU115大100%,最重要的是M40功耗为250W(KU115仅40W),各大交易所数据中心在用电约束下明确限制GPU的实盘运行。使用CPU运行CRR模型(网络上有许多对应的c++代码),实测发现1个TICK内无法完成运算,实盘价值小。





4.3、FPGA应用展望



  本文通过一个FPAG工程实现了美式期权定价CRR模型,它在期权行情刷新间隔内完成了符合业务精度的理论价格计算。未来FPGA应用开发在证券期货业大有可为,结合赛灵思、华为、Intel等主流FPGA厂商的最新技术我们发现FPGA发展势头很好:
  1、支持传统软件编程模式,编译器自动生成的设计甚至比手动编码的RTL设计方案的性能还高。支持OpenCL/HLS等类C语言开发FPGA应用。
  2、Intel等厂商提供专业的OpenCL版欧洲金融库,效率达到RTL80%以上。
  3、专业IP厂商提供可靠组播、低延时TCP、压缩、加密、分布式存储等IP,这些IP有硬核也有软核模式,通过集成化的手段提供给开发人员满足不同的应用场景。
  4、华为等厂商还提供了FPGA与本机用户进程之间低延时传递数据的编程框架,利用PCIe、共享内存、用户态驱动等技术,从最终用户主机进程的角度进一步降低延时,屏蔽底层技术细节,最终用户只需按照各自金融业务编程即可。





免责声明

本公众号内容仅供参考。对任何因直接或间接使用本公众号内容而造成的损失,包括但不限于因有关内容不准确、不完整而导致的损失,本公众号不承担任何法律责任。如有问题请反馈至tech_support@sse.com.cn。


--------------------------
上海证券交易所为证券公司、基金管理公司等市场参与者及相关行业机构提供交易技术支持与服务,包括日常交易技术支持、技术交流研讨、市场调查反馈、证券信息技术知识库、测试等服务。




点击"阅读全文"了解详情

                                 
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:24
帖子:2
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP