跳到主要内容
基于 Kronos AI 模型的股票预测系统实战与 Streamlit 应用 | 极客日志
Python AI 算法
基于 Kronos AI 模型的股票预测系统实战与 Streamlit 应用 Kronos AI 模型股票预测系统实战。文章介绍基于 Kronos 金融基础模型构建的股票预测系统,涵盖环境搭建、Streamlit 界面设计、数据处理与可视化、核心预测代码实现及部署指南。系统支持多版本模型切换、智能容错回退机制,提供 K 线图、连续线图等多样化展示,适用于量化交易辅助与风险管理研究。
利刃 发布于 2025/10/24 更新于 2026/5/23 19 浏览基于 Kronos AI 模型的股票预测系统实战
项目概述
本项目基于最新的开源 Kronos 金融基础模型,构建了一个功能完整、界面友好的股票预测系统。核心特色包括集成专业 AI 模型、基于 Streamlit 构建的现代化响应式 Web 界面、支持多种可视化图表以及灵活配置参数。
Kronos 模型深度解析
Kronos 是首个开源的金融 K 线数据基础模型,由研究团队专门为金融时间序列预测设计。它采用独特的分词器 + Transformer 双阶段架构:
专用分词器 :将连续的多维 K 线数据 (OHLCV) 量化为层次化离散标记,保留价格间的相对关系和时序依赖。
Transformer 模型 :在量化标记上进行大规模预训练,统一处理各种金融预测任务,支持长序列建模和多步预测。
模型版本 参数量 上下文长度 适用场景 Kronos-mini 4.1M 2048 快速验证、资源受限 Kronos-small 24.7M 512 一般预测任务 Kronos-base 102.3M 512 高精度预测任务
环境搭建与配置
系统要求
操作系统:Windows 10/11, Linux, macOS
Python 版本:3.8+ (推荐 3.9)
内存需求:4GB+ (推荐 8GB+)
显卡支持:可选 CUDA 加速
快速安装部署
conda create -n kronos-env python=3.9
conda activate kronos-env
pip install torch torchvision torchaudio
pip install streamlit pandas numpy plotly huggingface_hub einops matplotlib tqdm safetensors
Streamlit 界面设计实战
页面基础配置
import streamlit as st
st.set_page_config(
page_title="Kronos 股票预测系统" ,
page_icon="📈" ,
layout="wide" ,
initial_sidebar_state="expanded"
)
自定义 CSS 样式系统
.main-header { font-size : 2.5rem ; font-weight : bold; : center; : ; }
{ : ( , , ); : ; : ; }
text-align
color
#1f77b4
.metric-card
background
linear-gradient
90deg
#667eea
0%
#764ba2
100%
padding
1rem
border-radius
10px
智能侧边栏控制面板 def create_control_panel ():
st.sidebar.header("控制面板" )
model_type = st.sidebar.selectbox("选择模型版本" , ["Kronos-small" , "Kronos-mini" , "Kronos-base" ])
device = st.sidebar.selectbox("计算设备" , ["cpu" , "cuda" ])
return model_type, device
核心功能代码实现
智能数据处理系统
多格式数据加载器 def load_data (file_path ):
try :
if file_path.endswith('.csv' ):
df = pd.read_csv(file_path)
elif file_path.endswith('.feather' ):
df = pd.read_feather(file_path)
else :
return None , "不支持的文件格式"
required_cols = ['open' , 'high' , 'low' , 'close' ]
if not all (col in df.columns for col in required_cols):
return None , f"缺少必需列:{required_cols} "
df['timestamps' ] = pd.to_datetime(df['timestamps' ])
df = df.dropna(subset=['open' , 'high' , 'low' , 'close' ])
df = df.sort_values('timestamps' ).reset_index(drop=True )
return df, None
except Exception as e:
return None , str (e)
高级数据清理算法 def clean_data (df ):
for col in ['open' , 'high' , 'low' , 'close' ]:
mean_val = df[col].mean()
std_val = df[col].std()
lower_bound = mean_val - 3 * std_val
upper_bound = mean_val + 3 * std_val
df = df[(df[col] >= lower_bound) & (df[col] <= upper_bound)]
df['high' ] = df[['open' , 'close' , 'high' ]].max (axis=1 )
df['low' ] = df[['open' , 'close' , 'low' ]].min (axis=1 )
return df.reset_index(drop=True )
模型管理与预测系统
动态模型加载管理器 MODEL_CONFIGS = {
"Kronos-mini" : {"model_path" : "NeoQuasar/Kronos-mini" , "parameters" : "4.1M" },
"Kronos-small" : {"model_path" : "NeoQuasar/Kronos-small" , "parameters" : "24.7M" }
}
@st.cache_resource
def load_model (model_type, device ):
config = MODEL_CONFIGS[model_type]
tokenizer = KronosTokenizer.from_pretrained(config["tokenizer_path" ])
model = Kronos.from_pretrained(config["model_path" ])
predictor = KronosPredictor(model=model, tokenizer=tokenizer, device=device)
return predictor
智能预测执行引擎 def smart_prediction (df, model_type, device, **params ):
try :
predictor = load_model(model_type, device)
pred_df = real_model_predict(predictor, df, **params)
return pred_df, f"{model_type} AI 预测"
except Exception as e:
return statistical_simulation(df, **params), "统计模拟预测 (智能回退)"
def real_model_predict (predictor, df, lookback=400 , pred_len=120 ):
x_df = df.tail(lookback + pred_len).head(lookback)
x_data = x_df[['open' , 'high' , 'low' , 'close' , 'volume' , 'amount' ]]
return predictor.predict(df=x_data, pred_len=pred_len)
数据处理与可视化
多样化图表系统
专业 K 线图 def create_candlestick_chart (df, title="专业 K 线图" ):
fig = go.Figure(data=go.Candlestick(
x=df['timestamps' ], open =df['open' ], high=df['high' ], low=df['low' ], close=df['close' ],
increasing_line_color='#26a69a' , decreasing_line_color='#ef5350'
))
fig.update_layout(title=title, xaxis=dict (type ='date' , rangebreaks=[dict (bounds=["sat" ,"mon" ])]))
return fig
连续线图 def create_line_chart (df, title="连续价格线图" ):
fig = go.Figure()
fig.add_trace(go.Scatter(x=df['timestamps' ], y=df['close' ], mode='lines+markers' , name='收盘价' ))
fig.update_layout(title=title, xaxis=dict (type ='date' ), yaxis_title="价格 (¥)" )
return fig
预测结果可视化系统 def create_prediction_comparison (historical_data, prediction_data, lookback=400 ):
fig = make_subplots(rows=2 , cols=1 , subplot_titles=('价格预测对比' , '成交量预测对比' ))
return fig
技术亮点与创新
多级智能容错系统 设计了四级容错机制,确保系统在各种情况下都能正常工作:优先使用最佳模型,降级到小模型,回退到统计模拟,最后保障基础统计预测。
智能数据适配系统 支持多种数据格式和列名变体,实现真正的即插即用。自动映射时间列、OHLC 列及成交量列的不同命名习惯。
高性能优化系统
智能缓存:基于文件哈希的数据缓存和模型资源缓存。
异步处理:支持并发预测任务。
内存优化:自动降维 DataFrame 数据类型。
部署使用指南
本地快速部署
git clone <project-repo-url>
cd Kronos
conda create -n kronos-env python=3.9
conda activate kronos-env
pip install -r requirements.txt
streamlit run streamlit_app.py
Docker 容器部署 FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8501
CMD ["streamlit", "run", "streamlit_app.py"]
总结与展望 通过本项目的完整实现,成功构建了一个功能完整的 AI 预测系统。集成了 Kronos 金融基础模型,实现了数据清理、异常检测、格式适配及多种可视化展示。系统具备四级智能回退容错机制,支持本地、Docker 等多种部署方式,适用于量化交易辅助与风险管理研究。未来计划增强技术指标分析、支持多股票对比及接入实时数据源。
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
随机西班牙地址生成器 随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
Gemini 图片去水印 基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online