原创 可转债轮动因子测试报告

sushi 2天前 37

一、参数设置
select_num = 3
commission = 0.0003
stamp_tax = 0.00
period = 'd'
start_date = '2018-01-01'
end_date ='2023-03-15'
二、因子测试结果

1.amount_volatility 成交量波动因子

def amount_volatility(df, window=20):
"""
交易波动因子——成交量波动
成交量波动,即过去一段时间成交量标准差的相反数,同样的,波
动率最小组为因子值最大
组,波动率最大组为因子值最小组,这个因子代表着做多市场情绪稳定
的行业
Factor=-STD(Volume,window)
@param df:
@param window:
@return:
"""
df.sort_values(['股票代码', '交易日期'], ascending=
[True, True], inplace=True) # 根据symbol,open_time排序
for symbol, group_df in df.groupby('股票代码'):
_ = group_df['成交量'].rolling(window).std()
_.fillna(method='bfill', inplace=True)
df.loc[_.index, 'amount_volatility'] = -_

回测结果:

策略评价指标: 累计净值 1.18 年化收益率 0.03 回测开始时间 2018-01-02 00:00:00 回测结束时间 2023-03-15 00:00:00 最大回撤 -0.364 最大回撤开始时间 2018-04-17 00:00:00 最大回撤结束时间 2018-06-15 00:00:00 年化收益/回撤比 0.09 盈利次数 526.0 亏损次数 553.0 买入胜率 0.42 盈亏比 1.48 夏普比率 0.01

回测收益图

2.total_money_volatility 成交金额波动因子

def total_money_volatility(df, window=20):
"""
交易波动因子——成交金额波动
用过去一段时间的成交金额标准差来衡量行业交易情况的稳定程
度,并取相反数,波动
率最小组为因子值最大组,波动率最大组为因子值最小组。
@param df: Factor=-STD(Amount,window)
@param window:
@return:
"""
df.sort_values(['股票代码', '交易日期'], ascending=
[True, True], inplace=True) # 根据symbol,open_time排序
for symbol, group_df in df.groupby('股票代码'):
_ = group_df['成交额'].rolling(window).std()
_.fillna(method='bfill', inplace=True)
df.loc[_.index, 'total_money_volatility'] = -_

策略评价指标: 累计净值 1.45 年化收益率 0.07 回测开始时间 2018-01-02 00:00:00 回测结束时间 2023-03-15 00:00:00 最大回撤 -0.364 最大回撤开始时间 2018-04-17 00:00:00 最大回撤结束时间 2018-06-15 00:00:00 年化收益/回撤比 0.2 盈利次数 526.0 亏损次数 555.0 买入胜率 0.42 盈亏比 1.56 夏普比率 0.02

3.MOM: 动量因子

def momentum(df, window1=20):
"""
@param df:
@param window1:
@return:
"""
df.sort_values(['股票代码', '交易日期'], ascending=
[True, True], inplace=True)
for symbol, group_df in df.groupby('股票代码'):
_ = ta.MOM(group_df['收盘价_复权'],
timeperiod=window1)
_.fillna(method='bfill', inplace=True)
df.loc[_.index, 'momentum'] = _

策略评价指标: 累计净值 0.36 年化收益率 -0.18 回测开始时间 2018-01-02 00:00:00 回测结束时间 2023-03-15 00:00:00 最大回撤 -0.779 最大回撤开始时间 2018-04-17 00:00:00 最大回撤结束时间 2022-11-18 00:00:00 年化收益/回撤比 -0.23 盈利次数 466.0 亏损次数 606.0 买入胜率 0.37 盈亏比 1.51 夏普比率 -0.05

4.价格因子 (正股价格/正股前N日价格均值 )

def price_factor(df, N=30):
df.sort_values(['股票代码', '交易日期'], ascending=
[True, True], inplace=True)
for symbol, group_df in df.groupby('股票代码'):
_ = group_df['正股收盘价'] / group_df['正股收盘
价'].rolling(N).mean()
_.fillna(method='bfill', inplace=True)
df.loc[_.index, 'price_factor'] = _

策略评价指标: 累计净值 0.74 年化收益率 -0.06 回测开始时间 2018-01-02 00:00:00 回测结束时间 2023-03-15 00:00:00 最大回撤 -0.597 最大回撤开始时间 2021-09-01 00:00:00 最大回撤结束时间 2023-03-03 00:00:00 年化收益/回撤比 -0.09 盈利次数 508.0 亏损次数 573.0 买入胜率 0.4 盈亏比 1.48 夏普比率 -0.01

5.收益率因子(正股 N 日收益率)

def return_factor(df, N=30):
df.sort_values(['股票代码', '交易日期'], ascending=
[True, True], inplace=True)
for symbol, group_df in df.groupby('股票代码'):
_ = group_df['正股收盘价'].pct_change().fillna(0)
_ = _.rolling(N).sum()
_.fillna(method='bfill', inplace=True)
df.loc[_.index, 'return_factor'] = _

策略评价指标: 累计净值 0.42 年化收益率 -0.15 回测开始时间 2018-01-02 00:00:00 回测结束时间 2023-03-15 00:00:00 最大回撤

本主题为课程学员专享,成为股票量化投资课程学员后可免费阅读

成为学员
最新回复 ( 0条评论 )


官方微信
码力十足学量化
Powered by Xiuno BBS 4.0.7

官方微信