logo资料库

论文研究-智能投顾系统的研究与仿真 .pdf

第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
资料共9页,剩余部分请下载后查看
5 10 15 20 25 30 35 40 中国科技论文在线 http://www.paper.edu.cn 智能投顾系统的研究与仿真 刘昆,雷友珣** (北京邮电大学软件学院,北京 100876) 摘要:本文旨在完成一个智能投顾系统的仿真实现。根据对现有智能投顾产品的调研结果, 通过相关理论研究,选择 ETF 作为投资产品,构建了交易数据采集模块、用户管理模块、 投资组合推荐模块、以及监测与再平衡模块,从而实现了一个智能投顾的仿真系统。系统具 有除实际买入赎回外的所有基本功能,通过测试验证了系统各项功能的可用性,通过实验观 察了其投资建议的收益情况,结果表明系统能够根据长期历史交易数据计算出一组在未来一 段时间实现收益的投资组合,相对于投资单一的产品,能够在同等的收益期望下控制投资风 险,可以作为一个用于长线投资的参考工具。 关键词:软件工程;智能投顾;投资组合;ETF 中图分类号:TP319 Research and Simulation of Robo-Advisor System LIU Kun, LEI Youxun 100876) (School of Software Engineering, Beijing University of Posts and Telecommunications, Beijing Abstract: This paper is aimed at implementing a simulation of robo-advisor system. According to the investigation results of existing robo-advisor system, through relevant theoretical research, take ETFs as investment assets, a transaction data collection module, user management module, portfolio recommendation module, and a rebalancing module was built, thereby a simulated robo-advisor system was implemented. The system has all the basic functions except buy and redeem, the availability of each function of the system was verified, experiment results show that the system can achieve profitability in future based on long-term historical transaction data, compared with investing in a single asset, the investment risk can be reduced under the same return expectation, the system can be used for long-term investment. Key words: Software Engineering; Robo-Advisor; Portfolio; ETF 0 引言 投资理财是使个人及家庭财务状况处于最佳状态的工具,同时基金股票等投资理财产品 能够广泛地动员、积聚和集中社会的闲散资金,为社会经济建设发展服务,扩大生产建设规 模,推动经济的发展[1]。但是,由于投资理财产品具有风险性,投资市场的波动会对个人资 产安全以及国家金融市场的稳定产生极大的影响。因此,全世界许多金融相关行业的研究人 员建立了分析方法和投资组合模型,希望能够在控制风险的同时获取更高的收益。在投资组 合模型的基础上实现交易数据的自动化采集、分析、以及监测调整等功能,就发展出了智能 投顾。 智能投顾(智能投资顾问)[2]是一类基于数学规则或算法,较少或几乎无需人工干预的 理财顾问,能够在线提供理财建议、投资组合管理等服务。智能投顾重视风险控制,提倡投 资大类资产并进行长线投资,适合偏向保守的普通大众用于抵抗通胀、升学储蓄、退休储蓄 等。 由于控制风险、收益稳定符合普通大众的诉求,智能投顾具有良好的市场前景,北美市 作者简介:刘昆(1993-),男,硕士研究生,软件工程 通信联系人:雷友珣 (1970-),男,副教授,主要研究方向:计算机网络、通信软件. E-mail: yxlei@bupt.edu.cn - 1 -
45 50 55 60 65 70 中国科技论文在线 http://www.paper.edu.cn 场的 Wealthfront、Betterment 等智能投顾产品取得了相当的成功,因此智能投顾是一个值得 进行研究的领域。 1 相关调研与理论准备 1.1 智能投顾系统的调研 对 Wealthfront、Betterment、Future Advisor 等已有产品进行的调研,表明一个智能投顾 系统需要实现投资产品历史交易数据的采集、用户风险承受能力的评估、投资组合的推荐、 以及买入投资组合后的监测与再平衡[3]。其中采集数据、评估风险承受能力、监测与再平衡 主要涉及工程开发与策略制定,推荐投资组合则需要实现一个投资组合模型,涉及相关优化 算法方面的理论研究。 对于投资产品的选择,由于大类资产的风险和收益相对稳定,可预见性相对较好,适合 用于智能投顾所提倡的长线投资,所以选择主题较为明确的基金(如专注黄金、医药、蓝筹 股等的基金)来代表相应的大类资产,作为投资产品是较为普遍的做法。其中,交易型开放 式指数基金(Exchange Traded Funds,后文称 ETF)[4]结合了封闭式基金和开放式基金的运 作特点,具有交易的便利性与透明性,同时交易成本低廉,因此 Wealthfront、Betterment 等 智能投顾产品均采用 ETF 作为投资产品。 根据以上调研结果,确定了需要做的工作,包括中国大陆市场 ETF 基金信息以及历史 交易数据的采集,风险承受能力评估方案的制定和实现,投资组合模型的研究与实现,以及 监测与再平衡策略的制定和实现。 1.2 投资组合模型的理论准备 图 1 最优投资组合在风险-收益坐标系中形成的有效边界 Fig. 1 Efficient frontier formed by optimal portfolios in the risk-return coordinate system 现代资产组合理论[5]是各投资组合模型的理论基石,它指出,将多个投资产品组合起来, 并按照一定的比例分配投资组合中各投资产品所占的金额,相对于投资单一产品可以达到降 低风险提升收益的效果。理论的建立者马柯维茨提出了经典的均值-方差模型[6],用投资产 品一段时间收益率的均值来描述收益,用收益率的方差来描述风险,引入一个取值范围在 0 到 1 之间的风险厌恶系数描述投资者的风险承受能力,通过二次规划进行优化,可以对风险 偏好系数的各个取值得出最优的投资组合,这些投资组合在风险-收益(用方差-均值描述) 坐标系中形成一条曲线(如图 1 所示),称为有效边界,有效边界上的投资组合在其收益水 平上风险最小,在其风险水平上收益最大。 - 2 -
中国科技论文在线 http://www.paper.edu.cn 75 80 为了控制风险,需要保证投资组合中产品的多样性,因此产品数量不能过少;而为了控 制管理费用(如交易时的手续费),产品数量不能过多。为了使投资组合中投资产品的数量 限定在合理范围内,在均值-方差模型的基础上,研究者们改进了优化目标并提出了多种优 化算法。对遗传算法(简称 GA)[7]、基于 Hopfield 神经网络(简称 HNN)的算法[8]、以及 HNN+GA 的算法[9]进行了研究,结果表明 HNN+GA 能够在限制投资产品数量的情况下得出 更好的有效边界[9],因此决定将基于 HNN+GA 的投资组合模型用于智能投顾系统的实现。 2 智能投顾系统的仿真实现 系统目前还未实现实际的买入赎回等功能,买卖活动采用历史交易数据进行模拟,因此 属于仿真实现。 2.1 模块划分及工具选择 85 90 图 2 系统模块划分 Fig. 2 Modules in the system 如图 2 所示,系统主要包括数据采集、用户管理、投资组合推荐、投资组合的监测与再 平衡等功能。其中数据采集包括信息(名称、发行时间等)的采集和交易数据的采集,需要 实现交易数据的定时更新;用户管理包括用户的账号、风险承受能力评级、用户买入投资组 合等信息的管理;投资组合推荐根据交易数据和用户风险承受能力进行,需要实现投资组合 模型以及推荐结果的管理;监测与再平衡需要在用户买入投资组合后定时监测组合中各产品 所占的金额比例,并在满足一定条件时对比例进行调整。模块间关系如图 3 所示。 - 3 -
中国科技论文在线 http://www.paper.edu.cn 图 3 模块间关系 Fig. 3 Relationship between modules 选择 Python 作为系统的开发语言,因为其在爬虫、算法、Web 开发等方面均具有十分 完善的开源框架和工具包。使用 Django 作为 B/S 系统的 Web 框架,使用 Scrapy 爬取基金 的相关信息,使用开源财经数据包 Tushare 采集交易数据,投资组合模型的实现则用到了 Numpy 和 Cvxopt 工具包,分别负责计算数据的统计特征和实现二次规划算法。在前端页面, 使用基于 JavaScript 的 ECharts 绘制相关图表。数据存储方面,使用 MySQL 存储用户相关 数据,考虑到 Tushare 得到的交易数据与 MySQL 表格相互转换较为复杂,使用了非关系型 数据库 MongoDB 存储交易数据。 2.2 数据采集模块 如前所述,系统使用 ETF 作为投资产品。利用 Scrapy 实现爬虫,爬取了中国大陆市场 153 只 ETF 基金的相关信息,从中筛选出了流动性较大(资金规模大于 1 亿),历史交易数 据足够多(2016 年以前发行)的 82 只。然后利用 Tushare 根据各 ETF 的代码得到历史交易 数据,存入 MongoDB 的集合(类似关系型数据库中的表)etf_dfs 中。 如图 4 所示,集合中的数据以键值对的形式存储,以 ETF 的代码为键,值包含 df 和 next_day 两个域,df 记录相应的交易数据,包含各交易日期以及当日的收益率,next_day 记 录下一次更新数据时需要传入的起始日期参数,保证更新是增量的。 95 100 105 110 - 4 -
中国科技论文在线 http://www.paper.edu.cn 图 4 etf_dfs 集合的结构 Fig. 4 Structure of etf_dfs collection 为了使交易数据得到及时更新,利用多线程机制实现了数据采集任务的定时触发,在每 个交易日结束后的凌晨 1 点采集新产生的交易数据存入集合 etf_dfs 中。 2.3 用户管理模块 用户管理模块包括用户登录、注册、风险承受能力评估等功能的实现。如表 1 所示,用 户表字段包含 ID、用户名、密码、昵称、风险承受能力评级。 表 1 用户表的结构 字段名 id name password nickname risk_tolerance 数据类型 int varchar varchar varchar double Tab. 1 Structure of user table 长度 11 255 255 255 主键 是 非空 是 是 是 是 是 备注 自增 ID 账号名 密码 昵称 风险承受能力评级 115 120 125 在 Django 框架下实现了登录验证,未登录的用户在访问登录注册以外的功能时会跳转 图 5 调查问卷 Fig. 5 Questionnaire - 5 -
中国科技论文在线 http://www.paper.edu.cn 到登录注册页,利用 Session 机制存储用户的状态。 对于风险承受能力评估,参考 Wealthfront、Betterment 等,制定了一份用于评估用户风 险承受能力的调查问卷(如图 5 所示),通过收入、年龄、主观感受等方面的问题评估用户 的风险承受能力。填写问卷后,用户会得到一个 0.5 到 10(以 0.5 为间隔,共 20 个)的风 险承受能力评级,作为投资组合模型的参数之一,此评级推荐的投资组合后会在用户登录后 展示在首页。 2.4 投资组合推荐模块 图 6 投资组合推荐的三个阶段 Fig. 6 Three phases of portfolio recommendation 如图 6 所示,投资组合推荐模块需要实现交易数据的预处理、投资组合模型、模型输出 结果的存储。预处理部分的主要工作是根据系统采集的 ETF 的历史交易数据计算收益率的 均值与方差,从 MongoDB 中取出交易数据,利用 Numpy 中封装的函数得到这些统计特征 值;投资组合模型采用能够限定投资产品数量的基于 HNN+GA 的模型,需要预处理后得到 的均值与方差作为输入,模型限制投资组合中 ETF 的个数为 6 到 10,输出 20 个风险承受能 力评级对应的推荐投资组合;模型输出的投资组合以 Python 中基本类型 List 的形式存在, 仅含 20 个元素(对应 20 个风险承受能力评级的推荐投资组合),对其进行的操作仅限于读 和覆盖写,因此持久化时使用了 Python 的 Pickle 模块,直接以文件的方式存储。 对于投资组合中 ETF 个数的每一个取值,需要循环地运行模型,为了提升效率,将串 行的循环改进为并行处理。由于 ETF 个数取值为 6 到 10,因此利用多进程机制实现了 5 个 子进程,对各个取值进行并行的运算。 2.5 监测与再平衡模块 用户买入投资组合后,组合中各只 ETF 随着时间推移发生不同程度的涨跌,会导致各 ETF 所占的资金比例偏离模型推荐的配置,组合的风险会随之上升,因此需要对买入后的组 合进行持续的监测,必要时调整资金的比例。 美国基金管理公司 Vanguard 对多种监测与再平衡策略进行了研究[10],包括定时监测与 再平衡,基于偏离阈值的再平衡等。其结果表明对于长线投资,无论采取什么样的监测与再 平衡策略,投资组合的风险和收益均好于完全不采取监测与再平衡,但是频繁的操作会带来 高负荷与高交易费用,结论表示以月为周期单位,当资金比例偏离超过 5%到 10%时进行再 平衡,可以达到较好的效果。 根据上述结论,在系统中实现了每 60 个交易日进行一次监测,资金比例偏离超过 5% 时进行再平衡的策略。当用户买入的投资组合触发上述策略设置的条件时,对投资组合中各 ETF 买入资金的余额进行累加得到整个组合的余额,并按照投资组合模型推荐的比例重新分 配余额。 3 系统展示与验证 以数据采集模块采集的 82 只 ETF 从 2016 年 8 月 8 日到 2017 年 6 月 6 日的交易记录作 - 6 - 130 135 140 145 150 155 160
165 170 175 180 中国科技论文在线 http://www.paper.edu.cn 为实验数据,基于这些数据计算投资组合模型的输入,即各 ETF 收益率的均值和方差。20 个风险承受能力评级映射为 20 个对应的风险厌恶系数,模型针对各个风险厌恶系数分别计 算出推荐的投资组合,将结果持久化到本地磁盘。 当一位用户注册并登陆系统后,系统跳转到主页面,若此时用户已经完成了风险承受能 力评估,则主页面显示与其风险承受能力评级对应的推荐投资组合;否则在主页面提示用户 完成风险承受能力评估,用户可以通过页面左侧的导航栏进行功能的选择(如图 5 所示)。 用户填写问卷后,系统会显示评估结果,经用户确认后更新用户的风险承受能力评级并 跳转到主页面。此时主页面显示相应的推荐投资组合,显示的内容包括推荐组合的收益率期 望、标准差等信息,并以柱状图的形式展示了投资组合的具体构成,包括组合中各 ETF 的 名称以及所占金额的比例,以折线图的形式展示了投资组合的回测走势(如图 7 所示)。 图 7 首页展示推荐投资组合 Fig. 7 Display recommended portfolio on the homepage 主页面展示推荐投资组合各项信息的同时,也提供了买入此组合的入口,用户输入金额 并确认买入后跳转到当前买入的页面。 为了对系统进行验证,假设用户于 2017 年 6 月 7 日买入投资组合,当前日期为 2017 年 10 月 26 日(买入后经过约 90 个交易日),进而模拟了以下情景:用户于 2017 年 6 月 7 日登录,选择了系统根据 2016 年 8 月 8 日到 2017 年 6 月 6 日的交易数据给出的推荐投资组 合,观察买入后直到当前日期的走势(根据采集的交易数据计算得到)。 当前买入页面展示用户目前的收益金额,买入投资组合后直到当前日期走势的折线图, 以及描述投资组合的具体构成的柱状图(如图 8 所示)。 - 7 -
中国科技论文在线 http://www.paper.edu.cn 185 190 图 8 查看当前买入的投资组合 Fig. 8 Display the currently bought portfolio 表 2 展示了以 100000 元买入,各个风险承受能力评级的推荐投资组合的收益情况。如 2.5 节所述,这些投资组合在第 60 个交易日时经过了一次再平衡,可以看到各评级对应的推 荐组合经过约 90 个交易日均取得了 7000 到 8000 元的收益。由于收益和风险随着风险承受 能力评级的提升而同时增加,因此收益金额没有显示出明显的递增或递减趋势。 表 2 各推荐投资组合的收益情况 Tab. 2 Income of each recommended portfolio 风险承受能力评级 余额(元) 风险承受能力评级 余额(元) 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 7282.71 7817.58 8055.72 8317.95 8229.80 7929.85 7423.91 7423.84 7423.84 7189.29 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0 7189.29 7132.96 6907.17 6907.16 7027.25 7028.43 7028.43 7118.11 7186.26 8068.92 4 结论 通过相关调研,理论研究以及编程开发,本文给出了一个智能投顾系统的仿真实现,系 统通过了各个功能模块的测试。同时利用采集的交易数据进行了验证,结果表明系统能够根 195 据历史交易数据得出一组在未来一段时间内表现较好的投资组合。今后的工作中,可以实现 实际的买入赎回功能,进行实盘的验证,此外监测与再平衡的周期与阈值可以进行交叉验证, 找到更优的设置。 [参考文献] (References) 200 [1] 张亦春,郑振龙,林海. 金融市场学[M]. 北京:高等教育出版社,1999. [2] Robo-advisor[OL].[2017-11-6]. https://en.wikipedia.org/wiki/Robo-advisor - 8 -
分享到:
收藏