当前位置: 首页 > news >正文

QMT美林时钟策略(15年11倍,年化13.5%策略)

什么是美林时钟呢?

著名的美林时钟是美林证券提出的一个资产配置框架,用于指导投资者根据宏观经济周期(经济增长和通胀变化)的不同阶段,调整股票、债券、商品和现金等资产的配置比例。其核心逻辑是将经济周期分为四个阶段,告诉你什么时候该买啥:

复苏期(经济好、通胀低):买股票

过热期(经济好、通胀高):买大宗商品

滞胀期(经济差、通胀高):囤现金

衰退期(经济差、通胀低):买长期债券

什么是动量轮动呢?

动量轮动是一种投资策略,核心思想是“追涨杀跌”——买近期涨得猛的资产,卖掉涨不动的,靠趋势赚钱。

具体怎么玩?

1、选轮动组合:比如股票、债券、大宗商品等。

2、比谁强:定期(比如每周)看哪些资产最近涨得最好。

3、调仓:买入排名靠前的“动量强者”,卖掉跌出前排的“弱鸡”。

如果把美林时钟和动量轮动结合会怎么样呢?

轮动组合:创业板,纳指,黄金,国债。创业板和纳指代表美林时钟中的股票,黄金代表商品,国债代表债券。

轮动规则:比较创业板、纳指和黄金近20日涨幅,取排名第一的,当向上突破20日高点时买入,向下突破20日低点时卖出。如果三个都不符合买入条件,就持有国债。美林时钟的难点是周期切换难以精准判断,结合动量轮动后直接用是否形成突破来判断,简单粗暴有效。

看下QMT历史实盘回测效果:

代码讲解:

#encoding:gbk
import numpy as np
import pandas as pd
import math

class A():
	pass
a=A()
#初始化函数 
def init(C):
	print('运行')
	C.acct = '39130129'
	C.acct_type = 'STOCK'

	C.etf_pool = ['513100.SH','159915.SZ','159937.SZ']
	C.stock = '511130.SH'
	#C.etf_pool = C.get_stock_list_in_sector('上证50')
	#print(C.etf_pool)
	for i in C.etf_pool:
		download_history_data(i,'1d','','')
		download_history_data(C.stock,'1d','','')
	C.m_days = 20 #动量参考天数
	C.Num = 1  #购买股票数量
	C.run_time('trade','1nDay',"2021-07-25 14:57:00")
	
def handlebar(C):
	#pass
	trade(C) #每天运行确保即时捕捉动量变化
	print('运行中')
    #trade(C) #每天运行确保即时捕捉动量变化

交易逻辑:

def get_rank(C,etf_pool):
	score_list = []
	px=-1
	start_time = timetag_to_datetime(C.get_bar_timetag(C.barpos-C.m_days),'%Y%m%d')
	end_time = timetag_to_datetime(C.get_bar_timetag(C.barpos),'%Y%m%d')
	for etf in etf_pool: 
		data = C.get_market_data_ex(fields=["close","high"],stock_code=[etf], period = "1d", start_time = start_time, end_time = end_time,count=C.m_days)
		df = data[etf]
		pre_line2 =np.mean(df.close[-21: -1])
		if df.close[-1]>pre_line2:
			px = 1
		
		y = df['log'] = np.log(df.close)
		x = df['num'] = np.arange(df.log.size)
		slope, intercept = np.polyfit(x, y, 1)
		annualized_returns = math.pow(math.exp(slope), 250) - 1
		r_squared = 1 - (sum((y - (slope * x + intercept))**2) / ((len(y) - 1) * np.var(y, ddof=1)))
		score = annualized_returns * r_squared * px
		score_list.append(score)
		"""
		print(df.close.pct_change(20)[-1])
		score = df.close.pct_change(20)[-1]*px
		score_list.append(score)
		"""
	df = pd.DataFrame(index=etf_pool, data={'score':score_list})
	df = df.sort_values(by='score', ascending=False)
	rank_list = list(df.index)  
	print(df)
	print('最大',df['score'].max())
	if df['score'].max()<0:
		rank_list = ['511130.SH']
		return rank_list
	else:
		return rank_list

本策略采用梅林时钟策略,叠加动量策略,所有选取品种,都是历史长期优势品种,基本面稳定。

总结:

通过本文的学习,相信你已经掌握如何在QMT学会美林时钟策略了。希望本文可以帮助你!

相关文章:

  • 【C++算法】57.哈希表_判断是否互为字符重排
  • AF3 Cropper类解读
  • 音视频转换器 AV 接口静电保护方案
  • 状态压缩dp
  • Odrive源码分析(六) 相关控制变量传递
  • 基于redis 实现我的收藏功能优化详细设计方案
  • HCIP第十一天
  • 攻防世界——Web题ez_curl
  • 代码学习总结(二)
  • AIDD-人工智能药物-pyecharts-gallery
  • 滑动窗口(4)—将x减到0的最⼩操作数
  • 基于时间序列分解与XGBoost的交通通行时间预测方法解析
  • x265 编码参数 rdLevel 详细解析
  • buuctf sql注入类练习
  • UITableVIew性能优化概述
  • 【DE2-115】Verilog实现DDS+Quartus仿真波形
  • 【算法】One-Stage检测器与Two-Stage检测器的原理和区别
  • 开启bitlocker使用windows的加密功能
  • (1)VTK环境配置
  • Unity 基于navMesh的怪物追踪惯性系统
  • 怎么给网站加图标/安卓优化大师app
  • 为什么做网站特效用用插件/网络营销方法和手段
  • 柯桥建设局网站/优化大师官方免费下载
  • 郑州装修公司排名推荐/seo关键词优化推广哪家好
  • 公司网站上面的动画怎么做/百度推广售后
  • 北京网站案例/营销软文广告