用python写一个海归交易法策略
时间: 2023-07-18 10:27:00 浏览: 83
好的,以下是一个简单的Python海归交易法策略,它使用了中长期均线策略、动量策略和波动率策略:
```python
import numpy as np
import pandas as pd
import yfinance as yf
# 下载股票数据
stock = yf.Ticker('AAPL') # 下载Apple股票数据
df = stock.history(period='max')
# 计算中长期均线
df['ma20'] = df['Close'].rolling(20).mean()
df['ma60'] = df['Close'].rolling(60).mean()
# 计算动量指标
df['momentum'] = df['Close'].pct_change(12)
# 计算波动率指标
df['volatility'] = df['Close'].rolling(30).std()
# 计算交易信号
df['signal'] = np.where((df['Close'] > df['ma20']) & (df['Close'] > df['ma60']) & (df['momentum'] > 0) & (df['volatility'] < 0.1), 1, 0)
# 计算每日收益率
df['return'] = df['Close'].pct_change()
# 计算策略收益率
df['strategy_return'] = df['signal'].shift(1) * df['return']
# 计算累计收益率
df['cum_return'] = (df['strategy_return']+1).cumprod()
# 输出最终结果
print(df.tail())
```
该策略的基本思路是:当股价同时满足中长期均线上升、动量指标为正、波动率较低时买入,否则卖出。策略的实现过程比较简单,主要分为如下几个步骤:
1. 下载股票数据:这里使用了yfinance库下载Apple股票的历史数据;
2. 计算中长期均线:使用pandas库的rolling函数计算20日均线和60日均线;
3. 计算动量指标:使用pandas库的pct_change函数计算12个月的动量指标;
4. 计算波动率指标:使用pandas库的rolling函数计算30日收盘价的标准差;
5. 计算交易信号:当股价同时满足中长期均线上升、动量指标为正、波动率较低时产生买入信号,否则产生卖出信号;
6. 计算每日收益率:使用pandas库的pct_change函数计算每日收益率;
7. 计算策略收益率:当产生买入/卖出信号时买入/卖出,计算持仓收益率;
8. 计算累计收益率:计算策略的累计收益率。
上述代码是一个简单的海归交易法策略的示例,你可以根据自己的需求进行修改和优化。
阅读全文