快速开始¶
xalpha 可以用来对场外基金和指数进行方便的追踪和研究, 同时可以实现投资情况的汇总管理与数据分析,并且支持一些简单的基金购买策略回测。
本文仅简述最基本的模块使用的一小部分,关于更多的函数和用法尤其是可视化的部分,请参考具体示例 具体示例。 关于数据结构和内部的模块设计,请参考高级用法 高级用法。
基金和指数的信息¶
使用 xalpha.info.fundinfo
来获取场外基金的基本信息和历史每日净值情况。
其中净值以 pandas.DataFrame
的格式存储。
Note
基金信息只支持按净值法结算的场外基金,也即大部分货币基金不被支持。
代码示例:
>>> import xalpha as xa
>>> zzyl = xa.fundinfo('000968')
>>> zzyl
广发养老指数A
>>> zzyl.info()
fund name: 广发养老指数A
fund code: 000968
fund purchase fee: 0.12%
fund redemption fee info: ['小于7天', '1.50%', '大于等于7天,小于1年', '0.50%', '大于等于1年,小于2年', '0.30%', '大于等于2年', '0.00%']
>>> zzyl.price[zzyl.price['date']<='2015-02-27']
comment date netvalue totvalue
0 0 2015-02-13 1.0000 1.0000
1 0 2015-02-17 1.0000 1.0000
2 0 2015-02-27 1.0123 1.0123
使用 xalpha.info.indexinfo
来获取相应指数的每日净值情况。
Note
indexinfo() 对应的指数代码为7位数,其中后六位是正常的指数代码,第一位用来标记市场,0是沪市,1是深市。
代码示例:
>>> zzyli = xa.indexinfo('1399812')
>>> zzyli
养老产业
>>> zzyli.price[zzyli.price['date']=='2018-08-01']
comment date netvalue totvalue
1 0 2018-08-01 7.603842 7524.4807
Note
对应的 indexinfo().price 表中,netvalue 栏为以初始日归一化后的净值,而 totvalue 栏则是真实的指数值。
单一标的交易处理¶
使用 xalpha.trade.trade
来处理交易情况。
为了生成交易,需要提供标的类 xalpha.info
和交易账单 status table。
账单的具体的数据结构请参考高级用法 高级用法。
代码示例:
>>> yyws = xa.fundinfo('001180') # 交易标的信息
>>> statb = xa.record(path).status # path位置的交易账单csv
>>> yyws_t = xa.trade(yyws, statb)
>>> yyws_t.dailyreport()
{'currentshare': 630.39,
'currentvalue': 504.12,
'date': datetime.datetime(2018, 8, 5, 0, 0),
'originalvalue': 523.86,
'returnrate': -3.7682,
'unitcost': 0.831,
'unitvalue': 0.79969999999999997}
>>> yyws_t.xirrrate('2018-08-01')
-0.01764033506484772
基金投资组合的管理分析¶
使用 xalpha.multiple.mul
可以将多个基金交易类归总,或者根据 status 表格上记录的基金代码自动汇总。
如果选择 xalpha.multiple.mulfix
归总交易情况的话,则所有交易视作封闭系统,资金进出由虚拟的货币基金调节。
代码示例:
>>> invclose = xa.mulfix(yyws_t, totmoney = 6000)
>>> invclose.combsummary()
基金代码 基金名称 基金成本 基金收益率 基金现值
0 001180 广发医药卫生联接A 523.86 -3.7682 504.12
1 mf 货币基金 5476.15 7.3475 5878.51
2 xxxxxx 总计 6000.01 6.3770 6382.63
>>> invopen = xa.mul(status=xa.record(path).status)
>>> invopen.combsummary('2018-07-01').iloc[-1]
基金代码 xxxxxx
基金名称 总计
基金成本 2379.52
基金收益率 -4.2559
基金现值 2278.25
Name: 5, dtype: object
>>> invopen.xirrrate('2018-07-01')
-0.05594572489624858
基金交易策略与回测¶
通过额外导入 policy 模块,使用 xalpha.policy.policy
的子类,进行按一定策略的模拟交易的 status 表格生成,
从而可以进行相关的交易分析,起到策略回测比较的作用。对应类的 self.status 属性即为相应策略的 status 交易表格,
可以用于上述的交易分析使用。
代码示例:
>>> st = xa.policy.buyandhold(yyws,'2016-01-01') # buy and hold from 2016-01-01, 且始终分红再投入
>>> st2 = xa.policy.scheduled(yyws, totmoney = 1000, times=pd.date_range('2016-01-01','2018-06-01',freq='W-THU')) # 定投 status 的生成:从2016-01-01 到 2018-06-01 每周四进行定额定投 1000 元。
交易策略的监视和定时提醒¶
使用 xalpha.realtime.review
可以实现策略的监测和邮件的发送,具体使用可以查看 示例