加载中…

加载中...

个人资料
faruto
faruto 新浪个人认证
  • 博客等级:
  • 博客积分:0
  • 博客访问:1,143,192
  • 关注人气:2,115
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

FQuantToolBox-基于MATLAB的量化数据回测工具箱 by faruto[持续更新]

(2014-12-18 17:29:09)
标签:

matlab

quant

程序化交易

股票

量化投资

分类: 量化投资:以MATLAB为工具
《量化投资:以MATLAB为工具》书籍简介
http://www.matlabsky.com/thread-45267-1-1.html

最新版本:
FQuantToolBox版本更新V1.2-基于MATLAB的量化数据回测工具箱 by faruto
http://www.matlabsky.com/thread-45744-1-1.html


历史版本:
FQuantToolBox版本更新V1.1-基于MATLAB的量化数据回测工具箱 by faruto
http://www.matlabsky.com/thread-45584-1-1.html
量化数据回测工具箱FQuantToolBox V1.0 by faruto
http://www.matlabsky.com/thread-45540-1-1.html

============================================

FQuantToolBox Mannual byLY_faruto

By LiYang(faruto)

http://weibo.com/faruto

http://www.matlabsky.com

http://blog.sina.com.cn/faruto

Email:farutoliyang@foxmail.com

=================================

FQuantToolBox: A Data and Backtesting Quant Tool Box based on MATLAB by faruto.

Version: V1.1

Last Modified 2014.12.19

=================================

History:

 

V1.1        2014.12.18

V1.0        2014.12.12

=================================

 

1.  写在前面的话

2014.12.18FQuantToolBox V1.0发布后得到网上朋友的支持和关注,得到大家对工具箱的一些反馈,非常感谢大家。有的朋友还没下载工具箱,先给我留言问是否收费,在这里统一告诉大家,完全不收费,以后也不会收费。

 

 

2.  V1.1更新说明

FQuantToolBox V1.1主要更新为增加个股公司基本介绍信息、个股证监会分类和所属概念分类;增加期货合约日线数据、增加期货合约每日结算会员成交持仓排名数据。

下面来介绍一下相关的函数和测试样例。

 

  (1)  获取A股市场的全部股票个股公司基本信息、证监会分类、所属概念分类(包含已退市股票)

 

函数名称:GetStockInfo_Web

函数作用:获取A股市场的全部股票个股公司基本信息、证监会分类、所属概念分类(包含已退市股票)

函数句柄:[StockInfo] = GetStockInfo_Web(StockCode)

函数说明:从

公司简介:http://vip.stock.finance.sina.com.cn/corp/go.php/vCI_CorpInfo/stockid/600588.phtml

板块信息:

http://vip.stock.finance.sina.com.cn/corp/go.php/vCI_CorpOtherInfo/stockid/600588/menu_num/2.phtml

抓取个股公司基本信息、证监会分类、所属概念分类,返回的StockInfo为一个结构体,存储相关信息。

测试样例:

[code]

%% GetStockInfo_Web

% 获取股票基本信息以及所属行业板块(证监会行业分类)和所属概念板块(新浪财经定义)

 

StockCode = '600588';

[StockInfo] = GetStockInfo_Web(StockCode);

[/code]

运行结果:

运行后返回的StockInfo为一个结构体,存贮信息如下:

FQuantToolBox-基于MATLAB的量化数据回测工具箱 <wbr>by <wbr>faruto[持续更新]

 

其中StockInfo.CompanyIntro中存在公司的基本介绍,如下:

FQuantToolBox-基于MATLAB的量化数据回测工具箱 <wbr>by <wbr>faruto[持续更新]

 

StockInfo.IPOdateStockInfo.IPOprice是提取出来的上市日期和发行价格信息,您也可以按照自己的需要从StockInfo.CompanyIntro进行提取。

StockInfo.IndustrySectorStockInfo.ConceptSector_Sina存贮的是证监会的行业分类和个股所属的概念分类。

如下:

[code]

>> StockInfo.IPOdate

ans =

    20010518

>> StockInfo.IPOprice

ans =

   36.6800

>> StockInfo.IndustrySector

ans =

计算机应用服务业

>> StockInfo.ConceptSector_Sina

ans =

    '保险重仓'

    '融资融券'

    'QFII重仓'

    '股权激励'

    '云计算'

    '国产软件'

[/code]

 

相应的批量数据获取和保存函数为

[SaveLog,ProbList,NewList] = SaveStockInfo(StockList)

首次运行后就会在本地DataBase\Stock\StockInfo_mat保存全部A股的公司信息、证监会分类、概念分类,如下:

 

 FQuantToolBox-基于MATLAB的量化数据回测工具箱 <wbr>by <wbr>faruto[持续更新]


  (2)  获取期货合约日线数据

当下仅仅完成了中金所IFTF的数据获取

函数名称:GetFutureDay_Web

函数作用:获取某日期货合约日线数据

函数句柄:

[DataCell,StatusOut] = GetFutureDay_Web(DateStr, MarketCode,FuturesCode)

函数说明:从各期货交易所,比如中金所

http://www.cffex.com.cn/fzjy/mrhq/

获取某日所期货合约日线数据。

DateStr为输入的日期,比如DateStr = '20141215';

MarketCode为交易所代码,比如MarketCode = 'CFFEX';SHFEDCECZCE

FuturesCode为期货品种代码,比如FuturesCode = 'IF';

 

DataCell为返回的数据

测试样例:

[code]

%% 获取期货某交易所某日数据-中金所-IF

DateStr = '20141216';

MarketCode = 'CFFEX';

FuturesCode = 'IF';

[DataCell,StatusOut] = GetFutureDay_Web(DateStr, MarketCode,FuturesCode);

[/code]

运行结果:

DataCell返回当日的IF的所有合约的日数据,如下

FQuantToolBox-基于MATLAB的量化数据回测工具箱 <wbr>by <wbr>faruto[持续更新]

 

相应的批量数据获取和保存函数为

[SaveLog,ProbList,NewList] = SaveFuturesDay(MarketCode,FutureCode,DateList)首次运行后就会在本地DataBase\Futures下的相应合约代码下的文件夹,比如DataBase\Futures\IF\Day_mat 存贮一个IF_Day.mat文件,保存IF从上市日至今所有合约的日线数据,如下:

FQuantToolBox-基于MATLAB的量化数据回测工具箱 <wbr>by <wbr>faruto[持续更新]

 

相应的单独一个合约的日线数据,做一下提取再处理即可,然后可以再进行主力连续合约、次主力连续合约的生成等一系列的期货连续数据的生成和清洗。

 

  (3)  获取期货合约每日结算会员成交持仓排名数据

当下仅仅完成了中金所IFTF的数据获取

函数名称:GetStockList_Web.m

函数作用:获取期货合约每日结算会员成交持仓排名数据

函数句柄:[DataCell,StatusOut] = GetFutureVolOIRanking_Web(DateStr, FutureCode)

函数说明:从各期货交易所,比如中金所

http://www.cffex.com.cn/fzjy/ccpm/

获取期货合约每日结算会员成交持仓排名数据。

测试样例:

[code]

%% 获取期货结算会员成交持仓排名数据-IF

tic

 

DateStr = '20141216';

Futurecode = 'if';

 

[DataCell,StatusOut] = GetFutureVolOIRanking_Web(DateStr, Futurecode);

 

toc

[/code]

运行结果:

运行后DataCell返回当日相关品种各个合约的结算会员成交持仓排名,如下:

FQuantToolBox-基于MATLAB的量化数据回测工具箱 <wbr>by <wbr>faruto[持续更新]
FQuantToolBox-基于MATLAB的量化数据回测工具箱 <wbr>by <wbr>faruto[持续更新]

 

 

相应的批量数据获取和保存函数为

[SaveLog,DateListOut,ProbList,NewList]

= SaveFuturesVolOIRankingData(FutureCode,DateList,UpdateFlag)

首次运行后就会在本地DataBase\Futures下的相应合约代码下的文件夹,比如DataBase\Futures\IF\VolOIRanking 存贮一个IF从上市日至今所有合约的结算会员的每日成交持仓排名数据,如下:

 

 FQuantToolBox-基于MATLAB的量化数据回测工具箱 <wbr>by <wbr>faruto[持续更新]


对于策略开发,或对这部分数据(期货合约每日结算会员成交持仓排名数据)这里多说一点,基于这部分数据可做的事情还是挺多的,比较有想象空间。使用这部分数据,可以构造某种意义上的投资者情绪指标,一则可以构造开发CTA类策略(IF策略),二则可以用来开发对于HS300的择时策略。

基于这部分数据开发的IF策略,会与普通的使用价量开发的策略有异构性,方便提升CTA大组合策略的异构性,平滑整体资金流,下图是我以前做过的基于这部分数据构建的IF策略的一个Demo:

FQuantToolBox-基于MATLAB的量化数据回测工具箱 <wbr>by <wbr>faruto[持续更新]

 

基于这部分数据开发HS300择时策略的前提假设是,期货合约每日结算会员成交持仓排名数据带有某些机构对于未来IF走势的某些预判信息,进而某种程度上影响HS300,也是有一定文章可做的。在此不做过多展开。

 

  (4)  V1.1其他说明

FQuantToolBox工具箱里面共有四个MATLAB脚本文件(什么是脚本文件?不懂MATLAB脚本文件和函数文件的区别?那您需要先做些功课,百度搜索“N分钟学会MATLAB”):

Main_GetStockDataTest.m

Main_GetFuturesDataTest.m

Main_SaveStockData2LocalTest.m

Main_SaveFuturesData2Local.m

其中,

Main_GetStockDataTest.m是用来测试FQuantToolBox工具箱里面所有以Get开头的和股票相关的函数,每个测试在Main_GetStockDataTest.m在一个cell里面,方便您来查看相关函数的输入输出。比如:

FQuantToolBox-基于MATLAB的量化数据回测工具箱 <wbr>by <wbr>faruto[持续更新]

 

Main_GetFuturesDataTest.m是用来测试FQuantToolBox工具箱里面所有以Get开头的和期货相关的函数,每个测试在Main_GetFuturesDataTest.m在一个cell里面,方便您来查看相关函数的输入输出。比如:

FQuantToolBox-基于MATLAB的量化数据回测工具箱 <wbr>by <wbr>faruto[持续更新]

 

Main_SaveStockData2LocalTest.m是用来测试FQuantToolBox工具箱里面所有以Save开头的和股票相关的函数,用来把网络上相关的数据存贮到本地,每个测试在Main_SaveStockData2LocalTest.m在一个cell里面,方便您来查看相关函数的输入输出,由于全部运行会很耗时,所以每个cell设置了一个run变量,您只需把run设置为1,该cell模块就行运行,run=0时,相应cell模块不会运行。

FQuantToolBox-基于MATLAB的量化数据回测工具箱 <wbr>by <wbr>faruto[持续更新]

 

您或许在Main_SaveStockData2LocalTest.m内会看到一些spmd并行操作模块,如果您对MATLAB并行有了解,那么可以并行批量下载相关数据,否则的话,您忽略该部分代码即可。

 

Main_SaveFuturesData2Local.mMain_SaveStockData2LocalTest.m作用类似,只不过Main_SaveFuturesData2Local.m是用来测试FQuantToolBox工具箱里面所有以Save开头的和期货相关的函数,用来把网络上相关的数据存贮到本地。

 

3.  FQuantToolBox是做什么用的?

FQuantToolBox定位是个数据和回测工具箱,没有实盘交易相关接口的实现(但未来不排除增加相关功能)。

数据方面,FQuantToolBox数据获取函数完全基于网络的免费数据源(主要为新浪财经、雅虎财经等金融网站),不但可以积累历史数据,也可以进行动态更新,现已实现的数据获取为A股市场的全部股票名称和对应代码(包含已退市股票)、A股市场的股票日线除权数据以及复权因子、A股市场的股票的除权除息信息、A股市场的股票每日交易明细数据(Tick数据)、A股市场的的股票财务指标数据、A股市场的股票的三张表(资产负债表、现金流量表、利润表)数据,未来数据方面会增加更多的数据,包括期货数据以及其他金融标的的数据,整体的思想还是完全基于网络获取和更新,完全免费。

    基于网络的数据获取的实现方式大体过程就是网络数据网址寻找——> 网址分析——> urlread+正则表达式 数据提取。进行网络数据的抓取,正则表达式是一定会遇到的,MATLAB中有相应的正则表达式函数,有关正则表达式的东西这里不做展开,各位看官需要自行做些功课,FQuantToolBox工具箱的Doc文件夹内有个我重新整理过的《MATALB正则表达式零基础起步教程.doc》文档,可以帮助您学习正则表达式相关的东西。

回测方面,FQuantToolBox工具箱当下提供了一个“如何构建基于MATLAB的回测系统”的demo样例,此部分内容来自我出版的《量化投资:以MATLAB为工具》的相关章节,未来回测方面会增添更多的辅助函数和插件,方便您使用MATLAB进行股票以及期货相关策略的回测。

    未来FQuantToolBox工具箱每次发布都会提供两个版本,无历史数据版本有历史数据版本。无历史数据版本仅提供相关函数,你可以在自己本地运行相关脚本来批量获取历史数据;有历史数据版本不但提供相关函数,还提供已经获取好的历史数据(A股市场全部股票股票名称和代码、日线数据、每日交易明细数据、除权除息信息、财务指标数据、三张变数据),节省您获取历史数据的时间,但相应的下载文件也会比较大(尤其股票每日交易明细数据),新的数据更新只需运行相应脚本函数就可以进行全市场最新数据的更新。


 FQuantStudio微信公众号

FquantStudio微信公众号,是我近期开始维护的一个公众号,主要内容为量化投资、MATLAB应用,未来FQuantToolBox的版本更新会第一时间在这个公众号发布,欢迎大家关注,可以微信上搜索“FQuantStudio”或扫描下面的二维码进行关注

FQuantToolBox-基于MATLAB的量化数据回测工具箱 <wbr>by <wbr>faruto[持续更新]

   FQuantToolBox下载地址

百度网盘地址:

http://pan.baidu.com/s/1qWjZ4zq

FQuantToolBox下载二维码,可以直接扫描进行下载

FQuantToolBox-基于MATLAB的量化数据回测工具箱 <wbr>by <wbr>faruto[持续更新]




0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有