import xalpha as xa
import pandas as pd
xa.set_display("notebook")
holdings.py is found and loaded within xalpha dir
path='../../tests/demo.csv'
read = xa.record(path)
# 依旧先读取交易单的 csv 文件
sysopen = xa.mul(status=read.status)
# 基金投资组合既可以由一系列单个基金的交易类生成, 也可以直接依据给定的交易单一次性生成,这里采取后者
sysopen.combsummary().sort_values(by="基金现值",ascending=False) # 先看一下今日投资组合概述
sysopen.xirrrate() # 最重要的总是先问一下系统的整体收益年化如何
0.004765231128134345
sysopen.v_positions('2018-06-01') # 可视化指定日期的仓位分布
sysopen.v_positions_history() # 基金组合就像一条河流。。。
sysopen.v_tradevolume(freq='W')
# 整体交易情况一览, 以周为柱形图单位
sysopen.totcftable # 基金组合的合并现金流量表
ev=sysopen.evaluation(start='2018-01-01') # 还可以生成关于投资基金的 evaluate 类,以便对投资的基金本身进行分析
ev.v_correlation(end='2018-08-01') #可以通过热力图来查看不同基金净值走势的相关性
我们也可以研究一个封闭系统的组合投资,此时需要货币基金提供资金出入的功能,这样的系统净值更容易定义 可以应用之前研究指数和基金时使用过的量化方法。
sysopen.fundtradeobj
(广发医药卫生联接A 交易情况, 广发中债7-10年国开债指数A 交易情况, 富国中证红利指数增强A 交易情况, 广发中证全指金融地产联接A 交易情况, 工银中证传媒指数分级 交易情况)
# 这次我们使用基金交易类作为初始化参数
sysclose = xa.mulfix(*sysopen.fundtradeobj, totmoney=5000)
# totmoney 表示封闭系统初始的总钱数
# 若不设置 cashobj 选项,则默认为 cashobj = cashinfo(interest=0.0001, start='2012-01-01')
sysclose.unitvalue('2018-07-04') # 封闭的基金投资组合整体就像一个单一基金交易类,有净值数据
1.016426
sysclose.combsummary('2018-03-09') # 投资组合的分项纵览
sysclose.bcmkset(xa.indexinfo('0000905')) # 设置比较基准,开始对此封闭的基金投资系统进行量化评估
sysclose.v_netvalue()
sysclose.alpha(),sysclose.beta(),sysclose.sharpe()
(0.013307324282019296, 0.3046674455277358, -0.17007378585189745)
sysclose.max_drawdown() # 系统的最大回撤
(Timestamp('2018-01-24 00:00:00'), Timestamp('2018-10-18 00:00:00'), -0.1120821303964955)
sysclose.riskfree # 进行量化计算中使用的无风险年化利率的参考值, 可在设置 benchmark 时调整该值
0.0371724