写在最前边,答主是金融工程研0(金融知识储备一般)
题目背景:高频交易(HFT)是金融投资市场上最热门的话题之一,它是一种电子化交易,是指利用极为短暂的市场变化中寻求获利的计算机程序化交易。它采用复杂的算法来评估众多市场,并根据市场条件执行交易订单。
高频交易(HFT)是金融投资市场上最热门的话题之一,它是一种电子化交易,是指利用极为短暂的市场变化中寻求获利的计算机程序化交易。它采用复杂的算法来评估众多市场,并根据市场条件执行交易订单。
高频交易的主要特征有:
(1) 由计算机自动完成的程序化交易;
(2) 交易量大;
(3) 持仓时间很短,日内交易次数很多;
(4) 每笔收益率很低,但追求总体收益稳定。
高频交易的交易标的往往跨越了股票、固定收益、衍生品以及外汇,有着换手频率高,市场中性等特点。进行高频交易前,需完成交易策略设计和搭建交易硬件环境两部分工作。
其中,股票高频交易的手段有:
(1) 自动做市商高频交易系统:自动做市商系统运用自有资金持续买卖股票,并且从买卖价差中获利;
(2) 量化因子高频交易系统:通过市场的特征因子,采用统计套利、因子分析和特征深度学习等量化策略,在极短时间内,执行大量交易指令,寻求获利机会。
在金融投资市场上,典型的高频交易策略有:
(1) 詹姆斯-西蒙斯网格交易策略:将资金分成若干份,在交易之前设定每份资金的买入、卖出价,确定初始基准价,价格区间和网格步长,每一份的买入价格,都是上一份资金的卖出价格,捕获网格之间的利润;
(2) 高频交易拆单策略:拆单买入低于面前价格的股票,拆单卖出低于面前价格的股票;
(3) 股票多因子深度学习策略:通过选择股票的 alpha 因子和风险因子,并利用历史数据进行深度学习而形成的交易策略。
任务 1:针对中国股票市场,请建立分类模型,将附录 2 中湾区指数的 30 只股票进行分类,选出最适合进行高频交易的 10 只股票。
首先我们需要对附录中的数据进行基础的数据分析,观察这些股票的特征以及与高频交易的关系。
以28号为例
可以看到数据表中有时间、收盘价、开盘价、最高价、最低价、成交额和成交量这些数据特征指标。
6万多条数据还是不少的,浅可视化一下
各数据
可视化
可视化
可以看出来成交额是波动幅度最大的,而且具有一定的周期性。
目前想从这些数据中直接提取出分类依据是比较困难的,需要结合题意“最适合进行高频交易”,那么我们的分类一定需要把适合高频交易的股票和不适合高频交易的股票区分开来。
结合题目中给出的高频交易特点提示,适合高频交易的股票有如下特征:
(2)交易量大;
(3) 持仓时间很短,日内交易次数很多;
(4) 每笔收益率很低,但追求总体收益稳定。
针对这三点我们需要建立对应的量化指标:
交易量大————————————————————对应总/平均成交量
交易次数多———————————————————对应平均日交易次数
每笔收益率低——————————————————对应平均交易收益比率
总体收益稳定——————————————————对应总体交易收益方差
此外,高频交易的起初运用于发现市场价差从瞬时价差交易中获取超额收益,所以适合高频交易的股票一定是可以持续获益的。
因此我们需要计算出30支股票的对应四个指标,再依据指标进行分类。
由于30支股票的数据量大,一一计算耗费时间,指标的计算可参考如下代码
stock_features=[]
i=0
for root_dir,sub_dir,files in os.walk(r"路径"):#\路径为30支股票数据所在文件夹
for file in files:
file_name = os.path.join(root_dir, file)
df = pd.read_csv(file_name)
features1=df['成交量(手)'].mean()
features2=1-len(df[df['成交量(手)']==0])/len(df)
features3=Yield ratio(df)
features4=Income variance(df)
stock_features[i] = [features1,features2,features3,features4]
i=i+1
将计算出的四种特征用k-means聚类或DBSCAN聚类方法即可求解。
dbscan聚类示意图
通过聚类后可以得到四种维度上的具体差异,需要进行分析。
筛选10种股票可以直接利用聚类结果,也可以另外建立评价模型。
给四种特征赋权重,这里不推荐主观为主的AHP模型,用TOPSIS-熵权法是更加客观合理的。
任务 2:针对不同股票的特点,例如大盘蓝筹股票或者波动显著的股票,请建立数学模型,设计高频交易策略。
对于波动显著的股票,其风险一定是更大的,但是也更容易通过高频交易获取高额收益。那么我们的交易策略应该合理地利用其波动性获利,而规避波动带来的风险。
我们可以发现 Market will consistently overprice short term option. 因此,implied vol is higher than realized vol. 下图是Volatility Trading 中的一幅图
所以非常经典的策略就是Sell Vol,赚 vol risk premium Short ATM 1 Month Straddle (Short ATM Call and Put) and dynamic delta hedge 赚钱的原因是一个博主之前回答的一个问题:
Gamma Scalping的关注点是delta,但是为啥叫Gamma Trading? - 戴维的回答
Short Straddle, Gamma 是负的,implied vol > realized vol,所以赚钱。1 Month 的原因是Gamma has less prob to become less negative.
除了short straddle, 也可以short strangle (strike 不同), strangle 的好处有更大的概率使得这个策略赚钱,但是payoff 相对会变小。
Short vol 的缺点在于,如果市场有剧烈的波动,尤其是go down, 那么realized vol 会有一个spike 导致realized vol 大于 implied vol,那么就会亏损。在我的credit vol 策略中,我是short cdx vol, hedge by sp500 vol。但如果针对sp500 index vol 或者 个股的vol 策略,我觉得很难hedge 这个risk。这里就需要有一个择时的机制在里面。
除此之外,比较经典的还有根据event来long vol 或者short vol。
对于个股,在earning event 之前,因为不确定性,implied vol 会上升,在earning event 之后,除非特别好的earning或者特别差的earning,正常implied vol 都会下降。那么你可以有2个策略:
1. 你可以在earning 之前long vol, 然后在earning 前一天close position.
2. 你可以在earning 前一天short vol, 然后在earning 之后 close position.
我们参考上述观点进一步研究波动率大的股票,根据查阅的资料以及数据的观察,设置交易周期和规避风险机制似乎是比较稳妥的方案。螺旋式上升是世界最常见的发展方式,股市也不例外。一个螺旋就是一个周期。我们常说的波段,它的学名应该也叫周期。周期型策略的代表人物我认为第一个应该是艾略特,波浪就是周期嘛,只不过他那里的波浪还只是非理性的,靠肉眼看,就像看云彩似的。
好在现在有了不怕苦不怕累的电脑,能够代替我们把波浪数得更统一,如果再加上神经网络技术,波浪的前景应该很光明的。
任务 3:运用任务 2 设计的交易策略,对以下股票组合进行高频交易。
将股票组合的数据信息转化成数字输入建立好的交易策略模型即可求得答案~
完整解题思路见评论区~