游离态GLZ的股票量化实验(一)—— 基于神奇公式思想投资策略

2023-10-07 03:10

本文主要是介绍游离态GLZ的股票量化实验(一)—— 基于神奇公式思想投资策略,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

量化断更了两年了,重新开写,希望各路大佬多批评指教。

最近上量化课学习了神奇公式,神奇公式是格林布拉特在其《股市稳赢》中提到的一种选股策略,其本人也依靠这个公式获得了长期年华40%的收益,赚的盆满钵满。

这个公式的思想简单来说就两步,一是寻找好公司;二是寻找便宜的股票。用量化行业的话来说就是一个双因子策略,选取的两个因子是资本回报率和股票收益率。由于国内这些指标不好查,用净资产收益率(ROE)代替资本回报率;用市盈率(PE)代替股票收益率。

基于这个思想来进行量化投资,但是注意到A股表现和美股比…算是一种双边行情,经常会有不可预测的跌势开启,因此加上布林带的择时,防止在股票下穿布林带开口的时候买入。

策略核心代码如下:

#排除市净率和净资产收益率小于0的,并选取流通市值top1%的df = df[(df['roe']>0) & (df['pb_ratio']>0)].sort_values(by='pb_ratio')df.index = df['code'].values #设置股票代号为indexdf = df[df['circulating_market_cap'] > df['circulating_market_cap'].quantile(0.99)]#选取roe大于8和pe小于60的df = df[(df['pe_ratio']<60) & (df['roe']>8)]#用rank作为指标,取roe(大)和pb(小)综合排名好的df['1/roe'] = 1/df['roe']df['score'] = df[['pb_ratio','1/roe']].rank().T.apply(sum)#通过考验的放入股票池pool = list((df.sort_values('score').index)[:g.stockNum])

布林带防止下穿,回避高风险股票买入时机:

for i in feasible_stock_list:for short_d, long_d in [(10, 50)]:price_short = get_price(i,end_date=context.previous_date,count=1+short_d,fields=['close'])['close']MA_short = price_short[-short_d:].mean()MA_short_pre = price_short[-1-short_d:-1].mean()price_long = get_price(i,end_date=context.previous_date,count=1+long_d,fields=['close'])['close']MA_long = price_long[-long_d:].mean()MA_long_pre = price_long[-1-long_d:-1].mean()if MA_short < MA_long and MA_short_pre > MA_long_pre and context.portfolio.positions[i].closeable_amount > 0:if i not in res_lst:res_lst.append(i)

在聚宽平台回测了2019年全年,效果尚可:
在这里插入图片描述
该模型还有很多问题,为了测试神奇公式对布林带的择时应用没有很严格,仅仅防止了下穿;同时神奇公式本身对很多突然崛起的科技股没有什么敏感度,更倾向于购买内在价值高但被低估的白马,而忽略表面价值低但是由于科技发展突然翻身的黑马。还有很多地方可以改进。

这篇关于游离态GLZ的股票量化实验(一)—— 基于神奇公式思想投资策略的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/155656

相关文章

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

SpringBoot中4种数据水平分片策略

《SpringBoot中4种数据水平分片策略》数据水平分片作为一种水平扩展策略,通过将数据分散到多个物理节点上,有效解决了存储容量和性能瓶颈问题,下面小编就来和大家分享4种数据分片策略吧... 目录一、前言二、哈希分片2.1 原理2.2 SpringBoot实现2.3 优缺点分析2.4 适用场景三、范围分片

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

利用Python实现时间序列动量策略

《利用Python实现时间序列动量策略》时间序列动量策略作为量化交易领域中最为持久且被深入研究的策略类型之一,其核心理念相对简明:对于显示上升趋势的资产建立多头头寸,对于呈现下降趋势的资产建立空头头寸... 目录引言传统策略面临的风险管理挑战波动率调整机制:实现风险标准化策略实施的技术细节波动率调整的战略价

使用Python开发Markdown兼容公式格式转换工具

《使用Python开发Markdown兼容公式格式转换工具》在技术写作中我们经常遇到公式格式问题,例如MathML无法显示,LaTeX格式错乱等,所以本文我们将使用Python开发Markdown兼容... 目录一、工具背景二、环境配置(Windows 10/11)1. 创建conda环境2. 获取XSLT

Redis中6种缓存更新策略详解

《Redis中6种缓存更新策略详解》Redis作为一款高性能的内存数据库,已经成为缓存层的首选解决方案,然而,使用缓存时最大的挑战在于保证缓存数据与底层数据源的一致性,本文将介绍Redis中6种缓存更... 目录引言策略一:Cache-Aside(旁路缓存)策略工作原理代码示例优缺点分析适用场景策略二:Re

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命