青岛做网站的公司哪家好一点免费的seo优化工具
什么是美林时钟呢?
著名的美林时钟是美林证券提出的一个资产配置框架,用于指导投资者根据宏观经济周期(经济增长和通胀变化)的不同阶段,调整股票、债券、商品和现金等资产的配置比例。其核心逻辑是将经济周期分为四个阶段,告诉你什么时候该买啥:
复苏期(经济好、通胀低):买股票
过热期(经济好、通胀高):买大宗商品
滞胀期(经济差、通胀高):囤现金
衰退期(经济差、通胀低):买长期债券
什么是动量轮动呢?
动量轮动是一种投资策略,核心思想是“追涨杀跌”——买近期涨得猛的资产,卖掉涨不动的,靠趋势赚钱。
具体怎么玩?
1、选轮动组合:比如股票、债券、大宗商品等。
2、比谁强:定期(比如每周)看哪些资产最近涨得最好。
3、调仓:买入排名靠前的“动量强者”,卖掉跌出前排的“弱鸡”。
如果把美林时钟和动量轮动结合会怎么样呢?
轮动组合:创业板,纳指,黄金,国债。创业板和纳指代表美林时钟中的股票,黄金代表商品,国债代表债券。
轮动规则:比较创业板、纳指和黄金近20日涨幅,取排名第一的,当向上突破20日高点时买入,向下突破20日低点时卖出。如果三个都不符合买入条件,就持有国债。美林时钟的难点是周期切换难以精准判断,结合动量轮动后直接用是否形成突破来判断,简单粗暴有效。
看下QMT历史实盘回测效果:
代码讲解:
#encoding:gbk
import numpy as np
import pandas as pd
import mathclass 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):#passtrade(C) #每天运行确保即时捕捉动量变化print('运行中')#trade(C) #每天运行确保即时捕捉动量变化
交易逻辑:
def get_rank(C,etf_pool):score_list = []px=-1start_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 = 1y = 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) - 1r_squared = 1 - (sum((y - (slope * x + intercept))**2) / ((len(y) - 1) * np.var(y, ddof=1)))score = annualized_returns * r_squared * pxscore_list.append(score)"""print(df.close.pct_change(20)[-1])score = df.close.pct_change(20)[-1]*pxscore_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_listelse:return rank_list
本策略采用梅林时钟策略,叠加动量策略,所有选取品种,都是历史长期优势品种,基本面稳定。
总结:
通过本文的学习,相信你已经掌握如何在QMT学会美林时钟策略了。希望本文可以帮助你!