【量化交易策略02】基于十字星形态的策略

        十字星是一种K线基本型态。十字星,是一种只有上下影线,没有实体的K线图。开盘价即是收盘价,表示在交易中,股价出现高于或低于开盘价成交,但收盘价与开盘价相等。

        形态分析是传统的技术分析手段,但这种手段是否具有实战价值,一直是具有争议的。传统金融学都不太认可。比如,CFA教材只有很少的篇幅介绍。但本着实证的态度,我今天选择一个股票进行量化回测分析,看看能不能有一个结果。不管策略是否奏效,都是一种量化策略方法,就是基于形态的量化回测。这是一个简单的版本 ,供各位参考。

        建议在Jupyter Notebook 里实现。

import tushare as ts
import talib
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 1.获取数据
pro = ts.pro_api('your token')
start_date = '20200101'
end_date = '20231231'
stock_code = '600519.SH'  # 随机选择标的,不具有任何建议
data = pro.daily(ts_code=stock_code, start_date=start_date, end_date=end_date)
data['trade_date'] = pd.to_datetime(data['trade_date'], format='%Y%m%d')
data.set_index('trade_date', inplace=True)
data.sort_index(inplace=True)
# 2计算十字星信号
data['CDL_DOJI'] = talib.CDLDOJI(data['open'], data['high'], data['low'], data['close'])
data['signal'] = np.where(data['CDL_DOJI'] == 100, 1, np.where(data['CDL_DOJI'] == -100, -1, 0))
# 3 回测策略
data['position'] = data['signal'].replace(to_replace=0, method='ffill')  # 持仓策略
data['daily_return'] = data['close'].pct_change()
data['strategy_return'] = data['position'].shift(1) * data['daily_return']
data['cumulative_strategy_return'] = (1 + data['strategy_return']).cumprod() - 1
# 4计算指标
total_return = data['cumulative_strategy_return'].iloc[-1]
max_drawdown = (data['cumulative_strategy_return'].cummax() - data['cumulative_strategy_return']).max()
annualized_return = (1 + total_return)**(365/len(data)) - 1
annualized_volatility = data['strategy_return'].std() * np.sqrt(252)
print(f'总收益率: {total_return:.2%}')
print(f'最大回撤: {max_drawdown:.2%}')
print(f'年化收益率: {annualized_return:.2%}')
print(f'年化波动率: {annualized_volatility:.2%}')
# 5绘图
plt.figure(figsize=(12, 6))
plt.plot(data.index, data['cumulative_strategy_return'], label='策略累计收益率')
plt.title('策略表现')
plt.legend()
plt.show()

结果:

总收益率: 64.38%
最大回撤: 119.14%
年化收益率: 20.57%
年化波动率: 29.58%

         通过与被动持有策略相比,基于十字星的择时策略收益率高达20.57%显著跑赢标的证券。根据资金曲线的走势,若策略设置一定的止损和止盈,该策略会有更好的收益表现。(仅为回测方法介绍,所选标的和方法不具有投资建议!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值