AI选股怎么用?2026年零基础入门教程|5步学会核心选股功能
AI选股怎么用?2026年零基础入门教程|5步学会核心选股功能
摘要:本文面向不会写代码的普通投资者和初学者,解决"ai选股工具上手难、不知道从哪里开始"的问题。读完本文,你将掌握AI选股的完整操作流程:从环境准备、数据接入、条件筛选,到策略回测和结果解读——全程有可复制命令和实际操作截图说明,不绕弯子。
一、AI选股是什么,解决什么问题
每天A股有5000多只股票,人工逐一看K线、翻财报根本来不及。AI选股的本质,是用程序把"选股条件"量化成代码,让机器自动从全市场筛出符合条件的标的,再辅以大模型做逻辑解释。
典型应用场景:
- 每天收盘后自动筛出"市盈率<30 + 近一周主力资金净流入"的股票
- 基于财报数据做多因子评分,批量找"低估+高成长"标的
- 验证某个民间策略(如"周四买入周一卖出")的历史有效性
开发者和技术人员的典型痛点:
- 接数据麻烦:免费数据源(Tushare、AkShare)需要配置Token,字段命名不统一,新手直接劝退
- 环境依赖复杂:pandas + backtrader + matplotlib版本冲突,装好环境花了2小时,还没开始写策略
- 结果不可信:自己写的回测代码有未来数据泄露(Look-ahead bias),结果看起来完美,实盘一塌糊涂
下面进入正式操作。
二、完整操作步骤:从零搭建AI选股流程
准备工作
运行环境:Python 3.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 -m venv aistock_env
# 激活(Windows)
aistock_env\Scripts\activate
# 升级pip
python -m pip install --upgrade pip
# 安装依赖
pip install akshare==1.12.50 pandas==2.1.4 backtrader==1.9.78.123 matplotlib==3.8.2 openai==1.30.1
安装完成后验证:
python -c "import akshare; print(akshare.__version__)"
# 预期输出:1.12.50
第二步:获取全市场股票列表
使用AkShare拉取沪深A股列表,无需注册Token:
# file: get_stock_list.py
import akshare as ak
import pandas as pd
# 获取沪深京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.py
import akshare as ak
import pandas as pd
def screen_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.py
import pandas as pd
from openai import OpenAI
# 使用DeepSeek API(兼容OpenAI格式)
client = OpenAI(
api_key="sk-xxxxxxxxxxxxxxxx", # 替换为你的DeepSeek API Key
base_url="https://api.deepseek.com/v1"
)
def analyze_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.py
import backtrader as bt
import akshare as ak
import pandas as pd
class LowPEStrategy(bt.Strategy):
params = dict(hold_days=20)
def __init__(self):
self.entry_bar = {}
def next(self):
for i, d in enumerate(self.datas):
pos = self.getposition(d)
if not pos.size:
self.buy(data=d, size=100)
self.entry_bar[d._name] = len(self)
else:
# 持有满20个交易日后卖出
if len(self) - self.entry_bar.get(d._name, 0) >= self.params.hold_days:
self.sell(data=d, size=100)
def run_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字段名随版本更新可能变化。运行以下代码确认实际字段:
import akshare as ak
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选股
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)