1 绪论
1.1 研究背景和意义
随着上世纪 80 年代金融市场及其相关理论的不断完善,金融工程理论初步形成较为完整的体系。现代金融进入了新的创新期,同时计算机技术得到了普及与发展,大量利用计算机技术并基于现代统计学与数学相关分析方法设计的模型而产生的金融衍生品涌入市场[1]。投资者希望使用这种数量化的投资方式,解决日历效应、小盘股效应等带来的市场失效问题,战胜以传统的市场有效理论为基础的投资行为获取市场的超额收益。相比投资行业其他的主流投资方法,如传统证券分析理论中的基本面分析与技术面分析方法,量化投资是一种将现有的相关投资方法和计算机理论技术相结合,基于统计学或数学方法设计的投资策略模型交由软件系统进行实践投资理念的新的证券分析方法[2]。作为主动的投资工具,量化投资虽然继承了定性投资方式对于市场基本面进行深度分析与研究的思路,但是较定性投资采取有限指标并依赖个人的直觉主观判断构建基金,其更为关注大数据量下证券市场的统计特征与普遍规律,因而具有如下突出的优势[3]:降低投资者的直觉与情绪等主观感性因素对于投资过程造成的影响,减少市场的非理性行为的情况下所做出的情绪化决策;提高了股票选择能力与效率,极大扩展了选择范围,节约人力成本;对于风险的控制具有天然的优势,使用组合投资方式消除非系统性风险,采用更为清晰严格约束的风险边界。现代意义的量化投资浪潮兴起于上世纪 70-80 年代,期权定价理论与统计套利策略被华尔街迅速接受,量化投资正式拉开序幕。在随后的十年标准金融理论及其他的相关理论促使量化投资基金得到了充分的繁荣发展,量化交易策略纷纷涌现,量化套利、高频交易等各种交易策略不断得到应用。千禧年之后,互联网泡沫破灭,投资银行纷纷成立自营部门,大量热钱进入对冲基金,同时发达国家的相关监管机构对于金融市场的监管较为宽松,各类金融衍生品的泛滥成为导致次贷危机的重要因素。
..........
1.2 国内外研究与应用现状
目前,经过几十年的兴盛与繁荣,欧美国家的金融衍生品市场背景下的量化投资仍然方兴未艾。据纽约市场研究公司 Tabb Group 发布的调查显示,2012年欧美证券市场大概有 30%资金进行量化交易,而将近有 70%的交易量的经由自动化交易达成,获益达到 80 亿美元[5]。量化投资的代表性公司有文艺复兴、KCG(骑士资本)、Getco、Citadel、AQR、Winton、Jane Street、SIG 等。在众多量化基金中,最具有代表性的由西蒙斯经营的大奖章基金,成立以来的年均回报率已经超越了传统投资方式的领头羊巴菲特。目前量化投资已经是美国比较成熟和广泛应用的主要策略大类之一。国外华尔街追逐人工智能的浪潮渐起,2012 年,资产规模高达 240 亿美元资产的 Two Sigma Investments 与 250 亿美元规模的 Renaissance Technologies 开始招聘工程师和编程人员来扩充人工智能团队。同时,高盛 1500 万美元风险投资 Kensho 金融数据服务商并开发出希望能够取代现有各大投行分析师的工作的软件“沃伦”[6]。相较海外已经得到充分发展的金融市场与投资环境,国内的金融市场发展历程较短,市场的有效性偏弱,发展潜力与空间巨大,适合使用量化投资策略挖掘超额收益[7],但是仍然存在着一些客观因素制约着量化投资市场的发展,A股采用了 T+1 的交易模式导致交易成本较大、缺乏有效的做空机制等。伴随金融市场的改革深入,相关创新的金融产品陆续出现,如 2010 年之后推出的沪深300 指数期货以及后续的期权,是对量化投资的重大利好[8]。
.........
2 相关理论与技术系统的开发需要
开发理论和技术的支持,量化选股回测平台开发过程所用到的主要理论与技术,下面将分别进行说明。
2.1 MATLAB
MATLAB 是 MATrix LABoratory 的缩写,起源于 Cleve Moler 教授向学生提供的接口程序用以适配 Linpack 与 Eispack,后来由组建的 MathWorks 公司接管并继续开发的科学计算与工程环境模拟等方面的软件,以矩阵作为运算的基础单位,将符号数学计算、数值分析、图形绘制、仿真等功能有机结合起来。经过多年的迭代,MATLAB 的大规模数据处理能力、计算性能、操作界面友好度、扩展能力都得到大幅度的提升,广泛应用于工程计算与数值分析、控制系统设计与仿真、信号处理、图像处理、金融建模设计与分析等学科领域。MATLAB 不仅可以用来创建用户友好的图形化的操作界面,而且具有高级程序设计语言的基本特征,因此更方便地可以在语言层次上与其它的程序设计语言(其中包含有:高级程序设计语言 C/C++与 Java,脚本语言 Python 以及古董级别的科学计算语言 FORTRAN 等)进行交互以适应多种系统的环境[11]。MATLAB 对于经济与金融领域的研究人员、量化分析师、对冲基金经理以及资产管理公司等人员提供了强大的工具箱:经济工具箱(EconometricsToolbox)、金融工具箱(Financial Toolbox)、金融衍生品工具箱(FinancialDerivatives Toolbox)、固定收益工具箱(Fixed Income Toolbox)、数据来源工具箱(Datafeed Toolbox)等工具箱,提供财务数据分析、投资组合最佳化、商品评价、风险管理、敏感度分析,以及经济模型建立与预测工具。更为具体来讲,金融工具箱提供了金融领域中相关分析与计算的支撑环境,进行投资组合最佳化、评估风险值、分析利率水平、权益型衍生性商品的评价.
.........
2.2 J.U.C 并发框架
进程模型建立在两种相互独立的前提之上,即资源的分组处理与执行。通过使用特定的方法,进程将程序运行所需的代码数据或者资源所占据的地址空间关联在一起;另一方面进程执行的过程中需要一个基本的单位充当程序计数器的角色,指明程序指令的执行顺序,需要堆栈来记录指令的执行历史。将资源处理与任务执行两个概念独立时,进程模型本身就暗含了线程的概念。随着在常见场景下的进程被创建或销毁时带来的资源与性能的开销、进程间通信的复杂性,进程间调度的切换情况等问题的暴露以及对于进程执行效率要求的提高,线程作为操作系统执行的基本单位的线程模型应运而生。线程也被称为轻量级的进程。在大多数现代操作系统中,都是将线程作为基本的调度单位。在正确的场景中,使用线程可以大大降低程序的编写难度以及后续的维护成本,同时又大幅度提升复杂系统的局部性能。这种优势表现在很多方面:可以充分发挥现代操作系统多处理器的多任务处理能力,提高处理器资源的利用率为瓶颈的系统吞吐率;对于待处理的现实问题通过拆分不同的类型任务并指派给不同的线程,实现简单建模;简化处理异步调用事件提高并发能力;对用户界面的操作做出更敏捷的响应[13]。常见的线程模型中,操作系统层面上 IEEE 给出了 UNIX 平台之上的标准POSIX 线程模型,而 Linux 线程模型则模糊了进程与线程之间的界限并未完全遵守 POSIX 标准。在较新的内核版本中 Linux 使用了 NPTL(POSIX ThreadLibrary),在内核线程仍然被当作进程来对待。相比 UNIX/Linux 平台,Windows平台则给出了更为优雅且易用的线程模型的实现。在程序语言层次上,这里仅简要介绍Java实现线程模型时采取的实现方案。Java 虚拟机的 JVM 规范并未强制 JVM 实现时必须使用内核线程、用户线程抑或是混合的线程模型。JavaSE 上最常用的 HotSpot VM 在比较新版本在所支持的平台上使用了内核态的线程模型,而在 UNIX 的发行版 Solaris 上则支持内核态和混合的两种线程模型。
..........
3 系统分析 ............ 9
3.1 系统背景......9
3.2 功能分析......9
3.3 本章小结....17
4 系统设计 .......... 18
4.1 系统体系结构设计......18
4.1.1 物理结构设计 ..... 18
4.1.2 系统结构设计 ..... 19
4.2 模块设计....19
4.3 数据库设计.........30
4.3.1 概念结构设计 ..... 31
4.3.2 物理结构设计 ..... 32
4.4 本章小结....40
5 系统实现 .......... 41
5.1 开发环境....41
5.2 模块实现....41
5.3 本章小结....57
5 系统实现
系统的实现包含了相关用户交互界面的设计与实现,依照规范的设计原则完成系统各模块的实现,集成为完整的系统。
5.1 开发环境
根据需求分析及系统的架构,本系统所需的运行环境如下:1. 操作环境要求为:操作系统版本为 Windows 7 或 Windows 10,内存容量为 4G 及以上,硬盘 40G 及其以上,并提供稳定的互联网接入服务。2. 需要的应用软件有:Wind 金融资讯平台,MATLAB R2012a 及其以上版本。3. 依赖的相关设计程序语言环境为 JRE 版本 1.6 及其以上版本。4. 数据库管理系统为 MySQL 5.0 及其以上版本。因此,开发环境要求如下:1. 操作系统版本为 Windows 7 或 Windows 10,内存容量为 4G 及以上,硬盘容量 40G 及其以上,并提供稳定的互联网接入服务。2. 应用软件:Wind 金融资讯平台,MATLAB R2012a 及其以上版本。3. 开发工具及程序设计语言:Java 1.6,Eclipse Neon IDE4. 版本控制工具:Visual SVN Server,TortoiseSVN5. 其他工具:Navicat。
........
总结
本文设计与实现的量化选股回测平台,目标在于构建回测量化选股策略的系统,尽量还原真实交易条件而贴合实际的环境,能够应用一种或者多种量化选股方法,通过对历史的数据进行回溯,基于回测产生的结果及过程数据,使用一些模型进行归因分析,同时根据表现情况将选择的股票或者策略应用到模拟交易中去,评价特定条件下的策略的表现情况,作为投资的建议与参考。本系统提供的主要功能有:(1)数据处理,从多个数据源收集相关数据、整理清洗之后并存储、提供查询功能;(2)回测过程,则是在已有数据的基础之上对量化选股策略进行历史的回测,验证策略或模型的历史表现情况;(3)模拟交易,使用回测过程的选股策略或者已选择的股票,依据 wind提供的模拟交易接口进行模拟交易,进一步检验策略或者已选择股票在接近真实环境中的表现情况;(4)归因分析,目的是为了获取影响基金收益的主要因素,如资产的配置方式,股票选择过程中的行业偏好等等;(5)结果展示部分不仅展示回测结束时回测过程中的主要记录数据,而且生成回测报告,提供了多个绩效指标可以用来从多方面评价回测策略。
..........
参考文献(略)