#!/usr/bin/env python # coding: utf-8 # In[1]: import xalpha as xa import pandas as pd xa.set_display("notebook") # # 多基金投资系统的管理 # ### 开放系统 # In[2]: path = "../../tests/demo.csv" read = xa.record(path) # 依旧先读取交易单的 csv 文件 # In[3]: sysopen = xa.mul(status=read.status) # 基金投资组合既可以由一系列单个基金的交易类生成, 也可以直接依据给定的交易单一次性生成,这里采取后者 # In[4]: sysopen.combsummary().sort_values(by="基金现值", ascending=False) # 先看一下今日投资组合概述 # In[5]: sysopen.xirrrate() # 最重要的总是先问一下系统的整体收益年化如何 # In[6]: sysopen.v_positions("2018-06-01") # 可视化指定日期的仓位分布 # In[7]: sysopen.v_positions_history() # 基金组合就像一条河流。。。 # In[8]: sysopen.v_tradevolume(freq="W") # 整体交易情况一览, 以周为柱形图单位 # In[9]: sysopen.totcftable # 基金组合的合并现金流量表 # In[10]: ev = sysopen.evaluation(start="2018-01-01") # 还可以生成关于投资基金的 evaluate 类,以便对投资的基金本身进行分析 # In[11]: ev.v_correlation(end="2018-08-01") # 可以通过热力图来查看不同基金净值走势的相关性 # ### 封闭系统 # 我们也可以研究一个封闭系统的组合投资,此时需要货币基金提供资金出入的功能,这样的系统净值更容易定义 # 可以应用之前研究指数和基金时使用过的量化方法。 # In[12]: sysopen.fundtradeobj # In[13]: # 这次我们使用基金交易类作为初始化参数 sysclose = xa.mulfix(*sysopen.fundtradeobj, totmoney=5000) # totmoney 表示封闭系统初始的总钱数 # 若不设置 cashobj 选项,则默认为 cashobj = cashinfo(interest=0.0001, start='2012-01-01') # In[14]: sysclose.unitvalue("2018-07-04") # 封闭的基金投资组合整体就像一个单一基金交易类,有净值数据 # In[15]: sysclose.combsummary("2018-03-09") # 投资组合的分项纵览 # In[16]: sysclose.bcmkset(xa.indexinfo("0000905")) # 设置比较基准,开始对此封闭的基金投资系统进行量化评估 # In[17]: sysclose.v_netvalue() # In[18]: sysclose.alpha(), sysclose.beta(), sysclose.sharpe() # In[19]: sysclose.max_drawdown() # 系统的最大回撤 # In[20]: sysclose.riskfree # 进行量化计算中使用的无风险年化利率的参考值, 可在设置 benchmark 时调整该值 # In[ ]: