分栏右侧显示卡
下面是分栏右侧的显示卡部分,使用 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.效果