#!/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" # In[3]: read = xa.record(path) # record 类用来从指定位置读取 csv 文件,并将交易单数据存储在 self.status 中 # 该类可直接接受 pd.read_csv() 的多样的关键字参数,比如 skiprows=1, 这样就可以在真实的记账单首行标注基金名称,而不影响程序处理 # In[4]: read.status # 一个示例的交易单演示 ## 特别注意由于基金申购是按照金额,赎回是按照份额,因此交易单采用此惯例,正数代表申购金额,负数代表赎回份额 ## 数据理论上小数点后两位有效,不过从第二位小数开始,数字起到了一些特殊标记的作用,因此仅完美支持一位小数,对于绝大多数人完全够用 ## 金额是不需要考虑申购和赎回费的,简单记录您申购的总金额或赎回的份额,程序将完全充分的考虑所有申购赎回折算分红等情况,确保和真实持仓波动完全一致 ## 在原始的 csv 形式中,0 不必要显式写出,直接空过去就好 ## 小数点第二位的5,如果当天恰为该基金的登记分红日,则视为选择了分红再投入,否则默认分红拿现金 ## 若负数绝对值小于 0.005,则视为赎回的份额比例而非份额数目, -0.005 表示清仓,依此线性缩放 ## 更进一步的,非交易交易记录或是赎回份额超过持有总数, 程序都将作出协调自洽的处理 ## 账单还可额外增加 property 行,控制金额赎回,分红默认再投入等更多细节,具体请参考文档 # * 现在分析一下 001180 基金的交易情形 # In[5]: f = xa.fundinfo("001180") # In[6]: f # In[7]: f_t = xa.trade(f, read.status) # 给定标的和账单,交易就生成了 # In[8]: f_t.aim # 查看该交易的标的 # In[9]: f_t.dailyreport() # 该交易截止昨天的信息总结,也可以给定'2018-01-01'形式的时间参数,来了解任意一天的基金持有概况 # In[11]: f_t.xirrrate("2018-07-01") # 计算截止7.1的 xirr 收益率,最客观的年化收益指标 # In[10]: f_t.v_totvalue() # 基金持有金额的变动可视化 # In[11]: f_t.v_tradecost() # 同时比较基金净值和自己交易的单位成本的变动 # 上面橙色点代表买入,蓝色点代表卖出,点的大小代表买卖数量 # In[12]: f_t.v_tradevolume(freq="W") # 基金交易量的可视化 # 其他基金的交易分析同理。除了基金,指数类和货币基金类也可以作为交易标的进行交易和分析