能否提供一个实现动量投资策略的详细编程代码示例,用 python 语言编写
时间: 2024-12-29 18:29:48 浏览: 21
动量投资策略是一种基于历史价格走势的投资策略,它假设股票价格有惯性,即如果过去一段时间内价格上涨,那么在未来的一段时间内可能会继续保持上涨趋势。下面是一个简单的 Python 示例,使用pandas库和pandas_datareader库来获取数据,并利用ta-lib库计算技术指标(包括移动平均线和动量指标)。这个例子仅用于教学目的,实际交易需要考虑更多因素。
```python
# 导入所需库
import pandas as pd
import yfinance as yf
from ta import momentum
# 获取股票数据
def get_stock_data(ticker, start_date, end_date):
data = yf.download(ticker, start=start_date, end=end_date)
return data
# 动量投资策略函数
def momentum_strategy(data, lookback=90, fast_window=5, slow_window=20):
# 计算快慢两个周期的移动平均线
fast_mavg = data['Close'].rolling(window=fast_window).mean()
slow_mavg = data['Close'].rolling(window=slow_window).mean()
# 计算动量指标(例如相对强弱指数RSI)
rsi = momentum(data['Close'], window=lookback)['rsi_14']
# 判断动量是否积极(通常选择超过70作为买入信号,低于30作为卖出信号)
buy_signal = rsi > 70
sell_signal = rsi < 30
# 创建一个买卖信号列
signals = buy_signal.astype(int) - sell_signal.astype(int)
# 根据信号持有或卖出股票
positions = signals.diff().fillna(0)
# 模拟交易
portfolio_value = data['Close'].cumsum() * positions
return portfolio_value
# 使用示例
ticker = 'AAPL' # Apple公司的股票
start_date = '2010-01-01'
end_date = '2022-12-31'
data = get_stock_data(ticker, start_date, end_date)
strategy_results = momentum_strategy(data)
print("策略结果:")
print(strategy_results)
阅读全文