分栏右侧显示卡
下面是分栏右侧的显示卡部分,使用 tabs 来分别展示“绩效分析”及“交易明细”。
绩效分析
1 | def generate_display_tabs(): |
下面是分栏右侧的显示卡部分,使用 tabs 来分别展示“绩效分析”及“交易明细”。
1 | def generate_display_tabs(): |
阿尔法 (Alpha)
Alpha 或 \(\alpha\),指的是一种投资相对于基准指数或市场基准的超额收益。Alpha 是投资策略成功与否的指标之一,反映了投资经理或投资策略在控制风险的前提下,相比基准市场(如标普 500 指数、沪深 300 等)创造的额外价值。 在金融分析中,Alpha 收益(Alpha Return)指的是一种投资相对于基准指数或市场基准的超额收益。Alpha 是投资策略成功与否的指标之一,反映了投资经理或投资策略在控制风险的前提下,相比基准市场(如标普 500 指数、沪深 300 等)创造的额外价值。
Alpha 的计算公式如下:
\(\large \begin{equation} \alpha = R_p - (R_f + \beta \times (R_m - R_f)) \end{equation}\)
其中: - \(R_p\) 是投资组合的总收益率; - \(R_f\) 是无风险利率; - \(\beta\) 是投资组合对市场波动的敏感度,表示该组合的系统性风险; - \(R_m\) 是基准市场的收益率。
Alpha 代表了在控制了市场波动(即 Beta)的基础上,投资组合还能产生多少超额收益。这个超额收益体现了投资策略的有效性,也可以被视为投资经理增加的附加价值。
| α范围 | 含义 |
|---|---|
| α=0 | 表明该投资策略准确地反映其内在价值 |
| α>0 | 表明投资策略在一定的风险水平下跑赢了基准,显示出超额收益。 |
| α<0 | 表明该投资策略未能跑赢基准指数,收益不理想。 |
Alpha 的大小:Alpha 越高,说明投资策略的效果越显著,其回报越高,通常是投资经理投资能力的体现。
简而言之,Alpha 收益是投资策略的一个关键表现指标,用于衡量相对于市场的主动管理效果,是投资管理中分析和评估超额收益的重要工具。
使用 MACD 金叉死叉策略回测,时间段为 2024-01-05 至 2024-10-23。基准市场为沪深300。十年期国债收益率为 2.25%。
1 | from sf_account.account import Account |
1 | from sf_query.query import fetch_index_day |
Beta 系数计算方式如下:
\(\large \begin{equation} \beta_i = \frac{标的资产 i 的收益与市场收益的协方差}{市场收益的方差} = \frac{Cov (r_i, r_m)}{\sigma_m^2} \end{equation}\)
1 | # 计算两者的协方差 |
输出为:Covariance: 3.996268373876412e-05,Variance: 0.0031905766470259685,Beta: 0.012525222917310114
1 | rp = annual_return_portfolio |
输出为:Alpha:-0.01486024492682044
下面是分栏左侧的控制卡部分,主要作用是选取回测组合测试,先选择回测账户,然后选择回测策略。然后从数据库中提取数据。用两个下拉框控件及一个按钮控件实现。
首先,我们需要创建 dcc.Store 来存储获取到的数据。在 App 的 layout 中增加以下代码。
1 | pp.layout = dbc.Container( |
现在开始逐步构建页面布局中的元素。先从 Header 开始
1 | # Generate Header |
代码详解:
该代码定义了一个 generate_header 函数,用于生成一个 Dash Bootstrap 网页的顶部标题栏 (Header)。此 Header 包含了一个图标和标题,并且它们按行布局排列。
函数定义: generate_header()
Header 的函数,不接受任何参数。创建 Header 内容:
header = dbc.Row([...]):
Row 容器,使用 dash-bootstrap-components (简称 dbc) 中的 Row 组件,用于行布局。第一列 (dbc.Col):
dbc.Col(html.Img(...), width="auto"):
Img,图像的 src 路径由 app.get_asset_url("sunflower_logo.png") 指定,显示了名为 sunflower_logo.png 的图像文件。width="auto":让这一列宽度根据图像大小自适应。style={"height": "2rem"}:设置图像的高度为 2rem。第二列 (dbc.Col):
dbc.Col(html.H5(...)):
H5 标题元素,显示文本为 “回测分析(Back Test analysis)”,ID 为 "header-title"。Row 样式:
id="header":给 Row 容器赋予 id 值 header,方便之后在样式或回调函数中引用。相关的 css 样式如下:
1 | #header { |
代码解释:
#header: 选择器为 id 为 header 的元素应用样式。
background-color: #ffffff;:设置背景颜色为白色。display: flex;:将 #header 设为 flex 容器,以便其子元素按弹性布局排列。flex-direction: row;:设置主轴为水平方向,使子元素按行排列。align-items: center;:沿着交叉轴(垂直方向)居中对齐 #header 中的子元素。height: 4rem;:设置 #header 的高度为 4rem,保证其在页面中占据适当的垂直空间。#header-title:选择器为 id 为 header-title 的元素应用样式。
font-family: Acumin;:设置字体为 Acumin。font-size: 1.5rem;:字体大小为 1.5rem,相对较大。font-weight: bold;:设置字体粗细为 bold,使文字加粗。color: #5cb3cc;:字体颜色为蓝绿色(#5cb3cc)。margin-left: 1rem;:设置左外边距为 1rem,使其与前面的元素保持适当间距。Logo 的设计可以用 logodesign 完成。
最终效果如图:

在回测分析系统完成后,需要由原来的文字型输出结果转为 web 应用输出。因为输出中需要含有图,表类型的展示元素。考虑使用 Plotly 来完成。原因是基于 Plotly 同时出品了 Dash 生成 app。以及 [[【Dash】Dash-bootstrap主题|Dash Bootstrap 框架]] 来快速开发 web 应用。
应用主要展示两个内容:
设计思路分别如下:

在使用QAAccoount类进行回测时,MongoDB数据库quantaxis中,会涉及到的数据表有 5 个, 分别是:

以下设置为了在每次启动终端时都生效,需要修改 .bashrc
ls彩色命令1 | export LS_OPTIONS='--color=auto' |
Dust Calendar是Obsidian的日历插件。更符合中国习惯的日历插件,支持同时显示公历、农历、星期、节气、节假日、调休等信息。 但是默认的界面与我的整体工作区不太协调。 需要进行定制美化。
如何将JupyterLab中的终端设置为Windows CMD,并且具有和Anaconda Prompt相同的效果,启动后直接进入特定的Conda环境?
1.生成配置文件 1
jupyter lab --generate-config
jupyter_lab_config.py的文件,以Windows系统为例,该文件位于C:\User\<user name>\.jupyter\下。
2.修改配置 编辑jupyter_lab_config.py,查找c.ServerApp.terminado_settings。进行以下设置: 1
2
3## Supply overrides for terminado. Currently only supports "shell_command".
# Default: {}
c.ServerApp.terminado_settings = {'shell_command':['c:\\Windows\\System32\\cmd.exe', '/k','D:\\anaconda3\\Scripts\\activate_terminal.bat','&title','Conda']}shell_command是以字典方式表式,值为列表方式。目录分隔符使用"\"。执行时等效于 c:\Windows\System32\cmd.exe /k D:\anaconda3\Scripts\activate_terminal.bat &title Conda。
其中active_terminal.bat内容如下: 1
2
3@echo off
call D:\anaconda3\Scripts\activate.bat D:\anaconda3
call conda activate Python3.10.14Python3.10.14为创建好的Conda环境名。
3.效果 