今天是实盘记录的第177天。[淘股吧]
期末资产:318476.11元 累计盈亏:6.159% 今日盈亏 4255.94元

相对沪深300超额 -0.700%, 相对中证2000超额 -8.456%

感觉这一轮微盘股的下跌应该是结束了,具体需要用明天的走势验证下。

今天周三,平时都需要外出处理事情。然后今天特殊,回来的比较早,不过也还是先只发下记录,不聊天了吧。

一会吃完饭优先筛选股票。之后争取明天或者周末写一些内容出来,^_^。

发完记录去吃饭,^_^。

说明:
目前实盘展示的是一套量化交易系统。正常每天分别买入和卖出六只股票。偏小市值股票。

我有参加淘股吧实盘比赛,实盘比赛用的系统,就是展示的这个。数据相同。

下面是目前账户截图:



读书笔记部分:


量化交易的本质完完全全就是统计学吗?
(十五)

你想赚钱,你看隔壁老王炒股赚了一笔,于是你也开始买股票。
你发现只买一只股票太危险,跌了就完蛋了,于是你多买了几只,直觉告诉你这样能分散风险。
但你发现一个诡异的事,有时候你明明分散了,跌起来还是一起跌,分散了跟没分散一样。
你开始琢磨,分散投资到底怎么分散才算真正分散?
你开始定量地描述整个事情。
第一步,你把每只股票每天的涨跌幅求了个平均值,管它叫「预期收益」。
第二步,你把涨跌幅偏离平均值的程度也算了出来。
方差,它描述波动有多大。你说,以后方差就是风险。方差大,风险大;方差小,风险小。
一只股票你知道了,收益和风险。但一堆股票放在一起呢?
你发现你不能直接把单只股票的风险加起来。因为股票之间有联动,茅台五粮液也涨,你以为你买了两个不同的东西,其实你买的是同一件事。你需要知道任意两只股票到底有多「同步」。这个度量叫协方差。
你把所有股票两两之间的协方差算出来,排成一张大矩阵。这张表叫协方差矩阵。有了它,你描述的不再是单只股票的独立波动,而是一群股票的整体联动结构。
然后你发现了那个反直觉的事。给定任意配比权重,通过协方差矩阵算出来的组合总波动率,会比单只股票波动率的加权平均低,只要两只股票的相关系数小于1。分散真的能降风险。光买得多没用,得买那些不怎么一起涨跌的股票才行。
你把问题变成了一个优化问题。给定你想要的收益水平,找出一组权重让总方差最小。你把所有可能的最优权重画在图上,它们构成了一条子弹形状的边界。这条边界告诉你,在你给的资产池、收益估计、协方差矩阵和交易约束下,这个收益水平对应的最低风险已经被算出来了。
你管这条线叫有效前沿。
你再往前推一步。引入无风险资产,重新算一遍最优权重。切点出来了。
不管你是谁,是激进还是保守,你的底仓都应该是这个组合。
激进的人借钱多买,保守的人留现金少买,但内核是同一个。
你第一次把投资变成了一道有唯一解的数学题。
恭喜你,你用方差、协方差矩阵和凸优化发明了现代投资组合理论(MPT)。

你现在有了最优组合,但你不满足。
MPT告诉你一堆股票怎么配最好,但它没说单只股票应该给你多少回报。茅台有茅台的波动,工行有工行的波动,它们承担的风险不一样,凭什么给你一样的收益率?
你想知道每只股票到底值多少回报。你换了个思路。如果全世界每个人都按MPT说的持有市场组合,那单只股票的风险,不就是它跟市场一起波动的程度吗?
你把个股的收益率对市场组合的收益率做了一个线性回归。回归出来两个东西,你给它们起了名字。
斜率叫β。茅台β=1.2,大盘涨1%它平均涨1.2%;长江电力β=0.5,大盘涨1%它只涨0.5%。β描述的是这只股票跟市场的「黏度」。
截距叫α。回归线没解释干净的那部分。如果它是正的,说明这只股票除了跟市场一起涨跌之外,还多赚了一点。
你从这个回归里看到了一个深刻的洞察。茅台自家的经营风险,换CEO、提价、出新系列酒这些事,你买100只股票就分散掉了。但大盘系统性崩跌的风险,你买多少只都分散不掉。不能分散的风险才应该被定价,能分散掉的风险市场不会给你任何补偿。
你把结论写成了等式。
E(Ri)=Rf+βi(E(Rm)−Rf)E(R_i) = R_f + \beta_i (E(R_m) - R_f)\\
一只股票的预期收益率等于无风险利率,加上它的β乘以市场风险溢价。β=1.5的股票你应该要求它比市场多赚50%,如果它做不到,你就该卖了它去买指数。
恭喜你,你用线性回归发明了资本资产定价模型(CAPM)。

在这个过程中,你还发现了一个微妙的东西。跑完回归之后绝大多数股票的α都趋近于零。
在CAPM的理想世界里,市场是有效的,没有什么股票能在系统上长期跑赢它的β。如果一只股票的α为正且稳定,它就叫做「超额收益」。
你跑完CAPM回归之后,盯着残差图看了很久。
按理说残差应该是随机的,没有规律。但你把股票按市值分了组,大盘股一堆,小盘股一堆,小盘股那组的残差平均是正的。大盘股的残差反而是负的。
你把股票又按市净率分了组。便宜的股票残差是正的,贵的残差是负的。
你意识到这不是巧合。CAPM没有崩溃,但它遗漏了东西。有一些系统性风险β没有捕捉到。
你想,小公司比大公司脆弱,借钱更难,经济不好最先倒下。投资者对小公司的风险额外敏感,所以要求额外的回报。便宜的公司也一样。市净率低到地板的公司,大概率快倒闭了,没人愿意买。你买了就是在承担别人不愿意承担的困境风险,你应该被补偿。
你把这两件事写进了等式。在CAPM的单因子回归旁边加了两个新变量。
SMB是小减大,做多小市值,做空大市值。
HML是高减低,按账面市值比来排,做多账面市值比高的那批股票(也就是市净率低的便宜货,俗称价值股),做空账面市值比低的那批(市净率高的贵货,俗称成长股)。
加上市场因子,跑了一个三元回归。
这一次,截距消失了。三个因子吃掉了绝大多数的收益来源。以前你觉得是α的东西,原来就是对规模和价值的系统性暴露。
恭喜你,你用多变量回归和t检验发明了因子投资。你用t检验验证了一下,两个新因子的t值都远超2。你松了口气,觉得这下抓住的好像不是噪音。
当然,后面你会知道,t值过得了2离「真规律」还有十万八千里,p值会骗人这件事你迟早要补课。但你现在还沉浸在新发现里。

你闲着没事,把所有股票按过去12个月的收益率排了序。你买了涨最多的,做空跌最多的。
结果赚钱了。你以为是巧合,跑了一个分样本测试,还是赚钱了。
你决定严格验证。你按过去12个月收益把股票分十组,做多第一组做空第十组,持有一个月再换仓。赢家继续赢,输家继续输,差距大到不像噪音。
你又跑了不同的持有期(3、6、12个月),不同的市场(美股、欧洲、亚太),不同的时间段(1960年代到2000年代),结论都一样。中期动量真的存在,统计上也确实显著。
你把这个现象叫做动量(momentum)。你试过用前面的三因子模型去解释它,回归显示动量因子的载荷显著,截距仍然为正。三个因子吃不了它。
动量是一个独立的、无法被已知因子解释的收益来源。
你把你能找到的所有基金经理的业绩拿出来,用三因子加动量跑了一次归因分析。
很多明星基金经理的α归零了,他们所谓的超额收益无非是做多了动量加上小盘价值暴露。「能力」就是几个因子的线性组合。
恭喜你,你用排序分组法和多期持有测试发明了动量策略。

你的动量策略在跑着,你盯着每日盈亏曲线,开始幻想财务自由。
但你发现了一件事,动量不是均匀的。
风平浪静的时候连续几周不怎么动,然后突然连续几天大起大落。你以为策略出了问题,但你翻看大盘指数,也是一样的。
波动自己好像会传染。
你回想了一下MPT。他假设方差是常数。但如果方差不是常数呢?如果今天的大波动意味着明天大概率也是大波动呢?
你把日收益率的平方画了出来,做了自相关图。你发现今天的波动幅度和昨天的波动幅度高度相关,波动自己就可以看做一个时间序列。
你建了一个模型。今天的方差,等于一个基础值,加上昨天「意外事件」的冲击,再加上昨天方差本身的惯性。
σt2=α0+α1εt−12+β1σt−12\sigma^2_t = \alpha_0 + \alpha_1 \varepsilon^2_{t-1} + \beta_1 \sigma^2_{t-1}\\
ε是昨天实际收益和预测收益的差值。差值越大,明天方差的预测就越高。β是方差自己的惯性,方差倾向于保持上一刻的状态,像一个有记忆的东西。
这解释了为什么黑天鹅之后市场总是连着震荡好几天。一个巨大的ε撑起了σ,σ反过来又拉高后一天的σ,形成了一个自我维持的波动风暴。它也解释了为什么你的动量策略有时候会连亏。因子没失效,问题出在你撞进了高波动区间,仓位却没跟着波动调整。
恭喜你,你用广义自回归条件异方差模型(G ARCH )发明了波动率预测

从方差到协方差矩阵,从单因子回归到多因子模型,从CAPM到动量再到GARCH。
一路下来你的玩法基本就是,用回归把收益来源拆开,用t检验判断哪些来源是真的,用时间序列模型把波动本身也算进来。
工具箱越塞越满,账户曲线在涨,你开始觉得统计学就是量化的全部。

你现在通过量化模型赚到了一点小钱,你越陷越深。(中篇)
盯盘时你注意到另一个现象。茅台和五粮液的股价,单看每一只都是随机游走,没法预测。但你把它俩的差价画出来,差价始终在一个区间里上下震荡,跑远了就回来。
你想,能不能用统计学证明差价一定会回来?
你把两只股票的价格各自做了一次单位根检验。两个都是非平稳序列,任何基于它们的线性预测都是危险的,没有固定的均值,也没有固定的方差。
但你把它俩的差价做了一次检验。差价是平稳的。一个非平稳的价格减另一个非平稳的价格,差是平稳的。两个随机游走的变量共享了一个平稳的线性关系。
这个现象叫协整(cointegration)。
你马上就知道你有了一个策略。当差价超过均值两个标准差,你卖空贵的买便宜的,等价差回到均值平仓。你不需要知道茅台为什么涨,五粮液为什么跌。你只知道差价在过去所有的历史里都回归了。统计学告诉你,它还会回归。
你把z-score写进代码。(spread−mean)/std(spread - mean) / std。z>2开仓,回到0平仓。
恭喜你,你用单位根检验和协整发明了统计套利。

统计套利策略上线。最初几个月都在赚钱。
但突然有一天,差价拉开了三个标准差,没有回来。四个标准差,也没有回来。五个标准差,砰,你的仓位爆了。
你回去翻数据。你发现所谓的均值和标准差是你从历史数据估计出来的,估计量本身就有误差。协整关系是你从过去三年里「学」出来的,那三年茅台和五粮液的行业结构刚好同步。
今年政策和消费都变了,你用旧世界的结构度量新世界的价格。结构已经开始断裂了。
其实统计学并没告诉你差价一定会回归,它只告诉你,在这段历史样本里,这个价差像是均值回复的。
你是在赌,赌这个结构明天还没断。
你不甘心。你研究了机器学,你希望电脑能帮你把一切都自动找出来。
你用随机森林分类所有两两股票的价差关系,你喂进了动量、量比、波动率、相关性。。。几百个特征。
回测结果出来,夏普比率5.2,最大回撤3%,年化收益67%。你做了样本外测试,夏普降到2.1,还能接受。
你把真钱放了进去。三个月后你亏了15%。
你坐下来开始算。你在检验几百个因子。如果你同时检验100个跟真实收益毫无关系的随机变量,用5%的显著性水平,平均会有5个通过t检验。它们全都会告诉你「我是有效的」。
你把所有被提出过的、报告过的、流传过的因子全汇总到一起,超过400个。不做多重检验校正,这些因子中会有一大批p值好看但其实什么都不是。做完Bonferroni校正之后,真正在统计意义上还顶得住的因子,剩下没几个。
你大彻大悟,你以为找到了一个p<0.05的因子就发现了规律,其实你只是在400个抽奖号里抽中的几个幸运号码。这就是过拟合。

你换了一个思路。你不去自己找因子了,你让数据自己说出来。
你把几千只股票的收益率矩阵做了主成分分析(PCA)。PCA把协方差矩阵拆成了特征值和特征向量。特征向量回答「股票涨跌背后有哪些共同运动模式」,特征值回答「每种模式有多大」。
第一个主成分出来了,几乎所有股票的载荷都是正的,这就是市场因子。
第二个主成分一半正一半负。你拉出两边的股票,正的那边全是大盘股,负的全是小盘股。PCA在没人告诉它什么是市值的情况下,自己摸出了规模因子。
第三个主成分也是正负两极。正值对应低波动高分红的防御股,负值对应高增长新经济的进攻股。PCA自动分离出了价值-成长这个维度。
你感叹,一个纯粹的统计学方法,在没被告知任何经济概念的情况下,居然能把整整一代经济学家手工命名的那批因子重新摸出来。

你接着想,PCA这玩意这么好用,那除开前几个主成分,剩下的小特征值对应的隐藏维度,是不是又藏着什么结构信息?是不是还有可以挖掘的α?
其实,PCA的一切结论都建立在协方差矩阵上。如果这个矩阵本身就不准,PCA挖出来的「结构」可能根本不存在。
你算出来的协方差矩阵,精确是精确,但误差大到根本没法用。100只股票意味着100×101÷2=5050个参数要估,而你手里只有250天数据。
当参数比数据点还多的时候,统计学有个基本事实:你的估计在「平均而言」上是没错的(这叫无偏),但每次算出来都剧烈摇摆。这就是经典的p>n问题,样本协方差矩阵的条件数爆炸,最大特征值被系统性高估,最小的被系统性低估。
你把这个矩阵丢进组合优化器,它根本分不清哪些是真实的风险结构、哪些是估计噪声。它会把噪声当机会,疯狂加仓那些风险被低估的资产。回测漂亮得不行,实盘一跑就崩。
所以你继续查了攻略,攻略说这时候应该引进收缩估计。
做法很简单,你就把样本协方差矩阵和一个简单的目标矩阵按比例混合就行。
目标矩阵可以是对角阵(假设股票之间完全不相关),也可以是等相关矩阵(假设所有股票之间的相关系数都一样)。混合比例由数据自动决定。
这叫偏差-方差权衡。你主动引入一点偏差(往简单结构拉),换来方差的大幅下降。总误差=偏差²+方差,偏差涨了一点点,方差降了一大截,总误差反而更小。
你用这个「不纯粹的」矩阵算出来的持仓权重,样本外的波动率更低,换手率更小,不会因为某天数据多了一个异常值就把组合翻个底朝天。
你变得更诚实了。诚实于250天数据到底能告诉你多少关于5050个参数的事情。

收缩估计确实让你的组合更稳健了,你看着不断上窜的收益曲线心满意足。
但它没回答那个根本问题,PCA挖出来的那些特征值,到底哪些是真结构,哪些只是噪音碰巧长成了结构的样子?
于是你静下心又做了一个实验。你生成了100只完全随机的「假股票」,彼此之间没有任何真实关系,纯粹是噪音。然后你照样算协方差矩阵,照样求特征值。
结果,纯噪音的协方差矩阵的特征值竟然不是零。
你只有250天的数据去估计5050个参数,样本太少了。就像你掷硬币只掷10次,正面出了7次,你会以为硬币有偏,但其实只是样本不够大。
协方差矩阵比硬币偏得多,5050个参数同时在碰运气,总有几个碰出来的结果看起来特别像真的。
随机矩阵理论精确地算出了这个「噪音能伪装到什么程度」的边界。
它告诉你,给定你的股票数量和样本天数,纯随机数据产生的特征值会落在一个确定的范围内。任何落在这个范围里面的特征值,你没法区分它到底是真信号还是纯噪音碰巧算出来的。
你拿真实数据的特征值和这个噪音带一比。能明显跳出噪音带的,往往只有最前面那三五个。
剩下那一大批,你自称在度量关系,其实大部分时间在度量噪音。
你再一次大彻大悟。你以为你在度量关系,统计学告诉你,你度量的大部分是噪音。

你研究得头都大了,脑子里全是统计学,你放下键盘,揉了揉眼睛,平静地回忆了自己过去几年折腾量化的思路。。。(下篇)
你从方差和协方差矩阵出发,把风险变成了数字。用线性回归定义了β。用多变量回归和t检验发现了因子。连动量这种没理由的东西都挖出来了。甚至在最极端的情况下,你用协整这种纯统计方法,不需要任何金融逻辑,做出了能赚钱的策略。
而统计教会你的事情里,还有另一半,是关于它自己局限的,这些局限你大概率得真栽过几次才能理解。
比如,你不知道协整什么时候会断。不知道动量会不会在你进去的第二天消失。辛苦挖出来的因子可能只是多重检验碰上的好运。协方差矩阵可能95%是噪音。回测跑出来的夏普5策略,放到实盘里给人当韭菜割。
实际上,统计只是给了你量化的语言。但统计不回答「为什么」。如果你认为统计就是量化的一切,那你只是个统计的赌徒。你在赌协方差结构明天不会变,赌动量因子不只是某十年里的统计巧合,赌没有过拟合。你可能赚钱,但你在赌你不知道为什么赚钱的东西会继续存在。
所以,统计是必要条件。没有统计你做不了量化,就像没有数学你做不了物理。
但你不光需要描述关系的语言,你还需要理解关系的语言。
你还需要金融逻辑告诉你,你在赚谁的钱,为什么这钱能赚,什么时候这钱赚不到了。
你赚的是别人因为厌恶风险让出来的补偿,还是别人认知错误送出来的钱,还是市场结构里临时漏出来的一个口子?
这三种钱的命不一样,你的策略命也跟着不一样。
说白了,量化是问你自己到底知不知道你在做什么。
如果你不知道,统计给不了你答案。如果你知道,统计会帮你验证你想到的每一个猜想。