今天实现用参数树来呈现回测结果的小例子。
回测系统结果要展示的参数较多,使用参数树来呈现会比较清晰。
如下图所示:
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5 import QtWidgets,QtCore
from pyqtgraph.parametertree import ParameterTree
from pyqtgraph.parametertree import Parameter
from qtpy import QtCore
from qtpy.QtWebEngineWidgets import QWebEngineView
# 创建参数树的数据
params = [
{'name': '基本收益信息', 'type': 'group', 'children': [
{'name': '回测收益', 'type': 'float', 'value': 132.836, 'siPrefix': True, 'suffix': '%'},
{'name': '回测年化收益', 'type': 'float', 'value': 32.712, 'step': 0.1, 'siPrefix': True, 'suffix': '%'},
{'name': '基准收益', 'type': 'float', 'value': 48.261},
{'name': '基准年化收益', 'type': 'float', 'value': 14.096, 'step': 0.01},
]},
{'name': '风险指标', 'type': 'group', 'children': [
{'name': 'Beta', 'type': 'float', 'value': 0.4580},
{'name': '夏普比', 'type': 'float', 'value': 1.2993},
{'name': '最大回撤', 'type': 'float', 'value': 16.295, 'step': 10, 'siPrefix': True, 'suffix': '%'},
]},
]
class WidgetParams(QWidget):
def __init__(self):
super(WidgetParams, self).__init__()
self.initUI()
def initUI(self):
t = ParameterTree()
layout = QtWidgets.QHBoxLayout()
tree_widget = QtWidgets.QWidget()
tree_widget.setMinimumWidth(300)
layout.addWidget(tree_widget)
vLayout = QVBoxLayout()
tree_widget.setLayout(vLayout)
vLayout.addWidget(t)
## 创建参数对象树
p = Parameter.create(name='params', type='group', children=params)
t.setParameters(p, showTop=False)
t.setHeaderLabels(["参数", "数值"])
self.web = QWebEngineView(self)
layout.addWidget(self.web)
#self.web.load(
# QUrl.fromLocalFile(self.plotly_pyqt5.get_plotly_path_product_vs_hs300()))
self.setLayout(layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = WidgetParams()
demo.show()
sys.exit(app.exec_())
关于作者:魏佳斌,互联网产品/技术总监,北京大学光华管理学院(MBA),特许金融分析师(CFA),资深产品经理/码农。偏爱python,深度关注互联网趋势,人工智能,AI金融量化。致力于使用最前沿的认知技术去理解这个复杂的世界。
联系客服