策略概要
该策略的核心是动量、风险和市场情绪。通过动量策略,选择具有较高收益的股票;通过风险控制,控制持仓数量和仓位大小;通过市场情绪判断,避免在低迷市场中买入股票。
市场情绪
市场情绪是指投资者对于市场的整体看法和情感状态,通常包括乐观、悲观、恐慌、冷静等情绪。市场情绪良好体现为投资者信心高涨,市场交易活跃,股票价格上涨,市场指数走高等;而市场情绪不良则体现为投资者信心不足,市场交易清淡,股票价格下跌,市场指数走低等。
市场情绪对于交易有着重要的影响。在市场情绪良好时,投资者更容易乐观看待市场,愿意进行交易,股票价格也更容易上涨;而在市场情绪不良时,投资者更容易悲观看待市场,不愿进行交易,股票价格也更容易下跌。因此,了解市场情绪对于制定交易策略和决策具有重要意义。一些交易者会使用市场情绪指标来判断市场情绪,如投资者情绪指数、恐慌指数等,以便更好地进行交易决策。
市场情绪函数
该策略使用市场情绪函数是用来判断整个股票市场的情绪状态的。具体来说,该函数判断的是股票市场的主要指数,如上证指数、深证成指、沪深300指数等是否低于均线。这里的均线是指股票市场的移动平均线,一般可以选择20日、60日、120日等不同的时间周期来计算。如果市场主要指数低于均线,则说明市场情绪不太好,此时交易者应该保持谨慎,不再进行买入操作。反之,如果市场主要指数高于均线,则说明市场情绪较好,交易者可以考虑进行买入操作。需要注意的是,市场情绪函数只是交易策略中的一个部分,不同的交易者可能会根据自己的情况进行调整和修改。
ATR
ATR全称为Average True Range,即平均真实波幅。它是一种技术指标,用来衡量市场波动的大小和趋势的强度。ATR是由J. Welles Wilder在1978年提出的,是他所发明的一系列技术指标之一。
ATR的计算方法比较复杂,需要先计算出每日的真实波幅(True Range),然后再对其进行平均。真实波幅是指当日最高价、最低价和前一日收盘价之间的最大值,用来反映当日的价格波动幅度。ATR的计算周期可以根据交易者的需求进行调整,一般来说,常用的周期为14天或21天。
ATR可以作为一个衡量市场波动的指标,用来帮助交易者确定止损和头寸大小。当市场波动较大时,ATR的值会相应增大,交易者可以根据ATR的值来调整止损和头寸大小,以避免亏损过大。同时,ATR也可以作为一个衡量趋势强度的指标,当ATR的值较大时,说明市场趋势较强,交易者可以考虑加大头寸,以获得更高的收益。
在该策略中,直接调用python的talib库计算ATR,并根据ATR和风险因子计算股票的期望仓位。
代码框架
该策略使用Python编写,主要包括以下几个部分:
- 初始配置:定义了一些变量和参数,如股票动量天数、股票均线天数、指数均线天数、ATR天数、跳空缺口阈值、取指数成分股前N支等。
- 交易函数:该函数实现了股票的买卖操作。首先,获取当前持仓和股票池。然后,卖出不符合要求的持仓,买入新的符合要求的股票。符合要求的股票是指当前价格高于均线、均线日内没有大幅跳空上涨等条件。最后,根据波动风险大小计算相应持仓。
- 调仓函数:该函数根据风险系数进行头寸再平衡。每两周进行一次。
- 股票池函数:该函数对指数成分股按分数排序,倒序取前N支,然后过滤掉有问题的票(低于均线或者有跳空上涨缺口)。
- 市场情绪函数:该函数判断指数是否低于均线,如果低于则不再买入任何股票。
- 期望仓位函数:该函数根据ATR和风险因子计算股票的期望仓位。
- 差异函数:该函数计算股票当前仓位、期望仓位、及两者的差异率。
- 打分函数:该函数基于股票年化收益和判定系数打分。
股票买卖策略:基于股票的波动风险率调整仓位,每周交易一次,每两周调仓一次。其中,涉及到的股票专有名词包括:股票指数、股票动量、股票均线、ATR、跳空缺口、风险因子、仓位差异阈值、可用资金阈值、股票成分股、指数均线、股票年化收益、判定系数等。买入和卖出所符合的条件包括:股票当前价格高于均线、无15%的跳空上涨缺口、符合波动风险率调整仓位的要求。