魔改版小市值策略

策略思路

最近几年,小市值策略一直都收益不错(当然,不包含17年和18年)。小市值因子对收益的影响是很大的。特别是行情不好的时候,大家都忙着炒作热点,那么这时候符合题材的小市值更加符合炒作标准了。

为什么说是魔改版的小市值策略呢,因为最终选取小市值的方法真的很玄学。

上收益效果图:
在这里插入图片描述
三年多,有7.45倍的收益,实属夸张了哈。有这个收益,还要什么自行车啊。

那么,这个策略玄学在哪里呢。

核心想法:

1、选取100个市值最小的股票,剔除ST股、次新股、科创板、北交所股票等等。

2、从剩下的股票中对证券代码进行排序,这就是最玄学的地方。然后选取排序靠前的5只股票。

3、每周第一个交易日早上进行轮换。

核心代码

def monthly_filter(context):today = context.current_dtyesterday = today -  datetime.timedelta(days=1)start_day = today -  datetime.timedelta(days=375)yesterday = yesterday.strftime('%Y-%m-%d')# 选出小市值的股票q = query(valuation.code,valuation.circulating_market_cap).filter(valuation.circulating_market_cap.between(0,1000)).order_by(valuation.circulating_market_cap.asc()).limit(100)codes = get_fundamentals(q).code.tolist()# 筛选出主板、创业板股票codes = [code for code in codes if code[:2] in ('60','00','30')]# log.info("Top 10 小市值:" + str(codes[:10]))# 过滤ST股票df = get_extras('is_st', codes, end_date=yesterday,count=1)df = df.Tdf.columns = ['is_st']df=df[df['is_st']==0]codes = df.index.tolist()# 过滤次新股q = query(finance.STK_LIST.code).filter(finance.STK_LIST.start_date <=start_day,finance.STK_LIST.code.in_(codes))codes = list(finance.run_query(q).code)g.pools = set(codes)def weekly_filter(context):today = context.current_dtyesterday = today -  datetime.timedelta(days=1)start_day = today -  datetime.timedelta(days=375)yesterday = yesterday.strftime('%Y-%m-%d')codes = list(g.pools)if codes != []:# 过滤ST股票df = get_extras('is_st', codes, end_date=yesterday,count=1)df = df.Tdf.columns = ['is_st']df=df[df['is_st']==0]codes = df.index.tolist()# codes = filter_st_stock(codes)g.pools = set(codes)else:# 选出小市值的股票q = query(valuation.code,valuation.circulating_market_cap).filter(valuation.circulating_market_cap.between(0,1000)).order_by(valuation.circulating_market_cap.asc()).limit(100)codes = get_fundamentals(q).code.tolist()# 筛选出主板、创业板股票codes = [code for code in codes if code[:2] in ('60','00','30')]# 过滤ST股票df = get_extras('is_st', codes, end_date=yesterday,count=1)df = df.Tdf.columns = ['is_st']df=df[df['is_st']==0]codes = df.index.tolist()# 过滤次新股q = query(finance.STK_LIST.code).filter(finance.STK_LIST.start_date <= start_day,finance.STK_LIST.code.in_(codes))codes = list(finance.run_query(q).code)g.pools = set(codes)# log.info('每周五选定的股票:', g.pools)#1-1 准备股票池
def prepare_stock_list(context):#获取已持有列表g.hold_list= list(context.portfolio.positions.keys())#获取昨日涨停列表if g.hold_list != []:df = get_price(g.hold_list, end_date=context.previous_date, frequency='daily', fields=['close','high_limit'], count=1, panel=False, fill_paused=False)df = df[df['close'] == df['high_limit']]g.yesterday_HL_list = list(df.code)else:g.yesterday_HL_list = []# 获取今天的日期today = context.current_dttoday_Year = today.strftime('%Y')NewYears = {'2010': '02-14', '2011': '02-03', '2012': '01-23', '2013': '02-10', '2014': '01-31', '2015': '02-19', '2016': '02-08', '2017': '01-28', '2018': '02-16', '2019': '02-05', '2020': '01-25', '2021': '02-12', '2022': '02-01', '2023': '01-22', '2024': '02-10', '2025': '01-29', '2026': '02-17', '2027': '02-06', '2028': '01-26', '2029': '02-13', '2030': '02-03'}spring_festival_date = NewYears[today_Year]#判断今天是否为账户资金再平衡的日期 或者 元旦到春节之间的日期g.no_trading_today_signal = today_is_between(context, '04-05', '04-30') or today_is_between(context, '01-01', spring_festival_date)def get_stock_list(context):final_list = set()initial_list = list(g.pools)if len(initial_list) == 0:return []initial_list = filter_paused_stock(initial_list)initial_list = filter_st_stock(initial_list)today = context.current_dt# 通过timedelta算出前一天的日期delta = datetime.timedelta(days=1)yesterday = today - deltayesterday = yesterday.strftime('%Y-%m-%d')q = query(valuation.code, valuation.circulating_market_cap).filter(valuation.code.in_(initial_list)).limit(g.stock_num)codes = get_fundamentals(q).code.tolist()circulating_market_cap_list = get_fundamentals(q).circulating_market_cap.tolist()log.info('数据库拉取的股票数量:{}'.format(len(codes)))log.info('最小市值:{}, 最大市值:{}'.format(min(circulating_market_cap_list), max(circulating_market_cap_list)))final_list = codes.copy()print('final_list数量:{}'.format(len(final_list)))final_list = filter_paused_stock(final_list)print('过滤停牌后的股票数量:{}'.format(len(final_list)))final_list = filter_st_stock(final_list)log.info('每周一买入的股票数量:'.format(len(final_list)))return final_list#1-3 整体调整持仓
def weekly_adjustment(context):if g.no_trading_today_signal:return#获取应买入列表 target_list = get_stock_list(context)#调仓卖出for stock in g.hold_list:if (stock not in target_list) and (stock not in g.yesterday_HL_list):log.info("卖出[%s]" % (stock))order_target(stock, 0)else:log.info("已持有[%s]" % (stock))#调仓买入position_count = len(context.portfolio.positions)target_num = len(target_list)if target_num > position_count:value = context.portfolio.cash / (target_num - position_count)for stock in target_list:if context.portfolio.positions[stock].total_amount == 0:if open_position(stock, value):if len(context.portfolio.positions) == target_num:break

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/230208.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Superset服务安装

文章目录 Superset概述Superset应用场景Superset安装及使用安装Python环境安装Miniconda下载Miniconda(Python3版本)安装Miniconda取消每次登陆自动激活conda base环境创建Python3.7(Superset)环境配置conda国内镜像创建Superset环境激活Superset环境查看python版本 Superset部…

AWS(三):如何在AwsManagedAd目录和windowsAD实例之间建立双向信任。

前提&#xff1a; 1.创建好了一个AWS managed AD目录&#xff0c;我的目录域名为:aws.managed.com 2.创建好了一个windows AD实例并提升了为域控服务器,实例域名为:aws2.com 看过我AWS 一和二的应该都会创建windows实例了&#xff0c;切记不能将其无缝加入到aws managed AD的…

Vue 模板编译原理解析

Vue 模板编译原理解析 模板编译整体流程 首先我们看一下什么是编译&#xff1f; 所谓编译&#xff08;Compile&#xff09;&#xff0c;指的是将语言 A 翻译成语言 B&#xff0c;语言 A 就被称之为源码&#xff08;source code&#xff09;&#xff0c;语言 B 就被称之为目标…

【QML】与 C++ 混合编程:互相调用函数

文章目录 qml 调用 C 函数案例 a&#xff1a;Q_INVOKABLE 标记 C 函数 视图设置进 qml 属性案例 b&#xff1a;qml 通过发送信号的方式&#xff0c;调用 Qt 槽函数 C调用qml函数 qml 调用 C 函数 qml 要使用 C 的函数有两个方法&#xff1a; 一种是&#xff0c;用 Q_INVOKABLE…

STM32 学习(三)OLED 调试工具

目录 一、简介 二、使用方法 2.1 接线图 2.2 配置引脚 2.3 编写代码 三、Keil 工具调试 一、简介 在进行单片机开发时&#xff0c;有很多调试方法&#xff0c;如下图&#xff1a; 其中 OLED 就是一种比较好用的调试工具&#xff1a; OLED 硬件电路如下&#xff0c…

7步教你如何快速建立电子商务网站

如果您需要以客户为中心搭建电子商务网站&#xff0c;或者您正在寻求开展电子商务业务&#xff0c;那么您很幸运——现在是开始的最佳时机&#xff01;事实上&#xff0c;在疫情期间&#xff0c;电子商务销售额增长了 50%。电子商务现在是一个价值 8700 亿美元的产业。随着如此…

深入了解Apache 日志,Apache 日志分析工具

Apache Web 服务器在企业中广泛用于托管其网站和 Web 应用程序&#xff0c;Apache 服务器生成的原始日志提供有关 Apache 服务器托管的网站如何处理用户请求以及访问您的网站时经常遇到的错误的重要信息。 什么是 Apache 日志 Apache 日志包含 Apache Web 服务器处理的所有事…

rime中州韵小狼毫 inputShow lua Filter 输入字符透传滤镜

在 rime中州韵小狼毫 inputShow lua Translator 一文中&#xff0c;我们通过 inputShow.lua 定制了 inputShow_translator&#xff0c;这使得我们的输入方案可以将用户输入的字符透传到候选列表中来。如下&#x1f447;&#xff1a; &#x1f446;上图中我们在候选列表中看到了…

音视频通信

文章目录 一、音视频通信流程二、流媒体协议1、RTSP2、RTMP3、HLS4、WebRTC 一、音视频通信流程 音视频通信完整流程有如下几个环节&#xff1a;采集、编码、前后处理、传输、解码、缓冲、渲染等。 每一个细分环节&#xff0c;还有更细分的技术模块。比如&#xff0c;前后处…

[足式机器人]Part2 Dr. CAN学习笔记-Ch01自动控制原理

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-Ch01自动控制原理 1. 开环系统与闭环系统Open/Closed Loop System1.1 EG1: 烧水与控温水壶1.2 EG2: 蓄水与最终水位1.3 闭环控制系统 2. 稳定性分析Stability2.1 序言2.2 稳定的分类2.3 稳定的对…

[蓝桥杯2020国赛]答疑

答疑 题目描述 有 n 位同学同时找老师答疑。每位同学都预先估计了自己答疑的时间。 老师可以安排答疑的顺序&#xff0c;同学们要依次进入老师办公室答疑。 一位同学答疑的过程如下&#xff1a; 首先进入办公室&#xff0c;编号为 i 的同学需要 si​ 毫秒的时间。然后同学问…

2020年认证杯SPSSPRO杯数学建模D题(第一阶段)让电脑桌面飞起来全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 D题 让电脑桌面飞起来 原题再现&#xff1a; 对于一些必须每天使用电脑工作的白领来说&#xff0c;电脑桌面有着非常特殊的意义&#xff0c;通常一些频繁使用或者比较重要的图标会一直保留在桌面上&#xff0c;但是随着时间的推移&#xff0c;…

Java数据结构:1. 数据结构前置知识

文章目录 一、初识数据结构二、初识集合框架1. 什么是集合框架2. 集合框架的重要性3. 背后所涉及的数据结构以及算法 三、时间复杂度空间复杂度1. 算法效率2. 时间复杂度&#xff08;1&#xff09;概念&#xff08;2&#xff09;大O的渐进表示法&#xff08;3&#xff09;推导大…

捕捉“五彩斑斓的黑”:锗基短波红外相机的多种成像应用

红外处于人眼可观察范围以外&#xff0c;为我们了解未知领域提供了新的途径。红外又可以根据波段范围&#xff0c;分为短波红外、中波红外与长波红外。较短的SWIR波长——大约900nm-1700nm——与可见光范围内的光子表现相似。虽然在SWIR中目标的光谱含量不同&#xff0c;但所产…

PostgreSQL荣获DB-Engines 2023年度数据库

数据库流行度排名网站 DB-Engines 2024 年 1 月 2 日发布文章宣称&#xff0c;PostgreSQL 荣获 2023 年度数据库管理系统称号。 PostgreSQL 在过去一年中获得了比其他 417 个产品更多的流行度增长&#xff0c;因此获得了 2023 年度 DBMS。 DB-Engines 通过计算每种数据库 2024 …

Amazon CodeWhisperer 免费 AI 代码生成助手体验分享

今年上半年&#xff0c;亚马逊云科技正式推出了实时AI编程助手 Amazon CodeWhisperer&#xff0c;还提供了供所有开发人员免费使用的个人版版本。经过一段时间的体验&#xff0c;我觉得 CodeWhisperer 可以处理编程工作中遇到的很多问题&#xff0c;并且帮助开发人员提高编程效…

高德地图经纬度坐标导出工具

https://tool.xuexiareas.com/map/amap 可以导出单个点&#xff0c;也可以导出多个&#xff0c;多个点可以连成线&#xff0c;可用于前端开发时自己模拟“线“数据

【Apache Doris】自定义函数之 JAVA UDF 详解

【Apache Doris】自定义函数之 JAVA UDF 详解 一、背景说明二、原理简介三、环境信息3.1 硬件信息3.2 软件信息 四、IDE准备五、JAVA UDF开发流程5.1 源码准备5.1.1 pom.xml5.1.2 JAVA代码 5.2 mvn打包5.2.1 clean5.2.2 package 5.3 函数使用5.3.1 upload5.3.2 使用 六、注意事…

华为端口隔离高级用法经典案例

最终效果&#xff1a; pc4不能ping通pc5&#xff0c;pc5能ping通pc4 pc1不能和pc2、pc3通&#xff0c;但pc2和pc3能互通 vlan batch 2 interface Vlanif1 ip address 10.0.0.254 255.255.255.0 interface Vlanif2 ip address 192.168.2.1 255.255.255.0 interface MEth0/0/1 i…

服务器防护怎么做

随着网络攻击的日益猖獗&#xff0c;服务器安全已成为关注的焦点。如何有效防御各种网络威胁&#xff0c;确保数据安全与业务连续性&#xff0c;已成为一项迫切的需求。目前服务器所面临的主要威胁包括但不限于&#xff1a;DDoS攻击、SQL注入、跨站脚本攻击(XSS)、远程命令执行…