
Python做股票分析到底能帮你赚到钱吗
很多人听说Python能做股票分析,第一反应是“是不是学了就能自动赚钱”。真相是,Python是一个工具,它帮你更快、更准地处理数据和执行纪律,但不会替你做决策。今天把这件事拆开揉碎,从股票到期货,从数据获取到策略回测,用大白话讲清楚。
为什么不用Excel非要折腾Python
Excel也能看K线、算均线,但遇到几千只股票、十几年的分钟级数据,Excel打开就卡死。Python的优势在于自动化。你写一次代码,它就能每天帮你抓取行情、计算指标、筛选股票、发邮件提醒。一个人可以管理几十个期货品种,盯盘的事情交给机器。
另一个关键是回测。你想知道“MACD金叉买入,死叉卖出”这个策略过去十年在沪深300上到底赚不赚钱。Excel做这个要复制粘贴无数遍,Python几行代码就能跑完,还能算出最大回撤、夏普比率。
用Python做股票分析需要哪些基本功
不需要成为程序员,但要会三样东西。

pandas:处理表格数据。把股票代码、日期、开盘价、收盘价、成交量当成一张大表,用它做筛选、分组、计算。
numpy:做数学运算。算收益率、波动率、移动平均,底层都是数组计算。
matplotlib:画图。把K线、资金曲线、回撤图可视化,一眼看出问题。
图书馆里随便借一本Python数据分析的书,花一周把这三样练熟,就够开始了。
数据从哪来
免费数据源有tushare、akshare、baostock。tushare需要积分,akshare完全免费但接口偶尔不稳。期货数据可以用CTP接口或者vnpy这类开源框架。真要做高频或实盘,得花钱买level2数据。
初学阶段用akshare拿日线数据完全够用。代码逻辑是这样:
import akshare as ak
df = ak.stock_zh_a_hist(symbol="000001", period="daily", start_date="20200101", end_date="20231231")
print(df.head())
拿到数据后,把日期设为索引,按时间排序,检查有没有缺失值。这一步偷懒,后面回测结果全是错的。
一个最简单的策略回测
双均线策略:5日均线上穿20日均线买入,下穿卖出。用backtrader框架,核心代码不到30行。
import backtrader as bt
class DualMA(bt.Strategy):
params = (('fast', 5), ('slow', 20),)
def __init__(self):
self.ma_fast = bt.indicators.SMA(self.data.close, period=self.p.fast)
self.ma_slow = bt.indicators.SMA(self.data.close, period=self.p.slow)
self.crossover = bt.indicators.CrossOver(self.ma_fast, self.ma_slow)
def next(self):
if not self.position:
if self.crossover > 0:
self.buy()
elif self.crossover < 0:
self.close()
把数据喂进去,设置初始资金10万,手续费万三,滑点千一。跑完看结果:年化收益、最大回撤、交易次数。如果最大回撤超过30%,这个策略实盘你根本拿不住。
股票和期货用Python分析有什么不同
期货多了几个关键变量。杠杆、保证金、隔夜跳空、主力合约换月。股票回测不用考虑合约到期,期货必须处理。一个简单的办法是用连续合约,但要注意换月时的价格跳空。
期货交易还有日内平今仓手续费差异。螺纹钢平今仓手续费可能是开仓的3倍。Python回测时要把这些规则写进手续费模型,否则结果虚高。
另一个区别是期货可以做空。股票融券做空成本高、券源少,期货做空和做多一样方便。双均线策略在期货上可以多空都做,收益曲线更平滑。
回测赚钱实盘亏钱的原因
回测是拿着后视镜开车。常见坑有五个。
未来函数:用当天收盘价决定当天开盘买卖。实际你做不到。
幸存者偏差:只回测现在还在的股票,退市的没算进去。
过拟合:调参数调到回测曲线完美,实盘一塌糊涂。
滑点低估:小盘股冲击成本很高,回测按万三算,实盘可能千三。
流动性限制:回测时假设能成交,实盘涨停板买不进,跌停板卖不出。
避开这些坑的办法:样本外测试、滚动回测、用多品种多周期验证。一个策略在股票、期货、外汇上都有效,才值得实盘。
普通人怎么上手
先装Anaconda,里面自带pandas、numpy、jupyter。用jupyter notebook写代码,边写边看结果。
第一步,拿一只股票,画收盘价曲线和20日均线。
第二步,算每天收益率,画资金曲线。
第三步,写双均线策略,手动计算买卖点。
第四步,用backtrader跑一遍,对比手动结果。
第五步,换三只不同行业的股票,看策略是否都有效。
做完这五步,你就能分辨网上那些“Python量化课程”是干货还是割韭菜。
工具不能代替思考
Python能帮你回测、筛选、执行,但选什么股票、用什么逻辑、什么时候止损,还是靠你对市场的理解。均线、MACD、布林带这些指标背后是人性,不是数学公式。
期货市场杠杆放大收益也放大亏损。用Python算出胜率60%的策略,连续亏损5次你还能不能坚持执行,这是心理问题不是代码问题。
把Python当成一个计算器,一个不知疲倦的助手。它帮你把想法快速验证,把纪律严格执行。赚钱的核心永远是你对交易逻辑的认知深度。