In [1]:
import xalpha as xa
import pandas as pd

xa.set_display("notebook")
holdings.py is found and loaded within xalpha dir

指定标的的交易分析

  • 想要进行交易分析首先需要交易单
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 行,控制金额赎回,分红默认再投入等更多细节,具体请参考文档
Out[4]:
  • 现在分析一下 001180 基金的交易情形
In [5]:
f = xa.fundinfo("001180")
In [6]:
f
Out[6]:
广发医药卫生联接A
In [7]:
f_t = xa.trade(f, read.status)  # 给定标的和账单,交易就生成了
In [8]:
f_t.aim  # 查看该交易的标的
Out[8]:
广发医药卫生联接A
In [9]:
f_t.dailyreport()  # 该交易截止昨天的信息总结,也可以给定'2018-01-01'形式的时间参数,来了解任意一天的基金持有概况
Out[9]:
In [11]:
f_t.xirrrate("2018-07-01")  # 计算截止7.1的 xirr 收益率,最客观的年化收益指标
Out[11]:
0.04879311024975706
In [10]:
f_t.v_totvalue()  # 基金持有金额的变动可视化
Out[10]:
In [11]:
f_t.v_tradecost()  # 同时比较基金净值和自己交易的单位成本的变动
# 上面橙色点代表买入,蓝色点代表卖出,点的大小代表买卖数量
Out[11]:
In [12]:
f_t.v_tradevolume(freq="W")  # 基金交易量的可视化
Out[12]:

其他基金的交易分析同理。除了基金,指数类和货币基金类也可以作为交易标的进行交易和分析