前言
很多散户想学量化,但觉得门槛太高。其实用Python实现一个简单的选股策略,并没有那么难。本文将手把手教你用Python写出第一个可以跑通的选股策略。
一、什么是量化投资?
量化投资就是用数学模型和计算机程序来指导投资决策,特点是:
- 纪律性强:严格按照策略执行,不受情绪影响
- 反应快:程序可以同时处理成千上万只股票
- 覆盖面广:可以回测历史数据,验证策略有效性
二、环境准备
你需要安装Python,然后安装以下库:
pip install akshare pandas numpy
akshare 是一个免费的A股数据接口,非常适合新手使用
三、第一个选股策略
下面是一个简单的MACD金叉选股策略:
import akshare as ak
import pandas as pd
import numpy as np
# 获取股票数据(以平安银行000001为例)
stock_df = ak.stock_zh_a_hist(
symbol="000001",
period="daily",
start_date="20230101",
end_date="20231231"
)
# 计算MACD指标
stock_df[EMA12] = stock_df[收盘].ewm(span=12).mean()
stock_df[EMA26] = stock_df[收盘].ewm(span=26).mean()
stock_df[DIF] = stock_df[EMA12] - stock_df[EMA26]
stock_df[DEA] = stock_df[DIF].ewm(span=9).mean()
stock_df[MACD] = 2 * (stock_df[DIF] - stock_df[DEA])
# 金叉信号:DIF从下方穿越DEA
def get_signal(row, df, idx):
if idx == 0:
return 0
prev = df.iloc[idx-1]
if row[DIF] > row[DEA] and prev[DIF] = prev[DEA]:
return -1 # 死叉
return 0
stock_df[signal] = [get_signal(row, stock_df, i) for i, row in stock_df.iterrows()]
# 选出金叉的日期
golden_cross = stock_df[stock_df[signal] == 1]
print(f"MACD金叉次数: {len(golden_cross)}")
print(golden_cross[[日期, 收盘, DIF, DEA]])
四、回测一下
光有选股信号还不够,我们需要知道这个策略在过去能不能赚钱:
# 简单回测框架
def backtest(df, initial_money=100000):
money = initial_money
position = 0 # 持仓股数
buy_price = 0
for i, row in df.iterrows():
if row[signal] == 1 and position == 0: # 金叉买入
position = money // row[收盘]
buy_price = row[收盘]
money = money - position * buy_price
print(f"买入: {row[日期]}, 价格: {buy_price}")
elif row[signal] == -1 and position > 0: # 死叉卖出
money = position * row[收盘]
print(f"卖出: {row[日期]}, 价格: {row[收盘]}")
position = 0
# 最终收益
final_value = money + position * df.iloc[-1][收盘]
return_final_value = (final_value - initial_money) / initial_money * 100
print(f"最终资金: {final_value:.2f}")
print(f"收益率: {return_final_value:.2f}%")
# 运行回测
backtest(stock_df)
五、策略优化方向
这只是一个最简单的示例。真正的量化投资需要考虑:
- 手续费和滑点:实盘交易成本
- 仓位管理:每次买多少
- 风险控制:止损止盈
- 多因子组合:多个指标结合
六、MACD策略的优缺点
优点:
- 指标计算简单,容易理解
- 在趋势明显的行情中表现较好
缺点:
- 震荡行情中容易反复亏损
- 滞后性较强
- 需要结合其他指标过滤假信号
总结
本文教大家用Python写了一个最简单的MACD选股策略。但股市有风险,入市需谨慎。这个策略只是demo级别,实盘需要:
- 更多因子验证
- 严格的风控体系
- 足够的回测数据
- 模拟盘测试
如果你想继续学习量化,可以关注我们的后续教程。下期预告:如何用Python搭建完整的回测系统。
声明:本文仅供参考,不构成投资建议。投资有风险,入市需谨慎。