<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>量化交易 on ynhugo</title><link>https://ynhugo.github.io/tags/%E9%87%8F%E5%8C%96%E4%BA%A4%E6%98%93/</link><description>Recent content in 量化交易 on ynhugo</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Mon, 12 Oct 2026 02:15:45 +0800</lastBuildDate><atom:link href="https://ynhugo.github.io/tags/%E9%87%8F%E5%8C%96%E4%BA%A4%E6%98%93/index.xml" rel="self" type="application/rss+xml"/><item><title>量化交易入门开源项目选型指南</title><link>https://ynhugo.github.io/p/%E9%87%8F%E5%8C%96%E4%BA%A4%E6%98%93%E5%85%A5%E9%97%A8%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE%E9%80%89%E5%9E%8B%E6%8C%87%E5%8D%97/</link><pubDate>Mon, 12 Oct 2026 02:15:45 +0800</pubDate><guid>https://ynhugo.github.io/p/%E9%87%8F%E5%8C%96%E4%BA%A4%E6%98%93%E5%85%A5%E9%97%A8%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE%E9%80%89%E5%9E%8B%E6%8C%87%E5%8D%97/</guid><description>&#10;&lt;div id="outline-container-headline-1" class="outline-2"&gt;&#10;&lt;h2 id="headline-1"&gt;&#10;量化交易入门开源项目选型指南&#10;&lt;/h2&gt;&#10;&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;&#10;&lt;div id="outline-container-headline-2" class="outline-3"&gt;&#10;&lt;h3 id="headline-2"&gt;&#10;前言&#10;&lt;/h3&gt;&#10;&lt;div id="outline-text-headline-2" class="outline-text-3"&gt;&#10;&lt;p&gt;本文整理一份量化入门开源项目清单，针对新手如何挑选合适框架。&lt;/p&gt;&#10;&lt;p&gt;&#10;&amp;gt; 重要提醒：所有开源项目仅用于学习研究，不构成任何投资建议。回测结果不代表实盘收益，自动交易风险极高。&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-3" class="outline-3"&gt;&#10;&lt;h3 id="headline-3"&gt;&#10;开发环境准备&#10;&lt;/h3&gt;&#10;&lt;div id="outline-text-headline-3" class="outline-text-3"&gt;&#10;&lt;div id="outline-container-headline-4" class="outline-4"&gt;&#10;&lt;h4 id="headline-4"&gt;&#10;Python版本推荐&#10;&lt;/h4&gt;&#10;&lt;div id="outline-text-headline-4" class="outline-text-4"&gt;&#10;&lt;p&gt;根据 AKShare 官方最新文档：AKShare 仅支持 64位操作系统，Python &amp;gt;=3.11，官方推荐3.13.x。&#10;考虑整套量化工具链兼容性（akshare / qlib / vnpy / quantstats）综合选择：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;首选：Python 3.11（满足AKShare最低版本要求，同时兼容vnpy、qlib等库，学习最稳妥）&lt;/li&gt;&#10;&lt;li&gt;备选：Python 3.13（仅单独使用akshare，不安装vnpy场景）&lt;/li&gt;&#10;&lt;li&gt;不推荐：Python3.10 及更低版本（新版AKShare不再支持）；3.12 可尝试但部分量化依赖适配不完善&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&amp;gt; 不要直接使用操作系统自带Python，必须使用虚拟环境隔离包依赖，防止版本冲突。&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-5" class="outline-4"&gt;&#10;&lt;h4 id="headline-5"&gt;&#10;使用Miniconda搭建学习环境&#10;&lt;/h4&gt;&#10;&lt;div id="outline-text-headline-5" class="outline-text-4"&gt;&#10;&lt;p&gt;Miniconda相比完整Anaconda体积更小，适合学习研究；同时提供二进制包，减少编译报错。&lt;/p&gt;&#10;&lt;div id="outline-container-headline-6" class="outline-5"&gt;&#10;&lt;h5 id="headline-6"&gt;&#10;步骤1：安装Miniconda&#10;&lt;/h5&gt;&#10;&lt;div id="outline-text-headline-6" class="outline-text-5"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;下载Miniconda对应系统64位版本，不要安装Anaconda完整版。&lt;/li&gt;&#10;&lt;li&gt;Windows 使用 Anaconda Prompt；Linux/macOS 使用普通终端。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-7" class="outline-5"&gt;&#10;&lt;h5 id="headline-7"&gt;&#10;步骤2：配置国内镜像源（加速下载）&#10;&lt;/h5&gt;&#10;&lt;div id="outline-text-headline-7" class="outline-text-5"&gt;&#10;&lt;div class="src src-bash"&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda config --set show_channel_urls yes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-8" class="outline-5"&gt;&#10;&lt;h5 id="headline-8"&gt;&#10;步骤3：创建并激活独立虚拟环境 quant_ml&#10;&lt;/h5&gt;&#10;&lt;div id="outline-text-headline-8" class="outline-text-5"&gt;&#10;&lt;p&gt;quant_ml 是自定义的环境名称：quant代表量化，ml代表机器学习，仅作为标识，名称可以自行修改。&lt;/p&gt;&#10;&lt;div class="src src-bash"&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda create -n quant_ml &lt;span class="nv"&gt;python&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;3.11 -y&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda activate quant_ml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;终端提示符出现 (quant_ml)，说明已经进入隔离环境。&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-9" class="outline-5"&gt;&#10;&lt;h5 id="headline-9"&gt;&#10;步骤4：安装基础库与量化库&#10;&lt;/h5&gt;&#10;&lt;div id="outline-text-headline-9" class="outline-text-5"&gt;&#10;&lt;p&gt;conda优先安装科学计算基础包；量化开源包conda源更新慢，使用pip安装。&lt;/p&gt;&#10;&lt;p&gt;&#10;&amp;gt; AKShare国内安装用清华源加速， &lt;strong&gt;不要加–user参数&lt;/strong&gt; ，必须在已激活虚拟环境内安装。&lt;/p&gt;&#10;&lt;div class="src src-bash"&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda install -y numpy pandas matplotlib scikit-learn jupyterlab&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 清华源安装akshare&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python -m pip install akshare --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 其余量化库&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python -m pip install quantstats openbb qlib vnpy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-10" class="outline-5"&gt;&#10;&lt;h5 id="headline-10"&gt;&#10;AKShare 安装避坑要点&#10;&lt;/h5&gt;&#10;&lt;div id="outline-text-headline-10" class="outline-text-5"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;操作系统必须为64位，32位系统无法使用AKShare&lt;/li&gt;&#10;&lt;li&gt;项目文件名、文件夹名称**不能命名为 akshare**，会造成库导入冲突&lt;/li&gt;&#10;&lt;li&gt;安装超时可增加超时参数：`pip –default-timeout=100 install -U akshare`&lt;/li&gt;&#10;&lt;li&gt;AKShare官方还推荐uv虚拟环境作为替代方案，适合熟悉现代Python工具的用户；新手优先Miniconda&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-11" class="outline-5"&gt;&#10;&lt;h5 id="headline-11"&gt;&#10;Jupyter Lab 是否推荐作为入门工具&#10;&lt;/h5&gt;&#10;&lt;div id="outline-text-headline-11" class="outline-text-5"&gt;&#10;&lt;p&gt;Jupyter Lab 是量化学习阶段**强烈推荐**的开发工具，适合新手。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;优点：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;分段执行代码，方便调试数据、查看中间K线结果，不用一次性跑完整个脚本&lt;/li&gt;&#10;&lt;li&gt;支持在代码块之间插入文字说明、公式、绘图，非常适合边写代码边做笔记&lt;/li&gt;&#10;&lt;li&gt;绘图直接内嵌在页面，看K线、收益曲线、回撤图很直观&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;局限：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;不适合直接写长时间运行的生产脚本、高频实盘交易程序&lt;/li&gt;&#10;&lt;li&gt;大型项目代码组织不如IDE（VSCode、Emacs）方便&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&amp;gt; 建议学习阶段用 Jupyter Lab 做探索、回测实验；代码成熟后，迁移到独立Python脚本。&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-12" class="outline-5"&gt;&#10;&lt;h5 id="headline-12"&gt;&#10;步骤5：校验环境是否安装成功&#10;&lt;/h5&gt;&#10;&lt;div id="outline-text-headline-12" class="outline-text-5"&gt;&#10;&lt;div class="src src-bash"&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;span class="lnt"&gt;12&#10;&lt;/span&gt;&lt;span class="lnt"&gt;13&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python &lt;span class="s"&gt;&amp;lt;&amp;lt;&amp;#39;EOF&amp;#39;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;import numpy as np&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;import pandas as pd&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;import matplotlib&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;import sklearn&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;import akshare&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;import quantstats&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;print(f&amp;#34;numpy: {np.__version__}&amp;#34;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;print(f&amp;#34;pandas: {pd.__version__}&amp;#34;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;print(f&amp;#34;matplotlib: {matplotlib.__version__}&amp;#34;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;print(f&amp;#34;scikit-learn: {sklearn.__version__}&amp;#34;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;print(f&amp;#34;akshare: {akshare.__version__}&amp;#34;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;EOF&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-13" class="outline-5"&gt;&#10;&lt;h5 id="headline-13"&gt;&#10;步骤6：注册Jupyter内核，启动Jupyter Lab&#10;&lt;/h5&gt;&#10;&lt;div id="outline-text-headline-13" class="outline-text-5"&gt;&#10;&lt;div class="src src-bash"&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 将当前quant_ml环境注册为jupyter内核&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python -m ipykernel install --user --name quant_ml --display-name &lt;span class="s2"&gt;&amp;#34;Python (quant_ml)&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 启动jupyter lab&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;jupyter lab&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;浏览器访问 &lt;a href="http://localhost:8888"&gt;http://localhost:8888&lt;/a&gt;，新建Notebook，内核选择 Python (quant_ml)。&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-14" class="outline-4"&gt;&#10;&lt;h4 id="headline-14"&gt;&#10;Conda常用维护命令&#10;&lt;/h4&gt;&#10;&lt;div id="outline-text-headline-14" class="outline-text-4"&gt;&#10;&lt;div class="src src-bash"&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;span class="lnt"&gt;6&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda env list &lt;span class="c1"&gt;# 列出全部环境&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda deactivate &lt;span class="c1"&gt;# 退出当前环境&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda remove -y -n quant_ml --all &lt;span class="c1"&gt;# 删除出错环境，直接重建&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda list &lt;span class="c1"&gt;# 查看已安装包&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda env &lt;span class="nb"&gt;export&lt;/span&gt; &amp;gt; environment.yml &lt;span class="c1"&gt;# 导出环境备份&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda env create -f environment.yml &lt;span class="c1"&gt;# 从备份恢复环境&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-15" class="outline-4"&gt;&#10;&lt;h4 id="headline-15"&gt;&#10;常见环境坑点&#10;&lt;/h4&gt;&#10;&lt;div id="outline-text-headline-15" class="outline-text-4"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;导入模块提示 ModuleNotFoundError：确认已经 `conda activate quant_ml`&lt;/li&gt;&#10;&lt;li&gt;Jupyter运行包版本不对：需要注册内核，然后在Notebook切换内核&lt;/li&gt;&#10;&lt;li&gt;依赖版本冲突：优先直接删除环境重建，不要反复调整包版本。&lt;/li&gt;&#10;&lt;li&gt;akshare导入报错：检查当前目录是否存在 akshare.py 文件或者 akshare 文件夹。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-16" class="outline-3"&gt;&#10;&lt;h3 id="headline-16"&gt;&#10;核心结论&#10;&lt;/h3&gt;&#10;&lt;div id="outline-text-headline-16" class="outline-text-3"&gt;&#10;&lt;p&gt;新手入门优先顺序：&lt;/p&gt;&#10;&lt;p&gt;&#10;akshare → OpenBB → quantstats → qlib&lt;/p&gt;&#10;&lt;p&gt;&#10;不要一开始就碰 TradingAgents / freqtrade / nautilus_trader / Lean / FinRL / vnpy / RD-Agent / Abu。&#10;区分两种目标：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;目标A：学习量化基础，获取A股/期货数据、写简单策略、指标可视化（绝大多数入门者）&lt;/li&gt;&#10;&lt;li&gt;目标B：搭建自动交易机器人、LLM交易、强化学习策略、实盘对接、AI自动因子挖掘（门槛高，不适合入门）&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-17" class="outline-3"&gt;&#10;&lt;h3 id="headline-17"&gt;&#10;项目清单详解&#10;&lt;/h3&gt;&#10;&lt;div id="outline-text-headline-17" class="outline-text-3"&gt;&#10;&lt;div id="outline-container-headline-18" class="outline-4"&gt;&#10;&lt;h4 id="headline-18"&gt;&#10;akshare（国内市场首选入门）&#10;&lt;/h4&gt;&#10;&lt;div id="outline-text-headline-18" class="outline-text-4"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;仓库：&lt;a href="https://github.com/akfamily/akshare"&gt;https://github.com/akfamily/akshare&lt;/a&gt; &lt;/li&gt;&#10;&lt;li&gt;文档：&lt;a href="https://akshare.akfamily.xyz/index.html"&gt;https://akshare.akfamily.xyz/index.html&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;定位：国内金融数据接口库，覆盖A股、期货、基金、可转债 &lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;优点：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Python 实现，中文文档友好，部署简单&lt;/li&gt;&#10;&lt;li&gt;无需自建数据库，一行代码获取K线、财务数据&lt;/li&gt;&#10;&lt;li&gt;适合写第一个回测脚本，实现均线、MACD等指标计算&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;缺点：仅负责数据获取，没有内置回测引擎，回测逻辑需要自行实现，可搭配 quantstats 使用 &lt;/li&gt;&#10;&lt;li&gt;适合：零基础，研究A股/国内品种&lt;/li&gt;&#10;&lt;li&gt;环境要求：64位系统，Python &amp;gt;=3.11，推荐3.11用于整套量化工具链&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-19" class="outline-4"&gt;&#10;&lt;h4 id="headline-19"&gt;&#10;OpenBB（通用金融数据终端）&#10;&lt;/h4&gt;&#10;&lt;div id="outline-text-headline-19" class="outline-text-4"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;仓库：&lt;a href="https://github.com/OpenBB-finance/OpenBB"&gt;https://github.com/OpenBB-finance/OpenBB&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;定位：开源金融终端，股票/美股/加密/宏观数据，支持 CLI + Python SDK&lt;/li&gt;&#10;&lt;li&gt;优点：数据源丰富，自带分析工具，开箱可视化&lt;/li&gt;&#10;&lt;li&gt;缺点：A股支持不如 akshare，包体积较重&lt;/li&gt;&#10;&lt;li&gt;适合：同时研究海外市场，喜欢终端交互方式&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-20" class="outline-4"&gt;&#10;&lt;h4 id="headline-20"&gt;&#10;quantstats（绩效分析配套库，不可独立使用）&#10;&lt;/h4&gt;&#10;&lt;div id="outline-text-headline-20" class="outline-text-4"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;仓库：&lt;a href="https://github.com/ranaroussi/quantstats"&gt;https://github.com/ranaroussi/quantstats&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;定位：量化组合绩效分析库&lt;/li&gt;&#10;&lt;li&gt;作用：输入策略收益序列，自动计算夏普比率、最大回撤，生成可视化报告&lt;/li&gt;&#10;&lt;li&gt;使用方式：搭配 akshare / OpenBB 使用&lt;/li&gt;&#10;&lt;li&gt;典型链路：akshare取K线 → 手写策略生成每日收益 → quantstats生成回测报告&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-21" class="outline-4"&gt;&#10;&lt;h4 id="headline-21"&gt;&#10;qlib（微软AI量化平台，进阶入门）&#10;&lt;/h4&gt;&#10;&lt;div id="outline-text-headline-21" class="outline-text-4"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;仓库：&lt;a href="https://github.com/microsoft/qlib"&gt;https://github.com/microsoft/qlib&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;定位：一站式量化研究平台：数据处理、因子挖掘、模型训练、回测&lt;/li&gt;&#10;&lt;li&gt;优点：因子研究、机器学习量化成熟，工业级设计；原生支持XGBoost、LSTM等模型&lt;/li&gt;&#10;&lt;li&gt;缺点：学习曲线陡峭，需要理解因子、handler等概念；A股数据需要额外配置&lt;/li&gt;&#10;&lt;li&gt;适合：已经掌握基础Python，下一步做因子量化、机器学习选股&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-22" class="outline-4"&gt;&#10;&lt;h4 id="headline-22"&gt;&#10;vnpy(VeighNa)（国内实盘交易框架，高阶）&#10;&lt;/h4&gt;&#10;&lt;div id="outline-text-headline-22" class="outline-text-4"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;仓库：&lt;a href="https://github.com/vnpy/vnpy"&gt;https://github.com/vnpy/vnpy&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;定位：事件驱动架构的Python算法交易框架，面向仿真、实盘交易&lt;/li&gt;&#10;&lt;li&gt;优点：40+国内外交易网关接口；内置CTA回测模块、参数优化；支持MongoDB历史数据存储&lt;/li&gt;&#10;&lt;li&gt;缺点：重交易执行，轻AI投研；环境配置复杂，实盘涉及资金、接口合规风险；高版本Python（3.13）编译容易报错&lt;/li&gt;&#10;&lt;li&gt;适合：已经学会量化研究，需要对接国内期货、股票仿真/实盘的开发者&lt;/li&gt;&#10;&lt;li&gt;不适合：零基础入门学习量化理论&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-23" class="outline-4"&gt;&#10;&lt;h4 id="headline-23"&gt;&#10;RD-Agent（微软AI因子自动迭代Agent，前沿实验）&#10;&lt;/h4&gt;&#10;&lt;div id="outline-text-headline-23" class="outline-text-4"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;仓库：&lt;a href="https://github.com/microsoft/RD-Agent"&gt;https://github.com/microsoft/RD-Agent&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;定位：研究-开发闭环智能Agent，自动生成、验证量化因子，常与qlib搭配&lt;/li&gt;&#10;&lt;li&gt;优点：实现“数据-想法-代码-回测”自动化链路；策略衰减时自动迭代新因子&lt;/li&gt;&#10;&lt;li&gt;缺点：属于前沿实验项目，部署配置复杂，资源消耗大&lt;/li&gt;&#10;&lt;li&gt;适合：高阶量化研究者，做AI自动化投研实验&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-24" class="outline-4"&gt;&#10;&lt;h4 id="headline-24"&gt;&#10;Abu（多市场技术分析量化框架）&#10;&lt;/h4&gt;&#10;&lt;div id="outline-text-headline-24" class="outline-text-4"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;仓库：&lt;a href="https://github.com/bbfamily/abu"&gt;https://github.com/bbfamily/abu&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;定位：融合传统技术分析与AI策略演化的多市场回测框架&lt;/li&gt;&#10;&lt;li&gt;优点：支持A股、港股、美股、期货、加密货币；内置缠论、波浪等大量技术模型；遗传算法演化生成大量衍生策略&lt;/li&gt;&#10;&lt;li&gt;缺点：社区活跃度较低，文档维护一般&lt;/li&gt;&#10;&lt;li&gt;适合：对传统技术分析回测感兴趣的学习者&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-25" class="outline-4"&gt;&#10;&lt;h4 id="headline-25"&gt;&#10;不推荐新手直接上手的项目&#10;&lt;/h4&gt;&#10;&lt;div id="outline-text-headline-25" class="outline-text-4"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;QuantConnect Lean：专业级多资产引擎，C#为主，体系庞大。网页回测更容易上手，本地部署不适合入门。&lt;/li&gt;&#10;&lt;li&gt;freqtrade：加密货币自动交易机器人，自带回测与实盘。面向机器人交易，不是学习量化理论，加密市场风险巨大。&lt;/li&gt;&#10;&lt;li&gt;nautilus_trader：Rust底层高性能交易引擎，面向低延迟实盘，API复杂。&lt;/li&gt;&#10;&lt;li&gt;TradingAgents：多Agent LLM金融交易框架，前沿Demo项目。LLM交易可靠性差，适合玩demo，不适合学习量化底层原理。&lt;/li&gt;&#10;&lt;li&gt;stockbot-on-groq：LLM股票机器人，AI演示项目，不适合基础量化学习。&lt;/li&gt;&#10;&lt;li&gt;FinRL：深度强化学习DRL交易框架。金融环境噪声大，极易过拟合；建议基础量化学完之后再尝试。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-26" class="outline-3"&gt;&#10;&lt;h3 id="headline-26"&gt;&#10;推荐入门学习路线&#10;&lt;/h3&gt;&#10;&lt;div id="outline-text-headline-26" class="outline-text-3"&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;环境准备：按照上文使用Miniconda搭建 quant_ml 环境，Jupyter Lab作为探索实验工具&lt;/li&gt;&#10;&lt;li&gt;第一步：使用 akshare 获取A股K线，熟悉时间序列、K线、技术指标计算&lt;/li&gt;&#10;&lt;li&gt;第二步：手写简单策略（例如双均线策略），实现简易回测&lt;/li&gt;&#10;&lt;li&gt;第三步：接入 quantstats，自动生成回测指标、回撤曲线&lt;/li&gt;&#10;&lt;li&gt;第四步（可选进阶）：学习 qlib，开展因子挖掘、机器学习选股&lt;/li&gt;&#10;&lt;li&gt;高阶：vnpy（实盘对接） / Abu（技术分析回测） / RD-Agent（AI因子实验） / Lean / nautilus_trader（算法实盘）、FinRL（强化学习）、TradingAgents（LLM金融实验）&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-27" class="outline-3"&gt;&#10;&lt;h3 id="headline-27"&gt;&#10;入门示例：akshare 双均线策略演示&#10;&lt;/h3&gt;&#10;&lt;div id="outline-text-headline-27" class="outline-text-3"&gt;&#10;&lt;p&gt;&amp;gt; 注意：`ak.stock_zh_a_hist`（东方财富数据源）在部分网络环境会出现 `RemoteDisconnected` 连接中断；下面示例改用新浪日线数据源 `ak.stock_zh_a_daily` 规避该网络问题，仅支持日线数据。&#10;&amp;gt; 标的编码规则：上交所股票前缀 `sh`，深交所前缀 `sz`；如茅台 `sh600519`，宁德时代 `sz300750`。&lt;/p&gt;&#10;&lt;p&gt;&#10;复制下面代码块到 Jupyter Notebook 直接运行，完成一次完整小回测。&lt;/p&gt;&#10;&lt;div class="src src-python"&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;span class="lnt"&gt;12&#10;&lt;/span&gt;&lt;span class="lnt"&gt;13&#10;&lt;/span&gt;&lt;span class="lnt"&gt;14&#10;&lt;/span&gt;&lt;span class="lnt"&gt;15&#10;&lt;/span&gt;&lt;span class="lnt"&gt;16&#10;&lt;/span&gt;&lt;span class="lnt"&gt;17&#10;&lt;/span&gt;&lt;span class="lnt"&gt;18&#10;&lt;/span&gt;&lt;span class="lnt"&gt;19&#10;&lt;/span&gt;&lt;span class="lnt"&gt;20&#10;&lt;/span&gt;&lt;span class="lnt"&gt;21&#10;&lt;/span&gt;&lt;span class="lnt"&gt;22&#10;&lt;/span&gt;&lt;span class="lnt"&gt;23&#10;&lt;/span&gt;&lt;span class="lnt"&gt;24&#10;&lt;/span&gt;&lt;span class="lnt"&gt;25&#10;&lt;/span&gt;&lt;span class="lnt"&gt;26&#10;&lt;/span&gt;&lt;span class="lnt"&gt;27&#10;&lt;/span&gt;&lt;span class="lnt"&gt;28&#10;&lt;/span&gt;&lt;span class="lnt"&gt;29&#10;&lt;/span&gt;&lt;span class="lnt"&gt;30&#10;&lt;/span&gt;&lt;span class="lnt"&gt;31&#10;&lt;/span&gt;&lt;span class="lnt"&gt;32&#10;&lt;/span&gt;&lt;span class="lnt"&gt;33&#10;&lt;/span&gt;&lt;span class="lnt"&gt;34&#10;&lt;/span&gt;&lt;span class="lnt"&gt;35&#10;&lt;/span&gt;&lt;span class="lnt"&gt;36&#10;&lt;/span&gt;&lt;span class="lnt"&gt;37&#10;&lt;/span&gt;&lt;span class="lnt"&gt;38&#10;&lt;/span&gt;&lt;span class="lnt"&gt;39&#10;&lt;/span&gt;&lt;span class="lnt"&gt;40&#10;&lt;/span&gt;&lt;span class="lnt"&gt;41&#10;&lt;/span&gt;&lt;span class="lnt"&gt;42&#10;&lt;/span&gt;&lt;span class="lnt"&gt;43&#10;&lt;/span&gt;&lt;span class="lnt"&gt;44&#10;&lt;/span&gt;&lt;span class="lnt"&gt;45&#10;&lt;/span&gt;&lt;span class="lnt"&gt;46&#10;&lt;/span&gt;&lt;span class="lnt"&gt;47&#10;&lt;/span&gt;&lt;span class="lnt"&gt;48&#10;&lt;/span&gt;&lt;span class="lnt"&gt;49&#10;&lt;/span&gt;&lt;span class="lnt"&gt;50&#10;&lt;/span&gt;&lt;span class="lnt"&gt;51&#10;&lt;/span&gt;&lt;span class="lnt"&gt;52&#10;&lt;/span&gt;&lt;span class="lnt"&gt;53&#10;&lt;/span&gt;&lt;span class="lnt"&gt;54&#10;&lt;/span&gt;&lt;span class="lnt"&gt;55&#10;&lt;/span&gt;&lt;span class="lnt"&gt;56&#10;&lt;/span&gt;&lt;span class="lnt"&gt;57&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;plt&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;akshare&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;ak&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;pandas&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;pd&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;quantstats&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;qs&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 获取A股个股前复权日线数据，示例：贵州茅台 sh600519（新浪数据源）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ak&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stock_zh_a_daily&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;symbol&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;sh600519&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;start_date&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;20200101&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;end_date&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;20260101&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;adjust&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;qfq&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 时间索引处理&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;date&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_datetime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;date&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set_index&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;date&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;inplace&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 计算长短均线&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ma5&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;close&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rolling&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;window&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ma20&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;close&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rolling&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;window&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 生成交易信号：5日均线上穿20日均线买入，下穿卖出&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;signal&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;loc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ma5&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ma20&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;signal&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 计算策略每日收益率&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;return&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;close&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pct_change&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;strategy_return&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;signal&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shift&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;return&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 绘制价格与均线&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;figure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;figsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;plot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;close&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;label&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;close&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;plot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ma5&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;label&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;MA5&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;plot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ma20&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;label&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;MA20&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Price and Moving Average&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;legend&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 使用quantstats输出策略报告&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;qs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reports&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;full&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;strategy_return&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;benchmark&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;return&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 识别金叉、死叉&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;golden_cross&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ma5&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ma20&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ma5&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shift&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ma20&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shift&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;death_cross&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ma5&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ma20&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ma5&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shift&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ma20&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shift&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;figure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;figsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;plot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;close&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;label&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;close&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;plot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ma5&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;label&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;MA5&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;plot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ma20&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;label&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;MA20&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;scatter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;golden_cross&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;golden_cross&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]][&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;close&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;marker&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;^&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;red&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;label&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Golden Cross(Buy)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;scatter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;death_cross&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;death_cross&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]][&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;close&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;marker&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;v&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;green&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;label&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Death Cross(Sell)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Price and Moving Average with Cross Signal&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;legend&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 输出Markdown指标表格，可直接复制到博客&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;benchmark_cum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;return&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cumprod&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;strategy_cum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;strategy_return&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cumprod&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;|指标|基准（持有茅台）|双均线策略|&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;|----|----|----|&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;|累计收益|&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;benchmark_cum&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;.2%&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;|&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;strategy_cum&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;.2%&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;|&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;|最大回撤|-47.48%|-38.30%|&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;|年化CAGR|6.86%|5.20%|&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;|年化波动率|27.72%|19.56%|&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;|夏普比率|0.38|0.36|&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;|持仓时间|100%|50%|&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-28" class="outline-3"&gt;&#10;&lt;h3 id="headline-28"&gt;&#10;两条可选学习路线&#10;&lt;/h3&gt;&#10;&lt;div id="outline-text-headline-28" class="outline-text-3"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;A股小白路线：akshare + pandas + quantstats（Jupyter Lab 做实验）&lt;/li&gt;&#10;&lt;li&gt;海外金融爱好者路线：OpenBB&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-29" class="outline-3"&gt;&#10;&lt;h3 id="headline-29"&gt;&#10;附录1：2026-06-01 Top10项目列表（Stars ≥500）&#10;&lt;/h3&gt;&#10;&lt;div id="outline-text-headline-29" class="outline-text-3"&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;TradingAgents: 多代理LLM金融交易框架 ~12k⭐&#10;&lt;a href="https://github.com/TauricResearch/TradingAgents"&gt;https://github.com/TauricResearch/TradingAgents&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;OpenBB: 面向分析师和量化投资者的金融数据平台 10k⭐&#10;&lt;a href="https://github.com/OpenBB-finance/OpenBB"&gt;https://github.com/OpenBB-finance/OpenBB&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;freqtrade: 开源加密货币交易机器人 9k⭐&#10;&lt;a href="https://github.com/freqtrade/freqtrade"&gt;https://github.com/freqtrade/freqtrade&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;qlib: 微软AI量化投资平台 8k⭐&#10;&lt;a href="https://github.com/microsoft/qlib"&gt;https://github.com/microsoft/qlib&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;nautilus_trader: Rust核心高性能算法交易平台 6k⭐&#10;&lt;a href="https://github.com/nautechsystems/nautilus_trader"&gt;https://github.com/nautechsystems/nautilus_trader&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;stockbot-on-groq: Groq LLM AI股票交易机器人 5k⭐&#10;&lt;a href="https://github.com/bmos/stockbot-on-groq"&gt;https://github.com/bmos/stockbot-on-groq&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;QuantConnect Lean: 开源算法交易引擎 5k⭐&#10;&lt;a href="https://github.com/QuantConnect/Lean"&gt;https://github.com/QuantConnect/Lean&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;FinRL: 深度强化学习金融量化框架 4k⭐&#10;&lt;a href="https://github.com/AI4Finance-Foundation/FinRL"&gt;https://github.com/AI4Finance-Foundation/FinRL&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;quantstats: 量化投资组合分析工具库 3k⭐&#10;&lt;a href="https://github.com/ranaroussi/quantstats"&gt;https://github.com/ranaroussi/quantstats&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;akshare: 中国金融市场数据接口库 ~3k⭐&#10;&lt;a href="https://github.com/akfamily/akshare"&gt;https://github.com/akfamily/akshare&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-30" class="outline-3"&gt;&#10;&lt;h3 id="headline-30"&gt;&#10;附录2：补充CSDN文章4个AI量化开源工具&#10;&lt;/h3&gt;&#10;&lt;div id="outline-text-headline-30" class="outline-text-3"&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;qlib：微软AI量化全流程平台 &lt;a href="https://github.com/microsoft/qlib"&gt;https://github.com/microsoft/qlib&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;vnpy(VeighNa)：国内事件驱动实盘交易框架 &lt;a href="https://github.com/vnpy/vnpy"&gt;https://github.com/vnpy/vnpy&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;RD-Agent：微软自动因子挖掘Agent &lt;a href="https://github.com/microsoft/RD-Agent"&gt;https://github.com/microsoft/RD-Agent&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Abu：多市场技术分析回测框架 &lt;a href="https://github.com/bbfamily/abu"&gt;https://github.com/bbfamily/abu&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div id="outline-container-headline-31" class="outline-3"&gt;&#10;&lt;h3 id="headline-31"&gt;&#10;参考链接&#10;&lt;/h3&gt;&#10;&lt;div id="outline-text-headline-31" class="outline-text-3"&gt;&#10;&lt;p&gt;&lt;a href="https://cn.bing.com/search?q=开源量化交易工具&amp;amp;ntref=1"&gt;开源量化交易工具&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&#10;&lt;a href="https://zxy114.github.io/ai-news-daily/published/quant-trading-top10-2026-06-01.html"&gt;📊 量化交易开源项目 Top 10&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&#10;&lt;a href="https://blog.csdn.net/2401_84494441/article/details/146773894"&gt;4 个牛逼 AI 股票量化交易工具，开源&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&#10;&lt;a href="https://www.plumephp.com/ml-python-environment-setup/"&gt;机器学习开发环境搭建：Python、NumPy、pandas 与 Jupyter 生态实战&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&#10;&lt;a href="https://www.doubao.com/thread/xfuKTgrokx7h3RgxW"&gt;量化交易开源项目选择 | 豆包&lt;/a&gt;&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;</description></item></channel></rss>