策略1:价格动量

策略1:价格动量

框架:Backtrader

数据:Tushare

来源:151个交易策略 《151 Trading Strategies》 3.1 Strategy: Price-momentum

关键参数

(1) 收益率

R(t) = P(t)/P(t+1) - 1

(2) T周期内累计收益

R^{cum}=P(t)/P(t+T) - 1

(3) T周期内平均收益

R^{mean}=\frac{1}{T}\sum_{1}^{T}R(t)

(4) 风险调整收益

R^{risk.adj}=\frac{R^{mean}}{\sigma }

(5) 收益波动方差

\sigma^{2}=\frac{1}{T-1}\sum_{1}^{T}(R(t)-R^{mean})^{2}

本策略主要用于趋势跟踪,适用于成长类股票。策略通常对月K线进行操作,周期T通常为12个月。该策略可以用来辅助筛选股票,重点依据累计收益和风险调整收益,前者主要是衡量T周期内总体走势,后者衡量收益的风险和稳定性(取值越大越好)。据体策略描述请参考《151 Trading Strategies》

主要指标代码如下:

#时间序列需由最近到最远list
class sty_price_momentum():
    def __init__(self, prices, T=12):
        self.strategy_name = 'price momentum'
        self.T = T
        self.prices = np.array(prices)
        self.month_return  = None
        self.cumulative_return = None
        self.mean_return = None
        self.sigma_2_return = None
        self.risk_adj_return = None
        self.calculate_month_return()
        self.calculate_risk_adj_return()
        
    def calculate_month_return(self):
        tmp = list(self.prices[1:])
        tmp.append(self.prices[-1])
        tmp = np.array(tmp)
        self.month_return = self.prices/tmp - 1
        
    def calculate_cumulative_return(self):
        assert self.prices.shape[0] > self.T, '价格序列长度需大于形成期长度'
        tmp = list(self.prices[self.T:])
        tmp.extend(list(self.prices[(self.prices.shape[0]-self.T):]))
        tmp = np.array(tmp)
        self.cumulative_return = self.prices/tmp - 1
       
    def calculate_mean_return(self):
        self.mean_return = []
        self.calculate_month_return()
        shape_0 = self.month_return.shape[0]
        for i in range(shape_0):
            if i < shape_0 - self.T + 1:
                tmp = np.mean(self.month_return[i:(i+self.T)])
            else:
                tmp = np.mean(self.month_return[i:])
            self.mean_return.append(tmp)
        self.mean_return = np.array(self.mean_return)
    
    def calculate_sigma_2_return(self):
        assert self.T > 1, '周期需大于1'
        self.sigma_2_return = []
        self.calculate_mean_return()
        shape_0 = self.prices.shape[0]
        for i in range(shape_0):
            tmp = []
            if i < shape_0 - self.T + 1:
                tmp = self.month_return[i:(i+self.T)] - self.mean_return[i]
                tmp = (sum(tmp**2))/(self.T - 1)
            else:
                tmp = self.month_return[i:shape_0] - self.mean_return[i]
                tmp = np.mean(sum(tmp**2))/(shape_0 - i - 1 + 1e-6)
            self.sigma_2_return.append(tmp)
        self.sigma_2_return[-1] = 1e-6
        self.sigma_2_return = np.array(self.sigma_2_return)
    
    def calculate_risk_adj_return(self):
        self.calculate_sigma_2_return()
        self.risk_adj_return = self.mean_return / np.sqrt(self.sigma_2_return)

其他:

金融量化分析最新动态和源代码分享,请微信搜索并关注“量化之窗”公众号。

 

这篇论文的英文版可以在 http://ssrn.com/abstract=3247865.Spanish 找到:本书对大量资产类别的 150 多种交易策略进行了详细的描述,包括 550 多个数学公式和交易风格。 这包括股票、期权、债券(固定收益)、期货、ETF、指数、商品、货币、可转换债券、结构性资产、波动性(作为资产类别)、房地产、不良资产、现金、加密货币、杂项(如气候、能源、通胀)、全球宏观、基础设施和税收套利。 一些策略基于机器学习算法(如人工神经网络、贝叶斯、k 个最近邻)。 本书还包括带有解释性注释的样本外回测代码; 大约 2,000 个参考书目; 包含词汇表、首字母缩略词和数学定义的 900 多个术语。 该演示文稿旨在具有描述性和教学性,特别适合金融专业人士、交易员、研究人员、学者以及商学院和金融课程的学生。这是以下书籍的完整版本:Z. Kakushadze 和 JA Serur。 151 交易策略(西班牙语版,2019 年),398 页; ISBN 978-1071261873。 它是以下书籍的英语到西班牙语的翻译(完整版可在此处找到 http://ssrn.com/abstract=3247865):Z. Kakushadze 和 JA Serur。 151交易策略。 瑞士 Cham:Palgrave Macmillan,Springer Nature 的印记,第 1 版(2018 年),XX,480 页; ISBN 978-3-030-02791-9.English:这本书是西班牙文,提供了详细的描述,包括 550 多个数学公式,涵盖了大量资产类别(和交易风格)的 150 多种交易策略。 这包括股票、期权、固定收益、期货、ETF、指数、商品、外汇、可转换债券、结构性资产、波动性(作为资产类别)、房地产、不良资产、现金、加密货币、杂项(如天气、能源、通货膨胀)、全球宏观、基础设施和税收套利。 一些策略基于机器学习算法(如人工神经网络、贝叶斯、k-最近邻)。 我们还提供: 用于说明样本外回测的源代码以及说明; 大约 2,000 个参考书目; 以及 900 多个词汇表、首字母缩略词和数学定义。 该演示文稿旨在具有描述性和教学性,并且对金融从业人员、交易员、研究人员、学者以及商学院和金融课程的学生特别感兴趣。这是以下书籍的完整版本:Z. Kakushadze 和 JA Serur。 151 交易策略(西班牙语版,2019 年),398 页; ISBN 978-1071261873。 后者是以下书(其完整版本可在 http://ssrn.com/abstract=3247865 上找到)的英语翻译成西班牙语:Z. Kakushadze 和 JA Serur。 151交易策略。 瑞士 Cham:Palgrave Macmillan,Springer Nature 的印记,第 1 版(2018 年),XX,480 页; ISBN 978-3-030-02791-9。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coding的叶子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值