年化收益20%夏普1.1的创业板动量策略

策略名称: 创业板动量策略

策略简介:动量交易是通过分析近期价格趋势的强弱来买卖金融资产的策略,创业板动量策略使用创业板一个月的涨幅作为交易信号,如果涨幅大于8%,则买入,如果涨幅小于0,则卖出。

策略表现:夏普值1.1,最大回撤18%,年化回报20%。


回测曲线:
图片

源代码:

# 安装依赖包
#!pip install akshare quantstats
# 导入必要的包
import warnings
warnings.filterwarnings('ignore')
import time
import akshare as ak
import numpy as np
import pandas as pd import quantstats as qs import matplotlib.pyplot as plt import matplotlib.ticker as ticker %matplotlib inline  # 加载数据并可视化 cyb = ak.stock_zh_index_daily(symbol="sz399006") cyb = cyb.set_index("date") cyb.index = cyb.index.astype(str) # 计算动量信号 def signal(x):     if x > 0.08:         return 1     if x < 0:         return 0     return np.nan window = 21 cyb["day_return"] = cyb.close.rolling(2).apply(lambda x:(x[-1]-x[0])/x[0]) cyb["pct_chg"]=cyb.close.rolling(window).apply(lambda x: (x[-2]-x[0])/x[0]) cyb["signal"]= cyb.apply(lambda row: signal(row["pct_chg"]), axis=1) cyb["signal"] = cyb["signal"].fillna(method='ffill').fillna(0) cyb['change_position'] = cyb['signal'].rolling(2).apply(lambda x:x[0]!=x[1]) cyb["signal"].plot(figsize=(20,5)) # 回测分析 backtest_data = cyb.loc['2012-01-01':'2023-03-31'] backtest_data["market_return"] = np.cumprod(backtest_data.day_return.values + 1) *100 backtest_data["signal_return"] = np.cumprod((backtest_data["signal"].values * backtest_data.day_return.values + 1)*(1-0*backtest_data['change_position'])) * 100 _ = plt.figure(figsize=(205)) plt.xlabel('Time')  plt.ylabel('Return') _ = plt.plot(backtest_data["market_return"].index,backtest_data["market_return"].values) _ = plt.plot(backtest_data["signal_return"].index,backtest_data["signal_return"].values) _ = plt.legend(['market_return''signal_return', ])  ax = plt.gca() ax.xaxis.set_major_locator(ticker.MultipleLocator(250)) # 计算策略表现指标 result = {} for i in ["market_return""signal_return"]:     result[i] = []     for j in ["avg_return""volatility""sharpe""max_drawdown""win_rate"]:         exec( f"r = qs.stats.{j}(backtest_data[i])")         result[i].append(r) result = pd.DataFrame(result, index=["avg_return""volatility""sharpe""max_drawdown""win_rate"])

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/110950
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 12分钟前
下一篇 9分钟前

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注