基本策略
目录
1 均线策略
1.1 C.J.Neely, P.A.Weller, Technical analysis in the foreign exchange market, Working Paper, Federal Reserve of St.Louis,2011.
1) 策略
2) 收益率回测
1.2 Valeriy Zakamulin, Market timing with moving averages,2017
1) 移动平均的几种类型
I 基本类
i. 简单移动平均 Simple Moving Average(SMA)
ii. 线性移动平均 Linear Moving Average(LMA)
iii. 指数移动平均 Exponential Moving Average(EMA)
II 进阶:平均中的平均 Moving Averages of Moving Averages
i. 三角移动平均 Triangular Moving Average
ii.双/三指数平滑 Double and Triple Exponential Smoothing
III 混合移动平均 Double Exponential Moving Average (DEMA), by Mulloy (1994a)
2) 均线策略
i. 动量法则 Momentum Rule
ii.均线策略 Moving Average Change of Direction Rule
iii. Price Minus Moving Average Rule
iv. 均线交叉 Moving Average Crossover Rule (MAC)
v.多均线策略
vi.均线收敛/发散规则 Moving Average Convergence/Divergence Rule
1.3 Valeriy Zakamulin, A Comprehensive Look at the Empirical Performance of Moving Average Trading Strategies, SSRN, Dec. 11,2015
说明:1.3和1.2基本一致,故略
1.4 F. Papailias, D.D. Thomakos, An improved moving average technical trading rule, Physica A 428(2015),458-469
属于对均线策略的优化,不知这个优化策略是否权威,所以暂时没有复制算法
2 新高策略
George, Hwang, The 52-Week High Momentum Investing, The Journal of Finance,Vol Lix No.5,Oct. 2004
1)指标构建
2)策略构建
3)收益率回测
此文提出的动量策略比较经典,以致后来的许多文献都以此为基础展开分析
- Ming Liu and Qianqiu Liu (2009),The 52-Week High Momentum Strategy in International Stock Markets
- Alsubaie and Najand (2008),Trading volume, Price Momentum,and the 52-Week High Momentum Strategy in the Saudi Stock Market
正文
说明:设我们获取到的数据集命名为为df。
1 均线策略
1.1 C.J.Neely, P.A.Weller, Technical analysis in the foreign exchange market, Working Paper, Federal Reserve of St.Louis,2011.
An MA rule compares a short and a long moving average of past prices and generates a buy (sell) signal if the short moving average intersects the long moving average from below (above). For example, one widely used rule, which we write as MA(5, 20), compares a 5-day and a 20-day moving average.
1) 策略
import pandas as pd
import numpy as np
import math
## 均线构建 (参数n为均线构建期间)
def MA(n):
df['MA'+str(n)] = pd.rolling_mean(df['close'], n)
print(df.head())
MA(5) # 5日均线
MA(20) # 20日均线
## 多空信号
lst_signal=[]
df['signal']=df['MA5']-df['MA20']
for i in df['signal']:
if i>0:
lst_signal.append(1) # 多头信号
else:
lst_signal.append(0) # 空头信号
df['signal']=lst_signal
2)收益率回测
# 构建指标z
lst_z=[]
for j in df['signal']:
if i=1:
lst_z.append(1) # 多头信号
else:
lst_z.append(-1) # 空头信号
df['z']=lst_z
# 构建指标R
s_t1=pd.Series(df['close'].values).shift(1)
df['s_t1']=list(s_t1) # 超前变量的设置,用shift函数
df['R_t1']=df['s_t1']/df['close']*df['i_']/df['i']
df['log_s_t1']=[math.log(i) for i in df['s_t1']]
df['log_s']=[math.log(j) for j in df['close']]
df['log_i_']=[math.log(i+1) for i in df['i_']]
df['log_i']=[math.log(j+1) for j in df['i']]
df['r_t1']=df['log_s_t1']-df['log_s']+df['log_i_']-df['log_i']
r=sum(df['z']*df['r+1'])+ math.log((1-c)/(1+c)) # r为交易期间使用策略获得的累计超额收益</