def get_k_day_return(code, days): """ 获得k日收益率,计算公式:(当日收盘价-k日前收盘价)/当日收盘价 """ fname = data.get_filename(code) df = data.read_data(fname) return df['close'].pct_change(periods=days)
def get_k_day_volatility(code, days): """ 获得k日波动率 """ fname = data.get_filename(code) df = data.read_data(fname) df["return"] = df["close"].pct_change() return df["return"].rolling(window=days).std() * np.sqrt(243)
def get_k_day_average_return(code, days): """ 获得k日平均收益率 """ fname = data.get_filename(code) df = data.read_data(fname) df["return"] = df['close'].pct_change() return df["return"].rolling(window=days).mean()
def get_k_day_return(code, days=5, start_date="2012-01-01", end_date="2017-01-01"): """ 获得k日收益率,计算公式:(当日收盘价-k日前收盘价)/当日收盘价 """ fname = data.get_filename(code) df = data.read_data(fname) df = df[df.index >= start_date] factor_name = "%d-day return" % (days) df[factor_name] = df['close'].pct_change(periods=days) return df[factor_name]
def merge_fundamental(code): ''' 因为基本面数据是季度更新,时间轴上跟stock数据不同,故先需要做merge操作 ''' fname = data.get_fundamental_filename(code) fdf = data.read_data(fname) fname = data.get_filename(code) df = data.read_data(fname) dates = df.index df = df.merge(fdf, left_index=True, right_index=True, how='outer') df = df.fillna(method='ffill') df = df.loc[dates] return df
def get_k_day_average_return(code, days=5, start_date="2012-01-01", end_date="2017-01-01"): """ 获得k日平均收益率 """ fname = data.get_filename(code) df = data.read_data(fname) df = df[df.index >= start_date] factor_name = "%d-day average return" % (days) df["return"] = df['close'].pct_change() df[factor_name] = df["return"].rolling(window=days).mean() return df[factor_name]
def get_k_day_volatility(code, days, start_date, end_date): """ 获得k日波动率 """ fname = data.get_filename(code) df = data.read_data(fname) df = df[df.index >= start_date] factor_name = "%d-day volatility"%(days) df["return"] = df["close"].pct_change() df[factor_name] = df["return"].rolling(window=days).std() * np.sqrt(243) return df[factor_name]