周内效应对ETF定投的影响分析

【python股票量化_21股市精华帖_策略7篇】基于周内效应的A股择时实证和思考 python股票量化_21股市精华帖_策略7篇】基于周内效应的A股择时实证和思考 阅读详情

研究表明,A股市场存在显著的周内效应,且在不同的市场状态下有所差异。大多数指数在周一的平均收益率最高,周四的平均收益率最低。在上涨市场中,周一和周五的收益率显著为正。在下跌市场中,周二和周三表现相对较好,周一和周四收益率显著为负。根据网友们的回测分析,总体来说,周一表现最好,其次是周五,而周四表现最差。

下面我们来看下ETF基金是否也存在相同的问题,以及大盘和小盘的表现是否有区别。

一、指数基金的周内效应分析

1.涨跌幅统计

这里对沪深300ETF(510300)和创业板ETF(159915)从上市交易以来到2020年9月20日的每个工作日的涨跌幅进行统计,结果如下:

从统计结果看,跟A股一样,沪深300ETF和创业板ETF都是周四跌的最多。周三和周四的涨幅均值和中位数都为负,其它几天涨幅的均值和中位数均为正。胜率方面周三和周四都低于50%。沪深300ETF在一周之中表现最好的是周五,其次是周二,但是这两天的都胜率低于周一;创业板ETF在一周之中表现最好的是周一,其次是周二。

2.周内每日净值统计

假设ETF每周只有某一个工作日,其他交易日不考虑。此时ETF的净值就只和该工作日的涨跌幅有关。这样把每周所有工作日的指数画出来,就能清楚的知道市场的表现。

上图图中的5条曲线分别对应一周内5个工作日的净值。对于沪深300ETF,周五一直表现不错,最终净值为1.59;周二近几年表现也不错,最终净值为1.53;周四表现最差,最终净值为0.76。对于创业板ETF,周二表现最好,最终净值为2.48;周一一和周五也不错,在1.7左右;周四表现最差,最终净值只有0.51。

从上面的数据可以看到,ETF指数基金同样有周内效应,只是大盘和小盘的表现不太一样。

周内效应分析的思路和程序都参考了邢大的文章,链接如下:

https://blog.youkuaiyun.com/xingbuxing_py/article/details/109215223

因为数据来源不同,而且索引之类的设置不太一样,做了一下修改,代码如下:

import akshare as ak
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import pandas as pd


# 工作日涨跌幅统计
def workday_statistics(df):
    df['change'] = df['close']/df['close'].shift(1) - 1
    df = df[df['date'] >= pd.to_datetime('20060101').strftime('%Y-%m-%d')]
    df = df[df['date'] <= pd.to_datetime('20200920').strftime('%Y-%m-%d')]
    # 计算工作日
    df['datex'] = pd.to_datetime(df['date'])
    df['week'] = df['datex'].dt.dayofweek
    df['week'] += 1
    # 统计各个工作日的均值,涨跌幅等
    result = df.groupby('week')['change'].describe()
    temp1 = df.groupby('week')['change'].size()
    temp2 = df[df['change'] > 0].groupby('week')['change'].size()
    result['胜率'] = temp2 / temp1
    print(result.T)
    return df


# 统计各个工作日净值
def week_statistics(df, name):
    temp = df[['date', 'week', 'close']].copy()
    mon_df = df[df['week'] == 1].copy()
    tue_df = df[df['week'] == 2].copy()
    wed_df = df[df['week'] == 3].copy()
    thu_df = df[df['week'] == 4].copy()
    fri_df = df[df['week'] == 5].copy()
    mon_df['equity_mon'] = (mon_df['change'] + 1).cumprod()
    tue_df['equity_tue'] = (tue_df['change'] + 1).cumprod()
    wed_df['equity_wed'] = (wed_df['change'] + 1).cumprod()
    thu_df['equity_thu'] = (thu_df['change'] + 1).cumprod()
    fri_df['equity_fri'] = (fri_df['change'] + 1).cumprod()
    # 合并
    temp['equity_mon'] = mon_df['equity_mon']
    temp['equity_tue'] = tue_df['equity_tue']
    temp['equity_wed'] = wed_df['equity_wed']
    temp['equity_thu'] = thu_df['equity_thu']
    temp['equity_fri'] = fri_df['equity_fri']
    # 填充
    equity_list = ['equity_mon', 'equity_tue', 'equity_wed', 'equity_thu', 'equity_fri']
    name_list = ['周一', '周二', '周三', '周四', '周五']
    k = 0
    plt.rcParams['font.sans-serif'] = ['SimHei']
    for i in equity_list:
        temp[i].fillna(method='ffill', inplace=True)
        temp[i].fillna(value=1, inplace=True)
        plt.plot(temp['date'], temp[i], label=name_list[k])
        k += 1
    print("周一:%s" % temp['equity_mon'].iloc[-1])
    print("周二:%s" % temp['equity_tue'].iloc[-1])
    print("周三:%s" % temp['equity_wed'].iloc[-1])
    print("周四:%s" % temp['equity_thu'].iloc[-1])
    print("周五:%s" % temp['equity_fri'].iloc[-1])
    plt.gca().xaxis.set_major_locator(ticker.MultipleLocator(100))  # 设置x轴密度
    plt.xticks(rotation=45)  # 旋转45度显示
    plt.legend(loc='best')
    plt.title(name + "周内效应净值对比")
    plt.savefig('ETF周内效应净值对比-' + name + '.png')
    plt.show()


code = '510300'
# code = '159915'
df_small = pd.read_csv(code + '.csv', encoding='gbk')
data = df_small[['交易日期', '开盘价', '最高价', '最低价', '收盘价', '成交量']].copy()
# 列名改为英文方便下面操作
data.rename(columns={'交易日期': 'date', '开盘价': 'open', '最高价': 'high', '最低价': 'low',
                     '收盘价': 'close', '成交量': 'volume'}, inplace=True)
data.index = pd.to_datetime(data.date)
data.index = data.index.strftime('%Y%m%d')
data = data.sort_index()
data['change'] = data['close'].pct_change(periods=1)  # 计算涨跌幅=change

df = workday_statistics(data)
week_statistics(df, code)

二、定投的周内效应分析

那么A股的周内效应对于基金定投有没有影响呢?本文针对这一问题,对基金定投的周内效应进行回测。标的还是沪深300ETF(510300)和创业板ETF(159915),选择在周一至周五进行分别进行定投,金额未1000元,在每个交易日以开盘价买入后一直持有,回测开始时间为2012年1月1日,周期分别为3年、5年和10年,手续费为0.03%,没有印花税,没有考虑滑点问题。

3年定投回测结果如下(表格的上一半为159915,下一半为510300):

5年定投回测结果如下:

10年定投回测结果如下:

表格看起来好像不太直观,还是年化收益柱状图好看一点。

从以上数据可以看出,不管是大盘指数还是小盘指数,周内不同时间定投收益的最大差别不会超过2%,也就是说在每周的哪一天定投的最终收益差别非常小。对于长期的ETF定投来说,周内效应的差别基本可以忽略,大家也不用费心去想这个了。

下面来看下ETF定投的最大回撤情况。

从上图可以看到,同一个ETF基金的3年、5年和10年定投最大回撤在周内的差异也非常小,跟年化收益情况类似。

原本还打算试一下周内避开表现差的日子最终收益是否有差别,从以上结果看如果不做其他动作,纯粹的定投持有不动,差别其实不大。

另外对于以开盘价还是收盘价定投,经过回测发现差别也非常小,这里就不详细说明了。

根据以上回测结果,创业板ETF的收益长期要远远高于沪深300ETF,但是对应的最大回撤也较大。收益差别这么大的主要原因我猜是因为创业板ETF的初始净值较低,在定投初期能够买到更多的份额,然后在时间复利的作用下,到后期就会被放大。后面有时间的话对这个因素做一个回测,看看猜的对不对:)~~~~

-----------------------------------

原创不易,请多支持!

A股市场周内效应研究 引言 >>> 研究目的 本文参考东吴证券研报《A股市场的周内效应》内容,对A股市场的日历效应在周内表现进行探索。日历效应,是一个鱼龙混杂的题目。有诙谐逗笑的,如马克吐温老先生的段子:十月,这是股市最危险的月份,其他危险的月份有七月、一月、九月、四月、十一月、五月、三月、六月、十二月、八月和二月。有认真总结的,如华尔街那个著名谚语:Sell in May ... 阅读详情

相关推荐

Pandas入门教程(二十二):股票数据分析实战——yfinance 获取数据、技术指标与收益率分析

把 Pandas 用在真实场景,才能体会它的价值。本文以茅台股票为例,用 yfinance 获取历史行情,完成缺失值处理与列筛选,绘制收盘价曲线,计算 SMA 移动平均线与 RSI 相对强弱指数,并通过日收益率、累计收益率和波动率完成完整的量化分析流程。

Smell_of_earth的博客 287

基于A股周内效应择时策略验证与思考(附代码)

基于A股周内效应择时策略验证与思考 本文思路来自于东吴证券研报《A股市场的周内效应》内容,对A股市场的日历效应在周内表现进行探索。 上述研报的核心内容简述: 1、A股市场在股票指数和个股上存在“V型模式”的“周内效应”:周一行情最亢奋,其后逐渐走低,周四最低迷,周五轻微反弹。 2、在交易行为的层面也存在周内效应:大单成交的占比,周一最高,随后逐渐递减。 基本验证思路: 1、首先验证该研报所述结论是否正确。 2、如果正确,基于该周内效应是否能研发出alpha策略,避开最低迷的星期。 验证周内效应 设计思路:

qq_41648495的博客 3375

SpringBoot实现电子发票生成

电子发票是近年来比较流行的一种票据形式,它取代了以往传统的纸质发票,具有减少纸张浪费、方便有效查验等优点。本文将介绍如何使用Spring Boot和Vue.js构建一个仿真电子发票生成应用程序,借助微信二维码扫描功能和第三方库,实现用户扫描二维码获取发票信息并填写相关开票信息,最后生成电子发票。在本文中,我们介绍了如何使用Spring Boot和Vue.js构建一个仿真电子发票生成应用程序,借助微信二维码扫描功能和第三方库,实现用户扫描二维码获取发票信息并填写相关开票信息,最后生成电子发票。

不愧是暮言的博客 6090

【量化】一文整理所有日历效应,持股还是不持股过节清楚明了

日历效应(Calendar Effect)是指在特定的日期或时间段内,金融市场或经济活动中出现的统计上的规律或周期性现象。这些规律可能与特定日期、星期几、月份或季节等时间因素有关。根据众多研究者多年的研究总结,我们可以将日历效应划分为区间日历效应和时点日历效应两种。 在这篇报告中我们将梳理关注度较高的日历效应,并总结每一个日历效应的重要属性,随后进行风格、行业和个股的日历效应梳理,接着基于日历效应建立了策略回测。 此外本文还将对传统的因子选股模型进行日历效应风格轮动的改进,结果显示能够显著提高原选股策略

standingflower的博客 6516

Windows 11 的C盘User(用户)文件夹下的用户文件夹名称的修改

背景介绍:由于系统重装导致Windows 11的系统用户名与C盘User(用户)文件夹下的用户名文件夹(公用文件夹旁边的文件夹)出现名称不一致,事例中系统用户名命名为“寂萧”,User(用户)文件夹下的文件夹名称却是“77555”。【QQ邮箱前五位真的真的看着很别扭】注:改名有风险,三思而后行。User(用户)文件夹下的用户名是中文在某些软件的应用场景下产生不便,导致很多软件莫名其妙报错,甚至无法使用,笔者不建议修改为中文名。//和笔者一样的强迫症除外//

2302_79084172的博客 10万+

工程创新训练大赛智能网联车辆赛道LKA+自动驾驶9000+分数分案例

/获取主车在主车路径上的ST坐标。if (status == AVPStatus::eForwarding) // approaching the parking space接近阶段。if (status == AVPStatus::eForwarding) // approaching the parking space接近阶段。if (status == AVPStatus::eForwarding) // approaching the parking space接近阶段。

handsomeboyou的博客 1131

这么简单的量化策略,居然能跑赢大盘10倍 | A股周内效应

观前提醒,本文硬核,阅读时间较长 本文的由来要从9月10日星期四我发的一条朋友圈说起。 当天全球股市暴跌,基本上所有的主要指数都是绿的,我持仓股票比指数跌的还要多。 所以有那么点抑郁,收盘之后准备读研报静静心。但偏偏不巧读到了这篇研报: 它说平均来看,股市每周四的收益就是最低的。这仿佛间的嘲讽,又让我的不爽增加了几分。 也让我想起了传说中的“黑色星期四”——1929年10月24日,道琼斯单日跌幅一度高达10%,也开启了历史著名的“大萧条”。 ...

xingbuxing_py的博客 3282

LVGL多线程编程避坑指南:从音乐播放器项目看UI与后台任务如何安全协作

本文深入探讨LVGL在多线程环境下的安全协作问题,以音乐播放器项目为例,解析UI与后台任务(如mplayer音频播放器)的典型冲突场景。提供全局互斥锁规范、任务队列异步处理等核心策略,并分享mplayer进程集成方案与进度条优化技巧,帮助开发者规避界面卡顿、内存损坏等常见问题。

weixin_42531494的博客 131

Python+Agent入门笔记(二):列表推导式、模块和异常,这些写 Agent 前得会

接上一篇《Python+Agent入门笔记(一)》。基础语法跑通之后,这篇聊几块日常写脚本绕不开的东西。还是按 JS/Go 开发者的视角写,尽量记录我实际卡过的地方。

qq_41241612的博客 425

手把手教你为FPGA项目集成HyperRAM IP核:从AXI接口封装到上板调试全流程

本文详细介绍了如何为FPGA项目集成HyperRAM IP核,涵盖从AXI接口封装到上板调试的全流程。通过对比DDR3L、PSRAM和HyperRAM的性能指标,突出HyperRAM在低功耗和小封装尺寸方面的优势,并提供硬件连接、AXI4-Lite接口设计、状态机优化及调试技巧等实用内容,帮助开发者高效完成FPGA项目中的内存扩展。

weixin_32103009的博客 283

1.3、云计算HCIP融合存储产品及部署

目标:描述Oceanstor V3系列存储产品系统组成及产品定位 描述Oceanstor V3硬件结构及软件架构 掌握存储系统与主机系统之间的连接 一、存储型号 低端型存储:Oceanstor 2200 2600 2800 V3/V5 终端型存储:Oceanstor 5300 5500 5600 5800 6800 V3/V5 高端型存储:Oceanstor 18000 二、Oceanstor V3系列存储系统定位 OceanStor V3系列存储系统是华为根据存储产品应用现状和存储

weixin_43666279的博客 1652

详解Python条件语句

在 Python 中,if...else 是一种条件语句,可以根据给定的条件执行不同的操作。这个语句通常用于控制程序的流程。

2601_96798737的博客 204

【AI智能体】基于OpenCode 搭建Skills环境与项目实战开发详解

基于OpenCode 搭建Skills环境与项目实战开发详解

congge 8898

微调数据集构建:清洗、标注、格式转换完整流程

摘要解决微调数据直接抓取导致的噪声污染、模式崩溃与Token错位问题。适用于需为大模型SFT阶段构建高质量训练集的数据与算法工程师。读完可获得包含启发式清洗、MinHash去重及ChatML格式对齐的完整可运行数据流水线。关键词数据清洗、MinHash去重、数据标注、ChatML、SFT数据集、数据配比背景与问题大模型微调效果的上限由数据质量决定,直接使用未经处理的原始语料极易引发模型复读、幻觉与指令遵循能力退化。

2402_85729970的博客 468

安装并新建windows下wxwroks7.0 bootrom工程

安装licence,将zwrsLicense-vx7-perm.lic粘贴到安装目录C盘WindRiver/license下。现在双击Workbench 4,新建vxworks7.0工程,会出现下面的情况,因为没有licence。编译完成binaries下生成wxwroks x86格式,可以修改bootrom硬件信息的配置了。单击x86_wxwroks工程右键,build project编译工程。双击桌面Workbench 4打开,新建windows下工程。新建完成,选择finish。

wangjie36的博客 1921

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Python3 协程:异步编程的核心机制与实战

协程是解决I/O密集型任务等待瓶颈的高效机制,相比线程更轻量、无锁开销。从yield到async/await的演进,使异步编程语义清晰、易于理解。通过async/await可实现并发执行多个任务(如gather、create_task),显著提升网络请求、爬虫等场景性能。关键在于使用异步库(如aiohttp)替代同步库,避免阻塞事件循环。合理控制超时与并发数,才能发挥协程最大优势。

Lxn2zh的博客 158

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

python如何控制浏览器

Python 可以通过 Selenium、Playwright 等工具实现浏览器自动化,从打开网页到执行复杂交互操作均可脚本化完成。Selenium生态成熟

2601_96797912的博客 73

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

二进制木马免杀-Python 分离免杀与 Web 挂马

二进制木马免杀-Python 分离免杀与 Web 挂马

2503_94637398的博客 264

torch.compile 差异仅 1e-6,边界样本预测为何翻转

torch.compile 加速后输出与 eager 不一致,部分预测翻转。逐层对比与 graph break 分析定位到动态分支翻转根因。容差回归仅适用于无分支翻转场景,零容忍场景应禁用编译。

昨日种种,皆成今我。今日种种,皆成新我。 157

Python 100讲课程导航:第08篇《Python input 与类型转换:构建可靠的交互程序》

本文详解Python中input()的返回类型为字符串,强调必须通过int()、float()等函数进行类型转换。重点讲解了输入验证的重要性,结合try-except处理ValueError等异常,实现可靠的交互程序。通过购物预算计算器实战,演示如何防范非法输入、处理边界值,并推荐使用Decimal避免浮点精度问题,提升程序健壮性。

铭渊老黄 130

【Python】国家中小学智慧教育平台电子教材批量下载与 PDF 合成实战

成果:两本语文电子课本(一年级上册 118 页 / 23MB、三年级上册 130 页 / 30.3MB),合计 248 页、约 54MB,单本下载加合成 40~60 秒,PDF 页数校验全部通过。经验教训SPA 站点的数据接口优先从 bundle 里挖,比抓页面稳得多;资源链接要按 private/public 分组看待,只取平台公开部分;页数、目录名这类“可推断”的信息,永远用实际响应验证一次;受限环境里“能不能跑浏览器”要在方案定稿前确认。后续计划:这版 PDF 是图片版,没有文字层;

木头大左的博客 115

魔塔社区微调训练Qwen2-1.5B-Instruct模型并烧录到‌RK3568开发板教程

本文基于Ubuntu 22.04 + CUDA 13.0.3环境,使用LLaMA-Factory框架对Qwen2-1.5B-Instruct模型进行LoRA微调,训练儿童故事生成专用模型。通过配置qwen模板、制作alpaca格式数据集、执行sft训练并合并LoRA权重,最终将模型转换为GGUF格式,并量化为Q4_K_M以适配RK3568嵌入式平台。全程支持国产镜像加速下载与显存优化,实现高效轻量化部署。

浅清秋慕夏的博客 182

【回眸】DeepSeek V4.1 Flash 快速上手与实战

本文介绍如何高效本地部署开源大模型,通过现代化工具链实现分钟级环境搭建。聚焦显存优化、一键安装、代码调用与多轮对话实现,解决“显存不足”“连接超时”等痛点,提供参数调优与结构化输出技巧,助力开发者在离线场景下快速构建稳定、高效的本地推理系统。

啤酒鸭的物联网开发记录博客 193

智叟云集-手机证据抓取系统的工程结构与应用入口

本文系统阐述手机证据抓取系统的工程结构与应用入口,涵盖四大层面:工程目录划分(Android、Python服务、Web页面、测试与构建工具);Android组件通过Manifest声明可启动页面,主界面由MainActivity管理;Python服务通过run.py解析参数并启动FastAPI应用,支持远程访问;浏览器页面采用HTML/CSS/JS分离架构,静态资源通过路径关联,实现动态交互。各模块分工明确,协同构建可运行的采集系统。

2301_77178996的博客 228

利用python中matplotlib.pyplot库绘制图

plt.plot(x,y) # x,y是每个点的坐标,plot()把每个点按顺序画折线。plt.subplots(2,2)表示绘制2*2的子图布局,axs[0,0]表示在第0行第0列绘制子图...coordinates_i[:,0]表示获取每一行(每一个spot)的第0列(x坐标)coordinates_i[:,1]表示获取每一行(每一个spot)的第0列(y坐标)plot.subplot(2,2,1) 表示子图布局是2*2的,开始绘制第一个。也可以导入数据绘制。可以设置color属性,设置颜色。

qq_46147236的博客 98

【AI】方案设计:通用慢节奏策略游戏大模型智能体流水线开发架构设计——基于 OODA 文件总线与可插拔协议适配层

本方案设计了一种面向慢节奏策略游戏的通用智能体架构,通过C++与Python协同构建协议适配层,实现游戏状态与控制指令的解耦。核心采用文件目录作为唯一总线,基于OODA循环分阶段处理态势感知、研判、决策与执行,支持多协议接入、可审计回放、人在回路干预及自愈容错。大模型仅依赖统一结构化简报与通用指令,具备高兼容性与可扩展性,适用于复杂推演场景。

hknaruto的专栏 162
上一篇: ETF基金定投策略回测分析
下一篇: ETF大小盘轮动策略回测分析
--莫名--
博客等级 码龄24年 653粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值