Giter Site home page Giter Site logo

gitblog's People

Watchers

 avatar

gitblog's Issues

完全解析HashMap

HashMap是广大程序员使用的最多、面试被问最多的一个容器了:

  • 日常使用我们只知道它是键值对就行
  • 面试八股文的时候我们一般纠结在它怎么hash、怎么解决hash冲突、怎么扩容;一些变态的八股可能会关注链表什么时候转化成红黑数又什么时候退化成链表

我个人也经常面试别人的时候会用hashmap切入去问容器、线程安全、锁等方面内容,但是其实hashmap真正的源码并没有特别认真的通读过;这个文章就是从HashMap源码入手,详细解析一下HashMap(android-30)的实现;

声明

我们首先看一下HashMap的声明:

public class HashMap<K,V> extends AbstractMap<K,V>
    implements Map<K,V>, Cloneable, Serializable

我们先从interface开始解析:

  1. Serializable
public interface Serializable {
}

这里有篇文章说的很好 → https://blog.csdn.net/weixin_44209555/article/details/107837108
我在这里主要提炼一下主要观点:

  • Serializable首先是一个标记接口(Marker Interface),这说明它没有任何方法,关于标记接口的作用可见 → https://zhuanlan.zhihu.com/p/42756607
  • Serializable主要是标识这个类是可以被序列化\反序列化的,特别是序列化的时候会在ObjectOutputStream.writeObject()里校验
    screenshot-20231228-204832
  • serialVersionUID的作用主要是反序列化的时候检查文本里的Class和Java代码里的是不是同一个,这个可以在ObjectStreamClass.initNonProxy()里看到校验的过程,如果不一致会抛出异常
    screenshot-20231228-205730
  1. Cloneable
public interface Cloneable {
}

这里也引用一篇文章 → https://www.jianshu.com/p/ea8f7b1fbbb1
提炼的重点:

  • 很明显,Cloneable也是一个Marker Interface
  • 使得对象可被克隆,需要对象implements Cloneable,这时候调用Object.clone()才可以克隆
    screenshot-20231228-210533
  • 深拷贝和浅拷贝:需要注意internalClone是一个native的浅拷贝快速实现,需要实现深拷贝需要自己Override Clone
  1. Map<K,V>
  • Map就是一个标准的模板接口了(Template Interface),它定义了Map这个数据结构应该具有的方法,这里就不一一说明
  • 需要注意内部的一个接口:Entry,如果说Map是代表键值对集合,那么Map.Entry就是代表键值对本身

接口在这里就全说完了,那么我们这里可以对HashMap实现的接口做定义:
HashMap是一个可以(反)序列化、可以克隆的Map

  1. AbstractMap<K,V>
public abstract class AbstractMap<K,V> implements Map<K,V>
  • 可以看到AbstractMap是一个实现了Map的虚基类,它里面已经提供了Map部分方法的实现了,它的目的在jdk的注释里已经写的很清楚

This class provides a skeletal implementation of the Map interface, to minimize the effort required to implement this interface.

  • AbstractMap提供了一个基本的Map的实现,它减轻了其他实现类的工作
  • 整个Map继承树基本如下
    20190128154834291

实现

  1. 成员
// 常亮
private static final long serialVersionUID = 362498820763181265L;
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16
static final int MAXIMUM_CAPACITY = 1 << 30;
static final float DEFAULT_LOAD_FACTOR = 0.75f;
static final int TREEIFY_THRESHOLD = 8;
static final int UNTREEIFY_THRESHOLD = 6;
static final int MIN_TREEIFY_CAPACITY = 64;
// 变量
transient Node<K,V>[] table;
transient Set<Map.Entry<K,V>> entrySet;
transient int size;
transient int modCount;
int threshold;
final float loadFactor;

首先,我们看一下HashMap里的成员:

  • 常量
    • serialVersionUID:(反)序列化需要
    • DEFAULT_INITIAL_CAPACITY:初始容量,这里就回答了面试的时候经常被问的hashmap初始容量是多少
    • MAXIMUM_CAPACITY:最大容量,需要注意的是即使最终数据量超过MAXIMUM_CAPACITY时,resize的时候并不会出错,它会强制将threshold提升到Integer.MAX_VALUE
    • DEFAULT_LOAD_FACTOR:默认负载因子值
    • TREEIFY_THRESHOLD\UNTREEIFY_THRESHOLD:这就是链表变成红黑树以及红黑树退化成链表的阈值要求了;所以默认情况下,当链表长度超过8个就会进化成红黑树,而当红黑树节点少于6个的时候就会退化成链表
    • MIN_TREEIFY_CAPACITY:前面已经定义了TREEIFY_THRESHOLD约定了当单个节点下链表长度大于8时会转成红黑树,而MIN_TREEIFY_CAPACITY是又添加了一条约束:只有当整个map里节点数量超过64个时才会允许树化,这里主要是萎了防止hashmap使用初期就进行树化而不是直接resize
  • 变量
    • table:Node的数组,对应hash表的线性表;这里有个小的细节是transient关键字,它表示这个变量不会被(反)序列化 → https://blog.csdn.net/qq_44543508/article/details/103232007
    • entrySet:将HashMap里的内容用Set<Map.Entry<K,V>>方式呈现,主要使用场景是HashMap的构造函数和putAll方法里;等于是批量将另一个map内容put进来的需要
    • modCount:

A股股债平衡的一些研究

权益池:沪深300、中证500、创业板指
现金池:国债、黄金、招商双债、存单
目标:

  • 探索不同标的债股平衡的差异
  • 探索不同再平衡周期下收益率的差别
  • 比例:
    • 探索不同比例下的股债平衡收益差别
    • 探索基于pe、pb、格雷厄姆指数的动态比例调节策略下股债平衡的收益差异

1. 各标的单独收益

截屏2023-02-22 20 49 39

- 沪深300 中证500 创业板 国债 黄金
平均收益率 8.04% 7.56% 7.13% 2% 5.93
最大回撤 44% 63% 69% 26% 20%
Sharpe 0.17 0.13 0.09 -0.1 0.15
波动率 0.227 0.27 0.33 0.188 0.129
  • 中证500和创业板的波动率和回撤都太大了
  • 国债数据可能存在一些问题,最大回撤异常,但是Sharpe低于黄金,长期配置不如黄金
  • 长期看沪深300作为权益仓,黄金作为现金仓的做法可能是最好的组合。

2. 55模式下股债(黄金)结合收益(60交易日再平衡)

由于现金仓实现的方式多变,这里就不多研究,接下来会以黄金作为现金仓持仓继续研究。
截屏2023-02-22 21 14 11

+黄金 沪深300 中证500 创业板
平均收益率 8.18% 8.20% 8.41%
最大回撤 23% 31% 37%
Sharpe 0.313 0.285 0.25
波动率 0.13 0.14 0.17

我们可以看到:

  • 所有股债平衡(55)策略都比纯股票策略大幅减少回撤和波动率
  • 所有股债平衡策略的年化收益都没有太大影响甚至有小幅上升
  • 沪深300+黄金的组合的Sharpe是最高的,也符合上节的猜测

3. 探索股债平衡比例在HS300+黄金组合下的影响(60交易日再平衡)

针对组合,将HS300比例从10%提高到90%,依次回测查看相应指标:

HS300+黄金 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
平均收益率 6.51% 7.04% 7.48% 7.89% 8.18% 8.38% 8.43% 8.47% 8.44%
最大回撤 17% 15% 15% 19% 23% 28% 32% 36% 41%
Sharpe 0.211 0.267 0.303 0.32 0.313 0.293 0.262 0.236 0.209
波动率 0.119 0.114 0.115 0.122 0.134 0.15 0.169 0.19 0.213

上图中的比例表示配置权益仓的比例,可以看到

  • 随着HS300比例的提升,收益率基本呈现单调递增,这也符合股票的收益率应当大于黄金的认知
  • 虽然收益率提升,但是最大回撤以及波动率也会有单调递增,特别面对极端行情时最大回撤从17%提升到41%
  • 虽然收益是单调增的,但是为了每单位收益承担的风险却不是单调递增的,可以看到Sharpe在股债4:6时达到最大,也就是说这时候的比例可以达到单位风险收益最大化

4. 探索在40%沪深300+60%黄金的组合下不同平衡周期对组合的影响

40%HS300+50%黄金 5 15 30 60 120 240
平均收益率 7.86% 7.87% 7.83% 7.89% 8.17% 7.41%
最大回撤 19% 19% 19% 19% 20% 22%
Sharpe 0.314 0.317 0.314 0.32 0.342 0.272
波动率 0.123 0.122 0.122 0.122 0.122 0.126

我们回测了从一周到一年为再平衡周期的各种情况发现:

  • 更频繁的再平衡也并不会减少波动性或者提升收益
  • 中期的再平衡可有效提升收益减少波动,在本case里120交易日(半年)Sharpe最高
  • 长期的再平衡效果并不好

基于4:6比例以及120交易日(半年)再平衡周期的HS300+黄金的组合可以取得一个平均8%,历史最大回撤20%的投资组合:
Snipaste_2023-02-23_01-33-16
Snipaste_2023-02-23_01-34-37

Http相关知识

最近面试了几个校招生,老生常谈的问一些http相关的知识,在这里随意整理一下

Http的结构

image
Http的请求分成:

  • 请求行(line)
  • 请求头(header)
  • 请求数据(data)
    header和data之间用一个空行隔开,所以有时候也说报文分成四个部分;首先要知道http的报文是明文的,是ASCII码string;首先关注请求行中的部分:
  • 请求方法(Method):在http 0.9的时代只有GET方法,后续又添加了POST\PUT\DELETE等方法;这里需要关注的一个概念是GET的幂等概念如何理解,可以类比纯函数的概念:在多次GET同个uri时不会产生任何副作用,返回的结果也完全一致;而POST多用于提交数据,由于提交的数据在data而非请求行里,所以浏览器地址栏不可见,但是需要注意默认这里也是明文的。
  • 协议版本(Version):这个下一节讲http发展的时候再讲,着重讲一个有趣的点是「客户端怎么知道服务端支持哪种http协议」:在https模式下是会在TLS过程中使用一个ALPN的协议来协商使用的协议,但是在http/3时由于采用了udp所以不太一样,这个看样子行业并没有规范化,了解即可。
    请求头的话主要是了解几个常见的头,比如HOST\UA\Cookie等:

Http的发展

长江电力的投资研究

原因:

  • 作为防守仓位,有不错分红
  • 水电属于公共事业,基本永续行业
  • 成长年化可观
  1. 一次性买入

截屏2022-09-29 18 57 33

年化11%很可观,但是最大回撤53%的相当难顶了;启动归因分析看一下前5回撤以及每年的收益;

截屏2022-09-29 18 59 59

除去08年金融危机,其他时候最大回撤20%,算是比较可以;

截屏2022-09-29 20 47 42

年度收益可见近几年其实并不是特别好,维持在7%的样子,但是全年负收益的时候并不多见,这个比较可贵;
  1. 双均线策略
    双均线是不可不尝试的策略,通过5日均线上穿20日买入,下穿20日卖出:

双均线的择时可以说:相当失败,所以果然择时是最难的事情,通过传统双均线进行择时无疑自杀行为

  1. 半仓再平衡策略
    摒弃择时的想法,通过仓位控制来减少回撤:本策略每次买入半仓长电和半仓纯债,每240交易日再平衡一次(由于债券etf的时间问题,直接使用现金,实际收益可能可以上浮1%):

截屏2022-09-29 20 55 27

实际收益大概可以在8%左右,每年减少了3%(相对一次买入下降了27%的收益),但是最大回撤减少了20%(同一次买入比-37%);同样看一下归因的数据:

截屏2022-09-29 20 58 48

近8年的最大回撤减少到10%,所以如果比较风险厌恶的人可以通过买入一半长电一半债券,每年再平衡一次的策略进行防守策略的构建;而且从近些年的年化收益看,在非大牛市和一次买入比起来差异更低:

截屏2022-09-29 20 59 54

  1. 基于乖离率的择时策略

乖离率(BIAS),又称偏离率,简称Y值,是通过计算市场指数或收盘价与某条移动平均线之间的差距百分比,以反映一定时期内价格与其MA偏离程度的指标,从而得出价格在剧烈波动时因偏离移动平均趋势而造成回档或反弹的可能性,以及价格在正常波动范围内移动而形成继续原有势的可信度。乖离率,是用百分比来表示价格与MA间的偏离程度(差距率)。乖离率曲线(BIAS),是将各BIAS值连成线,得到的一条以0值为横向中轴之波动伸延的曲线。

根据上面的科普我们知道乖离率是一个(-100,100)之间的数,一般我们使用它标识超买区和超卖区,我们先用N=[6,12,24]分析一下历史乖离率:
截屏2022-10-08 20 21 33
可以看到从时间维度看乖离率的稳定性还不错,从直方图看也比较正态,不存在肥尾等现象。
我们定一个策略:

  • 从bias_n的前m日选取pct20和pct80作为超买和超卖标志点位
  • 超买区 100% 仓位
  • 超卖区 0% 仓位

德州翻前策略研究-6max

TOC:

  • 100BB尺度下
    • RFI的区别
    • Facing RFI的区别
    • Facing 3-bet的区别
    • SB\BB策略
  • 15BB以内的翻前策略

RFI

screenshot-20231031-204742

  • 除了SB\BB,没有limp的范围,始终是raise or fold
    • 但是当前位有limp的时候,赔率可能能支持一些中等牌力(小对子、同花连张、同花隔张)做limp
  • LJ
    • 同花:A3s+、K8s+、Q9s+、J9s+、T9s
    • 对子:66+
    • 两高张:除KTo、QTo、JTo外的所有两高张
  • HJ
    • 同花:A2s+、K6s+、Q8s+、J9s+、76s以上同花连张
    • 对子:55+
    • 两高张:除JTo外的所有两高张
  • CO
    • 同花:A2s+、K3s+、Q6s+、J8s+、T7s+、76s以上同花连张、97s以上同花隔张
    • 对子:33+
    • 两高张:所有两高张
    • Axo:A8o+
  • BTN
    • 同花:A2s+、K2s+、Q3s+、J4s+、T6s+、96s+、85s+、54s以上同花连张、53s以上同花隔张
    • 对子:所有对子
    • 两高张:比8大的所有两高张(Q8o、J8o也可以放在RFI范围)
    • Axo:A4o+
    • Kxo:k8o+
  • SB:SB的情况很复杂:当弃牌到SB时,拿到强牌混合limp(慢打)和raise(价值)、拿到非强牌也混合limp(打翻后)和raise(偷盲)
    • limp
      • 强牌:AA、AKo、AQs、AJs、KQs、KQo、中等对子
      • 非强牌:部分Axs、部分Axo、大量同花连张、同花隔张、大量两张同花
    • raise
      • 强牌:KK、QQ、JJ、AKs、ATs、AQo、AJo
      • 非强牌:部分大劈叉同花(A5s、Kxs、Qxs、Jxs)、小对子(22、33)、Axo(小踢脚)

Facing RFI

screenshot-20231102-201122
screenshot-20231102-201205

整体策略分为有位置优势(IP)和没位置优势(OOP)两种情况:

  • IP:除了btn,没有冷跟住范围,btn会用小对子、小同花连张、中等两高张跟注;用超强牌和边缘牌(Axs小踢脚、小手对)混合3bet
    • HJ:只会面对LJ,基本只有价值3-bet(ATs+、KTs+、QJs、99+、AQo、KQo),混合一个A5s 3-bet平衡;总得说来,由于位置也很差,所以玩的非常诚实
    • CO
      • facing LJ:由于LJ的RFI范围很有限,所以也是玩的很诚实;价值3-bet(ATs+、KTs+、QJs、88+、AQo、KQo)、平衡3-bet A5s
      • facing HJ:价值A9s+、KTs+、OJs、88+、AJo+、KQo、平衡3-bet A4s、A5s
    • BTN:作为全场位置最好的人,后面只有两个未行动玩家,有一定的冷跟注范围(约40%)
      • facing LJ:
        • 3-bet:同花中A3s、A4s、A8s、A9s、AQs、AKs、K9s、QJs、T9s;JJ+以上对子;AJo、AKo、KQo两高张
        • cold call:中对子(55-TT)、同花连张(54s、65s、76s)
      • facing HJ:价值A9s+、KTs+、OJs、88+、AJo+、KQo、平衡3-bet A4s、A5s
  • OOP:由于假设RFI前位没有冷跟注范围,所以OOP主要就是SB\BB
    • SB:最差位置,只有3-bet范围,用超强牌混合小对子、Axs进行3-bet
    • BB:大多数时候进行跟注抵抗,抵抗范围主要是两高张、对子、同花连张、同花隔张等

手牌维度解析

可以游玩的手牌:

  • Axs:比想象的要强,基本在任何位置都可以Open;特别是在后位基本可以全范围Open,因为你的A是很好的block
  • Axo:比想象的弱,前位基本不玩ATo以下的手牌(ATo由于有顺子可能,可玩性会高一些);后位会作为一个偷池的工具
  • 对子:基本所有对子都可以玩,即使在UTG也会用66+开锅
  • 同花连张:前位慎重,但是依然可玩;后位基本都可以Open;34s以下不要玩;
  • 同花隔张:非常隐蔽的投机牌,所以只应该在后位进行游玩(42s就别玩了)
  • Kxs、Qxs、Jxs:前位不要玩太小踢脚的(比如6以下),后位甚至btn可以激进Open
  • 两高张(T以上):
    • 同花两高张基本都很强,全范围都可以游玩
    • 非同花两高张:QJo以上可以继续游玩,但是注意KTo\QTo\JTo,它们没有我们想的强,在前位要谨慎

可以面对open的手牌(不包含SB\BB):

  • ATs以上,A5s可以作为3-bet bluff的组合
  • KTs以上,没有bluff的平衡
  • 对子:中等对子支持继续游玩
  • 两高张
    • suit:基本都可以作为3-bet的范围,btn有一定冷跟注范围
    • off-suit:注意KJo、QJo大多数位置不适合游戏(不够3-bet,冷跟注又容易被主宰)
  • 同花连张:前位不要游玩,btn有一定跟注打翻后的概率
  • 同花隔张:基本不适合游戏3-bet底池

纳指ETF和纳指期货关系调研

目的:利用纳指期货对持仓纳指做择时\仓位控制

  • 纳指ETF开盘价和收盘价的关系
  • A股收盘时,纳指期货涨跌和美股开盘时纳指指数的关系
  • A股收盘时,纳指期货涨跌和美股收盘时纳指指数的关系
  • 纳指指数收盘价和A股纳指ETF开盘价的关系
  • 在A股收盘前,如果纳指期货下跌,卖出纳指ETF,隔日买回的策略是否会增强

指数追涨策略调研

目的:找到一个最优的追涨组合

  • 标的:
    • A股:沪深300、创业板、中证500
    • 美股:纳指ETF、标普ETF
    • 债:国债、黄金ETF、招商双债、可转债ETF

各标的相关性分析

首先我们通过akshare获得所有的标的历史数据并merge到一起:
Snipaste_2023-03-03_00-46-
42
然后我们计算每个标的的收益率矩阵,并作处理使得收益为正(包含0)时=1,收益为负数时=-1:
Snipaste_2023-03-03_01-15-41

然后计算其相关系数:
Snipaste_2023-03-03_01-20-00

我们可以发现:

  1. 银华日利\黄金基本和其他标的没有协同关系
  2. 国债和A股ETF有微弱负相关关系
  3. 纳指和标普的相关度也很高
  4. 沪深300和其他两个A股ETF相关度0.5;而中证500和创业板相关度更大
  5. A股三至ETF和纳指\标普涨跌关系不大

所以很明显可以的确可以分成三个聚类部分:

  1. A股ETF
  2. 债性标的
  3. 美股标的
    三部分之前基本相关度都比较低

各个聚类内部分析

下面我们尝试对三个聚类内部的标的进行比较和分析:

对黄金的一些研究

TOC:

  1. 黄金和股市关系(纳指、HS300)
  2. 黄金和白银的关系(金银比)
  3. 黄金和黄金ETF的关系
  4. 黄金、黄金ETF和黄金股的关系

可转债因子分析

通过alphalens对可转债的价格、溢价率、规模以及其复合指标进行因子分析

因子分析

首先我们针对单因子,也就是价格、溢价率、规模进行单独的分析:
截屏2022-09-30 15 55 37
可以发现:

  • 基于价格的因子的区分度不好,最低价格和最高价格都收负收益,反而第二高价组跑的最好
  • 基于溢价率的因子的区分度是最好的,证明低溢价是个有效因子;然后在最低溢价的组内部,轮动天数越短收益越高
  • 基于剩余规模的因子有一定区分度但是不够显著,总得看来低剩余规模会有一定的超额收益
    总结,因子有效性:溢价率>剩余规模>价格;所以这里最低的价格并不能提供收益,反而溢价率这个进攻因子效果最好,录得回撤也最小

接下来我们计算一下简单的两个复合因子:双低(低溢价+低价格)和三低(低溢价+低价格+低剩余规模)的因子有效性分析
截屏2022-10-09 17 32 20

可以看到两个复合因子都体现了较好的分离度,都有一定有效性;我们进行一下简单的IC分析:

  • 双低IC(3D) -0.05表明双低的确是一个有效的反向因子,三低IC(3D)只有0.03不如双低策略
  • 两者p-value都接近0,证明这个IC的值的置信度很高

目前看来双低的确是一个很有效的因子

策略回测

因子分子只分析了因子在横截面上的有效性,那从历史数据看我们先针对三个单因子进行回测(每三天选15只进行轮动):
截屏2022-10-09 17 59 57

  • 从收益率看:低溢价>低剩余规模>低价格
  • 从波动率看:低价格<低溢价<低剩余规模
  • 从sharpe看:低溢价>低价格>低剩余规模
    所以从波动来看低价格的确会偏向防守一些,而低溢价偏向进攻一些;从sharpe看低溢价和低价格都有不错的α,从收益率看低溢价是最有效的因子;但是从最大回撤看三者相差无几,这说明当发生系统性风险的时候所有因子都会失效。

接下来还是对比下最经典的双低vs三低:
截屏2022-10-09 18 08 40

  • 双低vs三低:收益率三低>双低;sharpe三低>双低;波动率三低>双低;除去最大那次,其他时候三低最大回撤<双低
  • 双低vs低溢价:波动率双低明显减少,但是收益率也降低,最大回撤要小一些但是小的不明显,sharpe双低更高

最终结论

  1. 溢价率是一个很有效的因子
  2. 价格对于波动率有一定帮助,但是到遭遇系统风险时提供的债性保护很一般
  3. 剩余规模单因子提供的收益不太行,但是作为组合因子的
  4. 双低的确是一个不错的策略,三低也值的尝试

读<薛兆丰经济学讲义>

  1. 经济学的魅力:人的认知和所处际遇的反差;我觉得主要是可以用来解释所处的环境;
  2. 人类四大约束:东西不够、生命有限、相互依赖、需要协调
  3. 战俘营的经济世界:即使在一个非市场经济里,人也会有意识无意识的进行经济行为:
    • 交易的意义在于创造流动性 - 各取所需
    • 交易产生货币,无论它的表征是什么 - 在战俘营里使用香烟作为货币
  4. 马粪争夺案:所有权的讨论,本质是鼓励劳动
    • 溯源说:马粪产生于马
    • 位置说:马路是公家的,所以马粪属于公家
    • 标记说:标记决定了所有权
    • 劳动说:花费劳动力决定了所有权
  5. 工人就业:不用推土机,改用勺子挖土并不会使得社会更富有 - 先进生产力永远在替代落后生产力
  6. 环保塑料袋:塑料袋用的越多越浪费,但是用的越多食品保存期限也越长,食品的浪费就减少了 - 现代社会上主要因为环保问题而非浪费问题,所以提倡节约使用塑料袋
  7. 经济学中存在大量事与愿违:本质就是反身性,比如限制买房会造成房价上涨,最近各种松绑反而房价走低
  8. <不确定性、进化和经济理论>:经济学关系存活,优胜劣汰适者生存的生物学原理指导万事万物最终达到最优化状态
  9. 人是自私的,但是也是具有同情心和爱心的
  10. 铅笔的故事:一只铅笔的产生需要百道工序上万人的劳动;这就是人类社会协同的魅力,也是社会化分工的体现
  11. 行善和行商:行善难,行商易

A股小市值策略的一些研究

TOC:

  1. 不同指数下小市值策略的表现
  2. 全市场小市值因子分析
  3. 市值 vs 流通市值
  4. OLS、SVR以及随机森林等改进策略的研究

不同指数下小市值策略的表现

我们先收集一下主要指数的信息如下:

指数代码 指数名称 发布日期 行情开始日期 指数简写 指数权重开始日期
000001.XSHG 上证指数 1991-07-15 2005-01-04 SZZS 2011-05-31
399106.XSHE 深证综指 1991-04-04 2005-01-04 SZZZ
000016.XSHG 上证50 2004-01-02 2005-01-04 SZ50 2011-03-28
000300.XSHG 沪深300 2005-04-08 2005-04-08 HS300 2005-04-29
000905.XSHG 中证500 2007-01-15 2007-01-15 ZZ500 2005-01-31
000852.XSHG 中证1000指数 2014-10-17 2014-10-17 ZZ1000 2014-10-31
399303.XSHE 国证2000 2014-03-28 2014-03-28 GZ2000 2014-03-31
399101.XSHE 中小板综 2005-12-01 2005-12-01 ZXBZ 2016-05-31
399005.XSHE 中小板指 2006-01-24 2006-01-24 ZXBZ 2009-09-30
399006.XSHE 创业板指 2010-06-01 2010-06-01 CYBZ 2010-06-30
000688.XSHG 科创50 2020-07-23 2020-07-23 KC50 2020-07-31

这里分别介绍一下各个指数的信息:

  • 上证指数:所有在上海证券交易所上市的公司
  • 深证综指:所有在深圳证券交易所上市的公司(需要注意和深圳成指的区别,深圳成指是选取了500家在深市上市公司编制而成)
  • 上证50:在沪市上市的市值最大的50家公司
  • 沪深300:在两市上市的300只流动性最好、市值最大的公司组成(沪深300和上证50走势高度一致,基本可以用来代表两市大市值的公司)
  • 中证500 :选取两市市值排名301-800的公司,以前常用来表示小市值,但是在A股扩容这些年已经不能用来表示小市值了。
  • 中证1000:
  • 国证2000:由扣除总市值排名前1000只证券后市值大、流动性好的2000只证券组成,反映沪深市场小型证券的价格变动趋势。
  • 中小板综:是指中小板综合指数,简称应该为"中小板综",指由中小板市场的所有股票做样本计算的指数,计算时包括了流通股和非流通股。
  • 中小板指:包括100家主要的中小板股票,是中小板的主要指数。
  • 创业板:创业板又称二板市场(Second-board Market)即第二股票交易市场,是与主板市场(Main-Board Market)不同的一类证券市场
  • 科创板:科创板(The Science and Technology Innovation Board; STAR Market) [1] ,是由国家主席***于2018年11月5日在首届**国际进口博览会开幕式上宣布设立,是独立于现有主板市场的新设板块,并在该板块内进行注册制试点

我们先看一下各个指数在市值纬度下小市值策略的表现(benchmark是指数本身):

指数代码 指数名称 回测开始日期 回测结束日期 策略年化 最大回撤 夏普比率 日均超额收益
000001.XSHG 上证指数 2005-01-05 2023-04-18 33.3% 48.8% 1.14 0.10%
399106.XSHE 深证综指 2005-01-05 2023-04-18 37.6% 51.1% 1.33 0.09%
000016.XSHG 上证50 2005-01-05 2023-04-18 3.5% 71% -0.01 -0.01%
000300.XSHG 沪深300 2006-01-01 2023-04-18 16.2% 67.8% 0.4 0.03%
000905.XSHG 中证500 2008-01-01 2023-04-18 11.3% 65.2% 0.24 0.04%
000852.XSHG 中证1000指数 2015-06-01 2023-04-18 8.4% 48.1% 0.15 0.07%
399303.XSHE 国证2000 2015-06-01 2023-04-18 33% 42.7% 1.043 0.14%
399101.XSHE 中小板综 2006-06-01 2023-04-18 37.9% 57.4% 1.278 0.09%
399005.XSHE 中小板指 2007-01-01 2023-04-18 12.2% 74.3% 0.273 0.02%
399006.XSHE 创业板指 2011-06-01 2023-04-18 4.1% 73.4% 0.004 -0.02%

我们可以看到(科创50回测失败,剔除):

  • 小市值策略在上证50和创业板上是失效的,这也符合预期;
  • 其他指数小市值策略均有不同的超额收益,所以市值因子是一个较为普遍有效的因子;
  • 中小板综的小市值策略run的最好,但是其实上证指数、深证综指、国证2000也跑步不错;
  • 小市值策略是一个回撤非常大的策略,基本都会遇到腰斩的时刻;

全市场小市值因子分析

既然我们知道上证指数、深证综指上小市值是有超额收益的,那么我们使用股票池:

  • 上证指数 + 深证综指 - 创业板 - 科创板

借助alphalens做一次小市值因子的单因子分析:

德州翻后tips

  • 对抗多人(>=3)时,翻牌圈miss的c-bet bluff是-ev的;
    • 对抗多人时要打的诚实
  • float主要用来对抗诚实而保守的玩家;他们知道应该在翻牌c-bet,但是在得到跟注后却会在转牌停枪
    • 有位置的时候更合适float
    • 牌力提升的时候
    • 翻牌不在对手范围的时候

简述Android中的ANR

What:什么是ANR
Why:为什么有ANR
When:什么时候发生ANR

  • 拆炸弹模式
    • 在哪埋炸弹
    • 在哪拆炸弹
    • 有哪些炸弹
    • 炸弹炸了如何分析

How:如何处理ANR

扩展阅读:

  • trace.txt解析
  • 时间序列

机器学习在小市值多因子策略上的应用

超参设定:

  • 小盘股标的池 = [399101]
  • 轮动周期 = [3,5,10,20,30,60]
  • 因子:
    • 市值因子:market_cap
    • 动量因子:earn[3,5,10,20,30,60]
    • 基本面因子:[pb,pe,eps]
    • 波动因子:[atr]
  • 训练集长度:[30,60,120,240,480]
  • 回归模型:[randomforestregressor,xgboost]

策略核心:
用多个因子对market_cap(市值)进行回归

market_cap = f(x1...xn)

然后用当前时刻(t)的因子去预测下一个周期的市值:market_cap(predict t+1)

Δmarket_cap = market_cap(predict t+1) - market_cap(t)

Δmarket_cap基本等同于本周期的预测收益率;取Δmarket_cap最大的前10%标的进入轮动池

简单的回归测试

健身补剂科普

目标:

  • 吃什么
  • 怎么吃

先看一下补剂的ABC分类:

  • A类:明确确定对健身有帮助的补剂;例如肌酸咖啡因等
  • B类:新兴研究,有效性待进一步确认的补剂;如左旋肉碱BCAA等
  • C类:没有科学研究证明,不建议使用的补剂;如促睾、谷氨酰胺等

接下来排一下雷:

  1. 促睾|不推荐
  • 成分有几十种方案;比较广泛认可有效果的是锌、维他命D、硼;
  • 大多促睾效果并不好,先要确定自己总睾酮和游离睾酮是否偏低;
  • 锌和维他命D在食物中广泛分布
  • 硼在菠菜等蔬菜里有,不是很多
    • 只有游离睾酮(2%)可以用来长肌肉
    • 硼可以促进更多睾酮转换成游离睾酮
  • 建议:
    • 睡眠足够
    • 蛋白质&优质脂肪
    • 心理健康
    • 买硼补剂更有效且实惠
  1. 增肌(重)粉|不推荐
  • 成分:蛋白质(30%-50%)+碳水化合物
  • 碳水成分一般是麦芽糊精,升糖指数110;快碳(升糖>50)
  • 建议:蛋白粉+燕麦+香蕉+蜂蜜更合适
  1. 氮泵|不推荐
  • 成本:咖啡因+丙氨酸
  • 丙氨酸提高耐力;部分人有刺痒的感觉
  • 建议:咖啡因片或者黑咖啡
  1. 谷氨酰胺|不推荐
  • 非必须氨基酸
  • 牛奶、鸡蛋、海鲜里大量存在
  • 建议:吃蛋白质食物
  1. 牛肉蛋白|不推荐
  • 牛肉蛋白!=牛肉
  • 牛肉是含9种必须氨基酸的蛋白
  • 建议:牛肉蛋白和乳清蛋白没啥区别,买更便宜的乳清蛋白更好

再调研一下常见的补剂(乳清蛋白、肌酸、咖啡因、硼):

  • 蛋白粉
    • 水解乳清蛋白
    • 分离乳清蛋白
    • 浓缩乳清蛋白
    • 酪蛋白:缓释蛋白,一般晚上喝
    • 食用:起床 and 健身完成后
  • 咖啡因
    • 主要提升运动过程表现
    • 咖啡因片或者冻干黑咖啡即可,每次咖啡因<=200mg
    • 注意会影响睡眠
  • 肌酸
    • 帮助ATP快速还原,提升运动表现
    • 一水肌酸|复合肌酸
    • 会提升储水,所以人会肿一点
    • 食用:日常复用即可
    • 硼主要是可以改善新陈代谢、激素水平和骨骼健康;成年人一天建议1-13mg/d,属于微量元素了
    • 一般不需要买补剂,水果豆类中含量较高
    • 推荐食用:西梅、葡萄干、花生、苹果、桃子

最后我个人总结一下我的选择:

  • 乳清蛋白:早餐and运动后服用
  • 肌酸:日常服用
  • 咖啡因:选择黑咖啡\美式,运动前饮用
  • 硼:乳清蛋白中添加葡萄干

REF:
[1] https://www.bilibili.com/video/BV1dB4y187qM
[2] https://zhuanlan.zhihu.com/p/461486268
[3] https://www.bilibili.com/video/BV1pW411N7AV
[4] https://www.zhihu.com/question/45595317/answer/1744300152

香草滚动定投的相关研究

  • 拿到中证500历史数据
  • 计算每天的一年后收益率
    • 大于0:乘以R
    • 小于0:等于0
  • 计算收益直方图以及相关avg\pct50等数据
  • 按月定投,每月净值1
  • 累加12份的收益,除以12就是总累计收益

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.