kquant之161005富国天惠回测
回望:之前的发表的学习心得《 kquant之周线ma5之上买入策略》已是3年前的事情;3年过去,有了一些新的心得。
这段时间对富国天惠进行回测(代码见:附录1),发现规律:
- 朱总的基金非常优秀: 不管什么时候买入都是对的;
- 分别用10,30,60日的均线作为止损和买入的点都不能取得更好的成绩(盈亏同源);
- 要取得更好的成绩是跌了要敢买,涨多了要敢卖的策略(代码见:附录2)。
结论:
- 淡化择时: 对于正期望的事情,不需要择时。(正期望的事情参与有意义:零和像打麻将;负期望像6合彩, 都没有意义);(之前学习史丹·温斯坦的《笑傲牛熊》总觉得是需要择时的;这次对富国天惠进行了回测和学习了朱总朱少醒的演讲,明白了可以不要择时);
- 除非非常大的高估,否则降仓位意义不大:价值创造决定价值分配,金钱永不眠。(2007年,巴菲特和Ted Seides的指数基金对赌也部分地说明了这一点);
- 天惠的年化也是之前在《 马拉松长跑的能力极限 》说到的基金年化的极限,明白了十多看前戴总在第一财经的叶蓉《财富人生》的访谈中说的:找好的公募基金。
附录1:
https://github.com/karlzheng/kquant/blob/master/161005/wechat.mp.py
#-*- coding : utf-8-*-
import numpy as np
import pandas as pd
from pyecharts.charts import Line
from pyecharts import options as opts
data = pd.read_csv('data/161005.net_value.csv')
data['dt_idx'] = pd.to_datetime(data['净值日期'])
data['Close'] = data['复权单位净值']
data.set_index('dt_idx', inplace=True)
data = data.sort_values(by = 'dt_idx', ascending = True)
SHORT_PERIOD = 60
LONG_PERIOD = 60
dc = data['Close']
ma1 = data['Close'].rolling(SHORT_PERIOD).mean()
ma2 = data['Close'].rolling(LONG_PERIOD).mean()
nna = pd.notna
sum = 1.0
buyed = False
len_ma1 = len(ma1)
last_price = 1
now_price = 1
p0 = 0
p1 = 1
while p1 < len_ma1:
m10 = ma1[p0]
m11 = ma1[p1]
m20 = ma2[p0]
m21 = ma2[p1]
c = dc[p1]
if nna(m10) and nna(m11) and nna(m20) and nna(m21):
if (not buyed):
if (c > m10):
now_price = c
sum -= c
buyed = True
else:
if (c < m10):
last_price = c
sum += c
last_price = c
buyed = False
p0 += 1
p1 += 1
if (buyed):
sum += c
buyed = False
print(sum)
附录2:
https://github.com/karlzheng/kquant/blob/master/161005/wechat.mp.py
if (not buyed):
if (c > m10) or (c < last_price * 0.75):
now_price = c
sum -= c
buyed = True
else:
if (c < m10) and ( c > now_price * 1.3):
last_price = c
sum += c
last_price = c
buyed = False