1,仓位一个表,收盘价一个表,计算权益端的资金
df_close = pd.read_excel('close.xlsx',index_col='日期')
df_pos = pd.read_excel('pos.xlsx',index_col='日期')
# numpy转 dataframe
b = np.array(df_close)* np.array(df_pos)
c = pd.DataFrame(b.sum(axis=1),columns=['net_value'],index=df_pos.index)
# 直接用dataframe的乘法也行,只是我记成了pd.dot,应该用pd.mul
d = df_close.mul(df_pos).sum(axis=1)
顺便普及一下dataframe加减乘除pd.add, pd.sub, pd.mul, pd.div
2,时间问题:月末最后一个工作日,季度末最后一个工作日
import pandas.tseries.offsets as pto
b = (df_close.index + pto.BQuarterEnd()).unique()
c = (df_close.index + pto.BMonthEnd()).unique()
pandas.tseries.offsets的介绍
3,链接数据库
sql导出到excel,再用python读...
不然python链接数据库
现在问题:a,不知道怎么连接数据库
b,不知道表在哪
明天去了看一下,解决掉这个问题
跟预想的差不多,给出仓位再根据仓位进行历史回测。
保密协议,就不能直接放代码了。
放部分思路吧
- 1-时间
存放time_list中
最后一个pass
然后取t0-t1时间区间作为index - 2-数据库取close
这里需要注意输入和输出的格式问题,
数据库中师兄修改输入日期为数值格式,输出也为数值格式 - 3,建仓
这里有个逐渐建仓的环节,
stocks = j / n_period * total * 0.8
stocks每天分配 j/n_period的资金
这样就可以保证期末是80%的仓位 - 4,计算收益
建仓时候我是用开盘价,然后当天收盘价计算建仓的收益
非建仓期,用后复权股价,计算得到的收益率,按照仓位对应分配加总 - 5,要注意什么时候更新数值
网友评论