主页 > 电脑硬件  > 

Streamlit与Qlib:量化投资策略可视化实战

Streamlit与Qlib:量化投资策略可视化实战

Streamlit与Qlib:量化投资策略可视化实战 1. 项目背景

在量化投资领域,数据可视化是理解和展示投资策略的关键。本文将详细介绍如何使用Streamlit和Qlib构建一个交互式的量化投资策略可视化应用。

2. 环境准备 2.1 安装依赖 # 安装必要的库 pip install qlib streamlit pandas numpy plotly 2.2 下载Qlib数据 # 下载A股市场数据 python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/cn_data --region cn 3. 完整可视化应用代码 import streamlit as st import qlib import pandas as pd import plotly.express as px import plotly.graph_objects as go # 初始化Qlib qlib.init(provider_uri="~/.qlib/qlib_data/cn_data", region=qlib.Region.CN) def load_market_data(start_date='2020-01-01', end_date='2023-12-31', top_n=50): """加载市场数据""" instruments = qlib.data.D.list_instruments(market='CN') market_data = [] for instrument in instruments[:top_n]: try: price_data = qlib.data.D.features( instrument, start_time=start_date, end_time=end_date, fields=['close', 'market_value', 'volume'] ) price_data['instrument'] = instrument market_data.append(price_data) except Exception as e: st.warning(f"Error processing {instrument}: {e}") return pd.concat(market_data) def market_value_strategy(data, percentile=0.1): """市值策略分析""" grouped = data.groupby('instrument')['market_value'].mean().sort_values() top_percentile = grouped.head(int(len(grouped) * percentile)) return top_percentile def performance_analysis(data, stocks): """计算选中股票的性能指标""" selected_data = data[data['instrument'].isin(stocks.index)] performance = selected_data.groupby('instrument')['close'].agg([ ('start_price', 'first'), ('end_price', 'last'), ('return_rate', lambda x: (x.iloc[-1] - x.iloc[0]) / x.iloc[0] * 100) ]) return performance def main(): st.set_page_config(page_title='Qlib量化投资分析', layout='wide') st.title('🚀 Qlib量化投资策略可视化') # 侧边栏参数配置 with st.sidebar: st.header('策略参数') start_date = st.date_input('开始日期', pd.to_datetime('2020-01-01')) end_date = st.date_input('结束日期', pd.to_datetime('2023-12-31')) top_n = st.slider('分析股票数量', 10, 200, 50) percentile = st.select_slider('市值百分比', options=[0.05, 0.1, 0.15, 0.2], value=0.1) # 加载数据 with st.spinner('数据加载中...'): market_data = load_market_data( start_date.strftime('%Y-%m-%d'), end_date.strftime('%Y-%m-%d'), top_n ) # 市值策略分析 top_stocks = market_value_strategy(market_data, percentile) # 性能分析 performance = performance_analysis(market_data, top_stocks) # 创建选项卡 tab1, tab2, tab3 = st.tabs(['市值分析', '价格趋势', '性能详情']) with tab1: st.subheader('最小市值股票分布') fig1 = px.bar( x=top_stocks.index, y=top_stocks.values, title='最小市值股票分布', labels={'x': '股票代码', 'y': '平均市值'} ) st.plotly_chart(fig1, use_container_width=True) with tab2: st.subheader('选中股票价格走势') selected_data = market_data[market_data['instrument'].isin(top_stocks.index)] fig2 = px.line( selected_data, x=selected_data.index, y='close', color='instrument', title='选中股票价格走势' ) st.plotly_chart(fig2, use_container_width=True) with tab3: st.subheader('股票性能详情') st.dataframe(performance) # 收益率分布 fig3 = px.histogram( performance, x='return_rate', title='选中股票收益率分布' ) st.plotly_chart(fig3, use_container_width=True) if __name__ == '__main__': main() 4. 运行应用 # 保存代码为 qlib_strategy_visualization.py streamlit run qlib_strategy_visualization.py 5. 功能特点 5.1 交互式界面 可调整日期范围动态选择分析股票数量灵活配置市值策略参数 5.2 数据可视化 市值分布柱状图股价走势折线图收益率分布直方图 5.3 性能分析 计算选中股票的起始价格分析股票收益率展示详细性能数据 6. 进阶优化建议 添加更多金融指标实现多策略切换增加风险指标计算优化性能和加载速度 7. 注意事项 需要稳定的网络连接大数据量可能影响性能建议使用GPU加速实际投资需要更复杂的策略
标签:

Streamlit与Qlib:量化投资策略可视化实战由讯客互联电脑硬件栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Streamlit与Qlib:量化投资策略可视化实战