统计纳斯达克周一与前一交易日周五走势相同的次数
统计纳斯达克周一与前一交易日周五走势相同的次数
需求说明
需要对比纳斯达克指数每个周一的日行情表现(上涨/下跌/持平)与前一交易日的周五表现,若二者走势一致则计入统计,最终输出符合条件的次数。已完成的工作包括:
- 标记当日行情为
RIALZO(上涨)、RIBASSO(下跌)或FLAT(持平) - 筛选出所有周一和周五的行情数据
完整实现代码
import yfinance as yf import pandas as pd import numpy as np # 下载纳斯达克期货数据 database = yf.download('NQ=F') df = pd.DataFrame(database) # 添加星期列 df["Day's name"] = df.index.to_series().dt.day_name() # 删除不需要的列(需赋值回df才会生效) df = df.drop(columns=['Adj Close', 'Volume']) # 标记每日行情表现:修正原代码的拼写错误(RIBASS0 → RIBASSO) conditions = [ df['Close'] - df['Open'] > 0, df['Close'] - df['Open'] < 0, df['Close'] - df['Open'] == 0 ] categories = ['RIALZO', 'RIBASSO', 'FLAT'] df['Daily Performance'] = np.select(conditions, categories, default='Unknown') # 筛选周一和周五的数据 monday_mask = df["Day's name"] == 'Monday' friday_mask = df["Day's name"] == 'Friday' df_mask = df[monday_mask | friday_mask].copy() # 按日期排序,确保时序逻辑正确 df_mask = df_mask.sort_index() # 为每个周一匹配前一个交易日的周五行情表现 df_mask['Prev Friday Performance'] = np.where( df_mask["Day's name"] == 'Monday', df_mask['Daily Performance'].shift(1), np.nan ) # 统计走势相同的次数 match_count = df_mask[ (df_mask["Day's name"] == 'Monday') & (df_mask['Daily Performance'] == df_mask['Prev Friday Performance']) ].shape[0] print(f"周一与前一交易日周五走势相同的次数:{match_count}")
关键步骤说明
- 修正拼写错误:原代码中
RIBASS0为笔误,改为RIBASSO保证分类标识一致性 - 关联周一与对应周五:通过
shift(1)获取每个周一的前一行数据(因已筛选周一/周五且按日期排序,前一行即为上一个交易日的周五) - 计数逻辑:仅针对周一数据,对比当日表现与前一交易日周五的表现,统计匹配的行数
内容的提问来源于stack exchange,提问作者Patrizio
相关产品推荐
相关产品推荐

