用Python分析费城半导体指数16连涨:技术指标实战代码

0 阅读2分钟

大家好,我是船长。

今天看到费城半导体指数16连涨,创下历史纪录。作为数据分析师,我第一反应是:能不能用Python分析一下这背后的技术信号?

结果发现了一些有意思的规律。

一、为什么费城半导体指数值得关注?

2026年4月22日,费城半导体指数(SOX)连续16个交易日上涨,这是有史以来最长连涨纪录。

这个指数涵盖了英伟达、英特尔、AMD、台积电、高通等全球最重要的半导体公司,它的走势基本代表了AI算力赛道的冷热。

今天船长用Python做了个简单的技术分析,看看这波行情有什么规律。

二、环境准备

import pandas as pd
import numpy as np
import yfinance as yf
import matplotlib.pyplot as plt
from datetime import datetime, timedelta

# 设置中文显示
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS', 'SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 费城半导体指数代码:SOXX
symbol = "SOXX"

三、获取数据

# 获取近一年的数据
end_date = datetime.now()
start_date = end_date - timedelta(days=365)

df = yf.download(symbol, start=start_date, end=end_date)
print(f"数据范围:{df.index[0].strftime('%Y-%m-%d')} 至 {df.index[-1].strftime('%Y-%m-%d')}")
print(f"数据条数:{len(df)}")
df.tail()

四、计算核心技术指标

# 1. 移动平均线
df['MA5'] = df['Close'].rolling(window=5).mean()
df['MA10'] = df['Close'].rolling(window=10).mean()
df['MA20'] = df['Close'].rolling(window=20).mean()

# 2. RSI相对强弱指标
delta = df['Close'].diff()
gain = (delta.where(delta > 0, 0)).rolling(window=14).mean()
loss = (-delta.where(delta  0

# 用简单算法计算连涨序列
streaks = []
current_streak = 0
for i, row in df.iterrows():
    if row['Up_Day']:
        current_streak += 1
    else:
        current_streak = 0
    streaks.append(current_streak)

df['Consecutive_Up'] = streaks

# 获取最新连涨天数
latest_streak = df['Consecutive_Up'].iloc[-1]
print(f"当前连续上涨天数:{latest_streak}")

# 获取历史最高连涨记录
max_streak = df['Consecutive_Up'].max()
print(f"历史最高连涨天数:{max_streak}")

六、分析结果

# 最新收盘数据
latest = df.iloc[-1]
print("=" * 50)
print(f"最新交易日:{df.index[-1].strftime('%Y-%m-%d')}")
print(f"收盘价:${latest['Close']:.2f}")
print(f"RSI(14):{latest['RSI']:.2f}")
print(f"MACD:{latest['MACD']:.4f}")
print(f"Signal:{latest['Signal']:.4f}")
print("=" * 50)

# 技术信号判断
def get_signal(rsi, macd, signal):
    signals = []
    if rsi > 70:
        signals.append("RSI超买")
    elif rsi  signal:
        signals.append("MACD金叉")
    else:
        signals.append("MACD死叉")
    
    return " + ".join(signals)

signal = get_signal(latest['RSI'], latest['MACD'], latest['Signal'])
print(f"技术信号:{signal}")

七、关键发现

1. RSI处于历史高位

费城半导体指数当前RSI已经超过70,进入超买区间。这意味着短期内可能存在回调压力。

2. MACD依然强势

MACD线在Signal线上方,且Histogram柱状图为正,说明中期趋势依然强劲。

3. 16连涨是历史极限

从历史数据看,16连涨是费城半导体指数从未出现过的记录。根据均值回归理论,这种极端行情之后往往会有一波调整。

八、投资建议(仅供参考)

船长不是荐股,但这几个信号值得关注:

① 如果你持有相关股票:可以考虑分批减仓,锁定部分利润

② 如果你想入场:等待回调再买,不要追高

③ 如果你是定投用户:继续定投,不要因为短期波动改变计划

船长的话:

技术分析不是万能的,但它能帮我们看清市场情绪。费城半导体指数16连涨,说明市场对AI算力的预期非常乐观。

但船长见过太多人在高位冲进去被套。记住:市场永远不缺少机会,缺少的是耐心。

九、完整代码

import pandas as pd
import numpy as np
import yfinance as yf
import matplotlib.pyplot as plt
from datetime import datetime, timedelta

# 配置
symbol = "SOXX"  # 费城半导体指数
start_date = datetime.now() - timedelta(days=365)

# 获取数据
df = yf.download(symbol, start=start_date)

# 计算技术指标
df['MA20'] = df['Close'].rolling(window=20).mean()
df['RSI'] = 100 - (100 / (1 + 
    (df['Close'].diff().where(df['Close'].diff() > 0, 0).rolling(14).mean() /
     -df['Close'].diff().where(df['Close'].diff() < 0, 0).rolling(14).mean())
))

exp12 = df['Close'].ewm(span=12).mean()
exp26 = df['Close'].ewm(span=26).mean()
df['MACD'] = exp12 - exp26
df['Signal'] = df['MACD'].ewm(span=9).mean()

# 输出最新状态
latest = df.iloc[-1]
print(f"收盘价: ${latest['Close']:.2f}")
print(f"RSI(14): {latest['RSI']:.2f}")
print(f"MACD: {latest['MACD']:.4f}")

完整代码已上传到GitHub,有需要的可以评论区留言。

如果你觉得有用,转给需要的人。

我是船长,我们下期见。