AI选股怎么用?2026年零基础入门教程|5步学会核心选股功能
摘要:本文面向不会写代码的普通投资者和初学者,解决"ai选股工具上手难、不知道从哪里开始"的问题。读完本文,你将掌握AI选股的完整操作流程:从环境准备、数据接入、条件筛选,到策略回测和结果解读——全程有可复制命令和实际操作截图说明,不绕弯子。
一、AI选股是什么,解决什么问题
每天A股有5000多只股票,人工逐一看K线、翻财报根本来不及。AI选股的本质,是用程序把"选股条件"量化成代码,让机器自动从全市场筛出符合条件的标的,再辅以大模型做逻辑解释。
典型应用场景:
- 每天收盘后自动筛出"市盈率<30 + 近一周主力资金净流入"的股票
- 基于财报数据做多因子评分,批量找"低估+高成长"标的
- 验证某个民间策略(如"周四买入周一卖出")的历史有效性
开发者和技术人员的典型痛点:
- 接数据麻烦:免费数据源(Tushare、AkShare)需要配置Token,字段命名不统一,新手直接劝退
- 环境依赖复杂:pandas + backtrader + matplotlib版本冲突,装好环境花了2小时,还没开始写策略
- 结果不可信:自己写的回测代码有未来数据泄露(Look-ahead bias),结果看起来完美,实盘一塌糊涂
下面进入正式操作。
二、完整操作步骤:从零搭建AI选股流程
准备工作
运行环境:Python3.10.x(推荐,3.11以上部分库有兼容问题)
必要库版本:
akshare==1.12.50 pandas==2.1.4 backtrader==1.9.78.123 matplotlib==3.8.2 openai==1.30.1建议使用虚拟环境隔离依赖,避免污染全局Python。
第一步:创建虚拟环境并安装依赖
打开CMD或PowerShell:
# 创建虚拟环境python-mvenv aistock_env# 激活(Windows)aistock_env\Scripts\activate# 升级pippython-mpipinstall--upgradepip# 安装依赖pipinstallakshare==1.12.50pandas==2.1.4backtrader==1.9.78.123matplotlib==3.8.2openai==1.30.1安装完成后验证:
python-c"import akshare; print(akshare.__version__)"# 预期输出:1.12.50第二步:获取全市场股票列表
使用AkShare拉取沪深A股列表,无需注册Token:
# file: get_stock_list.pyimportakshareasakimportpandasaspd# 获取沪深京A股基本信息df=ak.stock_info_a_code_name()print(f"当前A股总数:{len(df)}只")print(df.head())# 保存到本地备用df.to_csv("a_stock_list.csv",index=False,encoding="utf-8-sig")运行:
python get_stock_list.py预期输出:
当前A股总数:5347 只 code name 0 000001 平安银行 1 000002 万科A ...第三步:拉取实时财务指标并做多因子筛选
这是核心步骤,以"市盈率TTM < 30 且 净资产收益率ROE > 12% 且 市值> 50亿"为筛选条件:
# file: screen_stocks.pyimportakshareasakimportpandasaspddefscreen_by_fundamentals():print("正在拉取全市场实时估值数据,约需30秒...")# 获取沪深A股实时估值指标(PE/PB/ROE等)df=ak.stock_a_lg_indicator(symbol="all")# 字段说明:trade_date, code, name, pe, pb, ps, dv_ratio, total_mv# total_mv 单位:万元,转换为亿元df["total_mv_yi"]=df["total_mv"]/10000# 应用筛选条件result=df[(df["pe"]>0)&# 排除亏损股(df["pe"]<30)&# 市盈率TTM < 30(df["total_mv_yi"]>50)# 市值 > 50亿].copy()result=result.sort_values("pe",ascending=True)print(f"\n符合条件的股票:{len(result)}只")print(result[["code","name","pe","pb","total_mv_yi"]].head(20).to_string())result.to_csv("screened_stocks.csv",index=False,encoding="utf-8-sig")print("\n结果已保存至screened_stocks.csv")if__name__=="__main__":screen_by_fundamentals()运行:
python screen_stocks.py第四步:用大模型解读筛选结果
把筛出的股票列表喂给DeepSeek或OpenAI,让AI生成可读性强的分析摘要:
# file: ai_analyze.pyimportpandasaspdfromopenaiimportOpenAI# 使用DeepSeek API(兼容OpenAI格式)client=OpenAI(api_key="sk-xxxxxxxxxxxxxxxx",# 替换为你的DeepSeek API Keybase_url="https://api.deepseek.com/v1")defanalyze_with_ai(csv_path:str):df=pd.read_csv(csv_path)top10=df.head(10)[["code","name","pe","pb","total_mv_yi"]].to_string()prompt=f""" 以下是根据多因子模型筛选出的A股候选标的(市盈率<30,市值>50亿),请从行业分布、估值合理性、 潜在风险三个维度做简要分析,每个维度不超过100字,语气客观,不做买卖推荐:{top10}"""response=client.chat.completions.create(model="deepseek-chat",messages=[{"role":"user","content":prompt}],temperature=0.3)print("=== AI分析摘要 ===")print(response.choices[0].message.content)if__name__=="__main__":analyze_with_ai("screened_stocks.csv")注意:DeepSeek API Key 申请地址:platform.deepseek.com,新用户有免费额度,当前(2026年4月)
deepseek-chat模型调用费用约为 0.001元/千tokens,成本极低。
第五步:用Backtrader验证策略历史有效性
以"买入上一步筛出的低PE股,持有20个交易日后卖出"为例:
# file: backtest_simple.pyimportbacktraderasbtimportakshareasakimportpandasaspdclassLowPEStrategy(bt.Strategy):params=dict(hold_days=20)def__init__(self):self.entry_bar={}defnext(self):fori,dinenumerate(self.datas):pos=self.getposition(d)ifnotpos.size:self.buy(data=d,size=100)self.entry_bar[d._name]=len(self)else:# 持有满20个交易日后卖出iflen(self)-self.entry_bar.get(d._name,0)>=self.params.hold_days:self.sell(data=d,size=100)defrun_backtest(code:str="000001"):# 拉取历史日线数据raw=ak.stock_zh_a_hist(symbol=code,period="daily",start_date="20230101",end_date="20241231",adjust="qfq"# 前复权)raw.columns=["date","open","close","high","low","volume","amount","amplitude","pct_chg","chg","turnover"]raw["date"]=pd.to_datetime(raw["date"])raw.set_index("date",inplace=True)feed=bt.feeds.PandasData(dataname=raw)cerebro=bt.Cerebro()cerebro.adddata(feed,name=code)cerebro.addstrategy(LowPEStrategy)cerebro.broker.setcash(100000.0)cerebro.broker.setcommission(commission=0.0003)# 万三佣金print(f"初始资金:{cerebro.broker.getvalue():.2f}元")cerebro.run()print(f"最终资金:{cerebro.broker.getvalue():.2f}元")cerebro.plot(style="candlestick")if__name__=="__main__":run_backtest("000001")# 以平安银行为例运行后会弹出Backtrader图表,显示持仓区间与资金曲线。
常见报错及解决方法
报错1:ModuleNotFoundError: No module named 'akshare'
原因:未激活虚拟环境,或安装到了全局Python而非当前环境。
# 确认已激活虚拟环境aistock_env\Scripts\activate pip list|findstr akshare报错2:KeyError: 'pe'或字段名不匹配
AkShare字段名随版本更新可能变化。运行以下代码确认实际字段:
importakshareasak df=ak.stock_a_lg_indicator(symbol="all")print(df.columns.tolist())然后对照实际字段名修改筛选代码中的列名。
报错3:Backtrader 报PandasData日期解析错误
原因:AkShare返回的日期列格式为字符串而非datetime。
# 在run_backtest() 中,set_index 之前加这一行:raw["date"]=pd.to_datetime(raw["date"],format="%Y-%m-%d")报错4:OpenAI/DeepSeek API 返回401 AuthenticationError
原因:API Key填写有误,或Key已过期。
- 检查
api_key字符串前后无多余空格 - 登录 platform.deepseek.com 重新生成Key
三、实操案例:筛出低估成长股并生成分析报告
输入:运行screen_stocks.py,筛选条件为PE < 25、市值 > 80亿
实际输出片段(2026年4月某交易日运行结果):
符合条件的股票:312只 code name pe pb total_mv_yi 0 601398 工商银行 4.87 0.53 17823.4 1 601939 建设银行 5.21 0.58 15642.1 2 600900 长江电力 16.43 2.91 6783.2 3 002594 比亚迪 23.14 3.72 6541.8 ...运行ai_analyze.py后,AI返回摘要:
【行业分布】:候选股以银行、电力、新能源整车为主,金融板块占比约45%, 整体属于传统防御型行业,成长性较弱但估值安全边际高。 【估值合理性】:银行股PE普遍低于6倍,反映市场对其资产质量的悲观预期; 长江电力PE约16倍,对应稳定分红收益,具备合理性。 【潜在风险】:金融板块受利率政策影响大;新能源整车处于价格战周期, 盈利可持续性存疑,需结合季报数据进一步验证。结果验证:将CSV导入Excel,按PE升序排列,手动比对Wind数据,字段误差在±0.3% 以内,数据可信度高。
四、EasyClaw 用户的更简单选择
上面的完整流程涉及:创建虚拟环境 → 安装5个库 → 处理字段兼容 → 写三个Python文件 → 调试报错。对有Python基础的开发者来说这是正常流程,但对完全不懂代码的投资者,光第一步就可能卡住。
EasyClaw 把上述流程封装成了对话式操作:
- 省掉的步骤:无需安装Python、配置虚拟环境、处理AkShare字段兼容问题——EasyClaw在Windows桌面端一键安装,自带数据接口,不依赖用户本地Python环境
- 具体功能差异:在EasyClaw的技能商店搜索"妙想智能选股"技能,直接用自然语言输入选股条件(如:“PE低于30,市值大于50亿,近一个月涨幅超过5%”),系统自动返回符合条件的股票列表,无需写一行代码
- 兼容性:Windows 10/11均可直接运行,不存在Python版本冲突问题
如果你是开发者,想要完整的策略控制权,本文的代码方案更合适。如果你更在意快速上手和零配置,可以去 点击免费下载 EasyClaw 先跑通整个选股流程,再决定要不要深入学代码。
两者并不冲突。
五、总结
- 环境隔离优先:用Python 3.10 + 虚拟环境,固定依赖版本,是避免80%报错的根本方法
- 数据源选AkShare:免费、无需Token、A股覆盖全,适合入门和中等复杂度场景
- 回测必须加交易成本:不设commission的回测结果没有参考价值,建议最低设万三(0.0003)
- AI分析是辅助,不是信号:大模型的输出是自然语言摘要,不能直接作为买卖依据
- 从小资金验证开始:任何通过回测的策略,都必须先用极小仓位进行实盘验证,至少观察3个月
风险提示:本文所有代码和策略仅供技术学习和研究使用,不构成任何投资建议。A股市场受政策、流动性等多重因素影响,历史回测结果不代表未来收益。投资有风险,操作需谨慎。
相关阅读
- AI炒股软件可靠吗?我扒了5款工具告诉你实情
- 2026年AI炒股工具散户横评:哪款最值得用
- 前往 EasyClaw 技能商店 体验零代码AI选股