• 【qstock】几行代码实现数据获取、可视化到量化选股实战


    引言

    Python金融量化将之前涵盖量化入门、金融数据、量化分析、策略回测的内容进行整合和系统化,打造更便于个人量化投研分析的框架——qstock。qstock目前处于测试阶段,只面向知识星球会员开放,数据源主要来自tushare pro,之后将会不断增加各种免费的数据源api(包括akshare、efinance、baostock等等)以及数据爬虫,等功能完善后再向所有读者进行开源。

    qstock致力于打造个人量化投研分析框架,侧重点在于量化分析、可视化、量化选股和策略回测,其中数据获取部分download_data:整合tushare、akshare、efinance统一接口获取数据,将数据规整化和本地数据库操作。目前实现指数和个股分析(技术指标、量价形态、动量排名、资金流、涨停板、龙虎榜、股东、公司基本面),计划添加包括宏观环境分析(GDP、利率、通货膨胀、失业率、流动性)和市场分析(大盘指数、国债指数、企业债指数、中期票据价格、商品期货、美元人民币、美元指数)、、多因子分析、投资组合与套利、机器学习、深度学习模型、策略回测(pandas向量化回测、backtrader)。

    01 数据获取

    如果tushare pro上有超过5000积分,可以使用qstock的TushareData类获取数据。TushareData类专门用来获取tushare pro上的数据并进行规整处理,需要先设置token,如果需要将数据保存本地数据库(系统自带的sqlite3),还需要设置参数my_path(数据库存放路径),无此名称会自动创建文件夹。

    如果tushare pro上没有足够的积分token,则使用其他免费的在线数据包获取数据,如akshare,efinance,baostock等,在qstock上使用online_data进行封装。

    导入数据下载模块

    获取指数数据

    bea82a353c32622fb78283c31a3a019b.png

    更新数据库

    69941f95e6fb8fda46e7c3ea429a1cc9.png

    获取数据

    一行代码获取指数数据

    74b81cd37be27b98a3eb6a0abc0789bf.png

    61ced13c5580b76bb1289c273735d94a.png

    获取全球主要指数价格数据

    daa02c7ac6486cbf8b9ca1c15d3fb76f.png

    获取个股数据(默认前复权数据)

    0a64de5b23037033aeaa27306987de70.png

    包含了25个特征值

    95af83c9ce749ec45b07d8d0fc7af9c7.png

    获取全部个股行情面板数据(回测+选股)

    60b97fef9eae3514c5a094b4275cb8b4.png

    北向资金数据

    d9be0fce35a9335612732c5a6b465d9b.png

    个股资金流数据

    afcd1e1622e70b4088067fcd68f03588.png

    02 数据可视化

    整合pyecharts1.x版本的常用画图功能,包括K线图、折线、饼图、热力图、地图、词云图等等。

    5caee6f7e842d7ee27884f87bb2951ae.png

    ae831b08af7649f4687e84f525a1e45c.png

    3a22a54cd0f37d4737a35b70b6afc4d4.png

    df86da3f99b0d76d868841ca2275dfd4.png

    97501c3adf422812ea7a975d7efd831a.png

    e923ec8d5af2e4956c68d34005ee5486.png

    24e2c8e8df344115f3ca5b39bd9547a1.png

    57bb49982cb34bba0dfab9e073194fb1.png

    c06ab34bfa545fb70850580728588f70.png

    62835490d0207111a57231ee658030fe.png

    5802e6e366c4e0610c7cab41617655b8.png

    3710738cd2747914b8c78a71ed323045.png

    96c8a75ed7e2a8f69895a4452050f2b0.png

    北向资金流向

    d26b823a13c47de177fc6db8bf51cf50.png

    ee39a9af20da1035aec9d444dd97db7c.png

    7ad81d5dba7ef0283a8aaeefc18ceb74.png

    个股资金流向可视化

    5c7ca4e3e4f184e7ac4a3af730c2866a.png

    83062e5006fef7b9e5fb74e63c8ee314.png

    03 事件提醒

    通过PYTHON给个人发送提醒信息,该功能在qstock.common.send_wechat中实现,包括后面的量化选股的提醒。

    aeee3f138d68f47289d14d0553adf710.png

    534520fb3db819078c2506545fe5bab6.jpeg

    04 量化选股

    选股涉及两个方面,一是公司分析,包括财务状况、发展潜力和成长性等,这方面是俗称的基本面分析,可以参考的资料已经汗牛充栋;二是股票分析(包括股价技术形态分析)。 多角度保证在市场大方向上看对的正确率尽可能增加,多层次可以和多角度相互验证,获取超额收益。通过自上而下的分析框架确定投资方向,选择符合投资方向的最优标的。

    6f0e04d4b48f64d9ef9230da59210737.png

    板块热点

    热点板块概念指数

    42d96e63a7bf0ec1bb362af2be1494f4.png

    dd68397d2307e94a50a83322a68bdae3.png

    fa75ce5b49b1ef516417f499783d3cd3.png

    333d05a28675eafdb468a3e2ccddf361.png

    4d52351f0445c455b8262bc5da2524c3.png

    热点板块成分股

    7d22eed71eaa504ca245bc4213e1e650.png

    46a853d4e6078f0af6c232fa77b4d0c3.png

    涨停板

    涨跌停面板数据

    获取2017年以来所有涨停板数据(跌停板只需将参数tp设置为'D')

    d381bfc0d4c1694e248ca902ec36eb2d.png

    5e291c22278d304d20baa72059216ff1.png

    每日连板个股

    9d84eb8a46fc61f7219a11c502ff9837.png

    RPS选股

    RPS(欧奈尔中文书是RS),即股票股价走势横截面(与市场其他个股对比)相对强弱,本质是动量策略。一般建议将RPS价格动量结合公司基本面进行选股。

    股价相对强度RPS评级:衡量某一股票在过去n日内(如120、250)内相对股市中其他股票的表现(收益率)。市场上的每一只股票都被指定了1-99范围内的某一数值,99代表相对强度最高,RS值为99,说明该股票在收益率表现方面比其他99%的公司更为优秀。寻找真正的领军股,避免上涨滞后和跟风股。欧奈尔建议选择RPS值80或90以上(二八法则),价格形态合适的股票。一旦大盘下跌彻底结束,最先反弹到价格新高的股票基本上就是要寻找的真正领军股。普通股票的突破行为会持续约13周,而最优秀的股票通常在前3周或前4周就突破出来。注意,根据价格形态选股有失败的可能,一旦股价低于买入价的10%,立即卖出止损。

    d30594924ae9f2cfd4a626bee5290ed8.png

    执行选股

    f467e95a578af7d19666a4ec3f1a9edd.png

    1a5fa185a52160972d3a437bd5d798ba.png

    6148d6b2c49312c20c96193639115aec.png

    MM趋势选股

    • 股票价格高于150天均线和200天均线

    • 150日均线高于200日均线

    • 200日均线上升至少1个月

    • 50日均线高于150日均线和200日均线

    • 股票价格高于50日均线

    • 股票价格比52周低点高30%

    • 股票价格在52周高点的25%以内

    • 相对强弱指数(RS)大于等于70,这里的相对强弱指的是股票与大盘对比,RS = 股票1年收益率 / 基准指数1年收益率 将最后一条去掉,改成结合RPS的相对强弱选股,选择rps_120大于90的个股。

      MM趋势选股池

    b9c9aa7e8b9638c38e9188512a540d55.png

    MM趋势+120日RPS>90

    0e2b2c92ea067df89c8527908153ae6d.png

    资金流选股

    资金流选股池

    此处设置时间周期为3、5、10、20、60日,参数可根据市场情况和自身经验不断调整。

    039c1fd643f0dbee440ebd8f8711fc7c.png

    68ec1977374d0c2c5f270506b6941aaa.png

    MM趋势+RPS+资金流

    7c3dfdfc9e1fce631d7d49f79e542d8b.png

    每日指标选股

    b6a9128a5b741f3702383413d7fbb72a.png

    6ac964bbd35beae2f2d5e22af9c367c9.png

    c57840e57323dc6c12dbaf898da385ac.png

    财务指标打分系统

    各项指标原来和计算见推文:https://mp.weixin.qq.com/s/3QWoNBOLh-cRyB1YPVtCZA

    b2be39b916853d916c802baf0ebb66b0.png

    fc88c23ce9da5e47f94812fbb315996f.png

    量价形态选股

    284a09aaeb918fd07aa733419d9e2658.png

    参考资料

    1、tushare pro、efinance、akshare使用文档

    2、https://blog.csdn.net/m0_63171455/article/details/122252272

  • 相关阅读:
    慕尼黑主题活动!亚马逊云科技生成式AI全新解决方案,引领未来移动出行领域
    基于SpringBoot的阿博图书馆管理系统
    qbreakpad 生成dump
    黄东旭当选 CCF 数据库专业委员会、开源发展委员会、大数据专家委员会执行委员
    联想ThinkPad E14 如何修改BIOS开机画面LOGO
    LeetCode每日一题(756. Pyramid Transition Matrix)
    i = i++ 计算过程还不会?C/C++ 的输出语句与Java 有何不同?
    永续资金费率说明
    【JavaEE基础与高级 第58章】Java中的单元测试Junit、Junit常用注解、Junit使用的基本流程
    Uniapp 新手专用 抖音登录 获取用户头像、名称、openid、unionid、anonymous_openid、session_key
  • 原文地址:https://blog.csdn.net/ndhtou222/article/details/126151522