欢迎你们订阅《Python数据分析实战:构建股票量化交易系统》小册子,学完小册上的知识点后,必定要学以至用的方式来辅助咱们分析股票! sql
相信你们都据说了量化交易这个东西了吧!数据库
量化交易是一种新兴的系统化金融投资方法,它综合多个学科的知识,用先进的数学模型代替人的主观思惟制定交易策略,利用计算机强大的运算力从庞大的股票、债券、 期货等历史数据中回测交易策略的盈亏“几率”,经过管理盈亏的“几率”帮助投资者作出准确的决策。json
那么,什么才是普通股民所适合的量化交易打开方式呢?微信
本文就用一个接地气的数据管理场景来和你们分享一下,普通股民如何去使用量化交易!markdown
咱们知道数据是量化交易的源头,如何高效地管理大量数据是量化交易分析中很是关键的环节。数据库就是最佳的解决方案。app
经过API接口获取到股票行情数据以后,咱们能够存入到数据库之中,这样下次调用的时候只须要从本地数据库中获取便可。oop
在存入数据库以前须要考虑如何划分数据表以及如何创建对应的股票池。性能
固然,根据交易者不一样的操做风格能够有不同的划分方法。好比把A股市场全部指数和上市个股都概括到一个表中;也能够把本身熟悉的几个板块个股概括到一个表中……学习
接下来咱们就以板块来划分数据表,把水泥和半导体板块划分为同一个表中,而后介绍在实际应用中如何把个股行情数据更新到数据库中。网站
咱们使用Tushare Pro版本的stock_basic()接口获取已上市的全部股票基础信息数据,包括股票代码、名称、上市日期、退市日期、所属板块等。
从上市的全部股票的代码中用Pandas条件表达式选取出“水泥”和“半导体”板块股票,好比:
df_basic[(df_basic["industry"] == u"水泥")]
复制代码
选出的结果以下图所示:
将股票名称name和股票代码ts_code做为键值对转换为字典格式数据,而后使用dump把Python股票池存储为JSON文件便可。好比:
with open("stock_pool.json", "w", encoding='utf-8') as f:
json.dump(stock_index, f, ensure_ascii=False, indent=4)
复制代码
建立的JSON文件内容,以下图所示:
目前流行的数据库有Oracle、MySQL、MongoDB、Redis、SQLite……关于数据库的选型一般取决于性能、数据完整性以及应用方面的需求。每一个数据库都有它的特色和最适合的应用场合。
这里推荐一款轻型的关系型数据库SQLite。咱们仅仅是用于本地的数据管理,无须多用户访问,数据容量小于2TB,无须海量数据处理,关键是移植方便、使用简单、处理迅速。这里推荐选择SQLite在实现本地数据管理。
固然,若是你们自己就擅长MySQL、MongoDB的话,或者有更高级玩法的话,彻底能够选择MySQL、MongoDB这类的数据库。
首次建立数据库的时候要补全个股的历史行情走势,而后每过一个交易日就更新一天。
刚才咱们存储的JSON文件提供了股票池的代码,使用open()把json文件打开,而后使用load()将文件中JSON编码字符串转换成Python数据类型,好比:
with open("stock_pool.json", 'r') as load_f:
stock_index = json.load(load_f)
复制代码
接下去能够用for循环遍历获取股票池对应的股票数据,也能够多任务提速股票数据的获取。
好比是第一次建立数据表,以000401为例,咱们指定Tushare Pro版本的daily()接口起始时间和终止时间参数为分别'20190101'和'20200101',获得的数据内容以下图所示:
若是要更新下一个交易日的数据的话,只需调整起始时间便可。
建立数据库的代码:
conn = sqlite3.connect('stock-boards.db')
复制代码
把数据更新到数据库表中能够直接调用DataFrame.to_sql()接口:
df_stock.to_sql('cement_semicon', conn, index=False, if_exists='append')
复制代码
读取整张表数据能够调用pd.read_sql_query:
df_table = pd.read_sql_query("select * from 'cement_semicon';", conn)
复制代码
好比咱们存取了水泥板块所有股票的行情数据到数据库表中,读取出来的数据格式以下所示:
有了数据库,咱们能够快速查询和统计一些数据。
好比查询‘20190125’这天交易日涨幅超过2%的股票:
df_target = pd.read_sql_query("select * from 'cement_semicon' where pct_chg > 2 and trade_date == '20191225'", conn)
复制代码
统计获得符合要求的股票只有2只,以下图所示:
在量化交易的实战中,数据的准确度是很是重要的,也就是说存储到数据库中的股票行情数据要保证足够的准确。
如何保证数据足够准确呢?
一个建议是选取两个数据源进行相互验证。若是是使用免费API接口,能够分别用两个接口获取数据,存在本地的CSV文件中,而后分别导入文件中的行情数据进行对比。出现误差时要人为去判别,当数据经过检验以后再转存数据库中。
更高质量数据的话,可使用收费的获取数据途径,例如万得(Wind)、同花顺等公司提供的金融数据终端,聚宽团队提供的JQData数据服务,预测者网站提供的金融数据下载服务等。
固然,也能够用爬虫方式从财经网站获取,好比东方财富网:
学习完书籍以后,想再次升级学习的内容能够加入知识星球《玩转股票量化交易》(点击可查看目录)。
经过这个简单而又实用的股票量化场景,但愿可以给广大朋友对于量化交易有一个直观的感觉。
而后,咱们应该升级本身的炒股方式了,把本身之前炒股的那套方法,抽象成策略模型,用量化的方法去全市场回测评估,而后让程序帮助咱们监测行情的走势。
这个才是普通股民所适合的量化交易打开方式!
———————————————————————————————————————————————— 你们若是想对涉及到的知识点进行更全面、更体系的从0-1方式的介绍,这里推荐给你们个人书籍《Python股票量化交易从入门到实践》
!天猫、京东、当当全面开售!
同时也欢迎你们关注个人微信公众号【元宵大师带你用Python量化交易】了解更多Python量化交易相关内容