Python量化投资入门:手把手教你写出第一个选股策略

前言

很多散户想学量化,但觉得门槛太高。其实用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级别,实盘需要:

  1. 更多因子验证
  2. 严格的风控体系
  3. 足够的回测数据
  4. 模拟盘测试

如果你想继续学习量化,可以关注我们的后续教程。下期预告:如何用Python搭建完整的回测系统

声明:本文仅供参考,不构成投资建议。投资有风险,入市需谨慎。

发表评论