灰气球

灰气球

证券龙头和证券公司和证券公司30成分股分析

127
2023-04-17

数据下载时间:202303

总结

同时存在证券公司(399975)和证券龙头(399437)的股票有30只;
证券公司(399975)前10大重仓股权重占57.349%;
证券龙头(399437)前10大重仓股权重占80.18%;
证券公司30(931412)前10大重仓股权重占66.78%;
证券公司(399975)、证券公司30(931412)的持股更加均衡,而证券龙头(399437)则更加侧重于龙头股。
从自己的角度触发,兼顾理财计划中现有的其他标的,我选择了证券龙头(399437)。

指数编制规则

证券公司(399975)

指数快照

指数代码: 399975
指数简称: 证券公司
指数全称: 中证全指证券公司指数
调样频率: 每半年
发布日期: 2013-07-15
基点: 1000

指数特征

样本数量: 49
指数自由流通市值: 15966.72 (亿元)
样本最大自由流通市值: 2307.72 (亿元)
样本最小自由流通市值: 40.61 (亿元)
样本平均自由流通市值: 325.85 (亿元)
样本自由流通市值中位数: 187.00 (亿元)

选样空间&方法

1 样本空间
同中证全指指数的样本空间 
2 选样方法
 2.1 将样本空间证券按中证行业分类方法分类
 2.2 如果行业内证券数量少于或等于50 只,则全部证券作为相应全指行业指数的样本;
 2.3 如果行业内证券数量多于 50 只,则依次剔除行业内全部证券成交金额排名后 10% 的证券以及累积总市值占比达行业内全部证券 98% 以后的证券,剔除过程中优先确保剩余证券数量不少于 50 只,将剩余证券作为相应行业指数的样本。

指数行情

权重分布

证券公司30(931412)

指数快照

指数代码: 931412
指数简称: 证券公司30
指数全称: 中证证券公司30指数
调样频率: 每半年
发布日期: 2020-02-20
基点: 1000

指数特征

样本数量: 30
指数自由流通市值: 13599.58 (亿元)
样本最大自由流通市值: 2307.72 (亿元)
样本最小自由流通市值: 79.94 (亿元)
样本平均自由流通市值: 453.32 (亿元)
样本自由流通市值中位数: 284.00 (亿元)

选样空间&方法

1 样本空间
样本空间由同时满足以下条件的上市证券构成:
 1.1 中证全指指数样本;
 1.2 中证行业分类属于证券公司行业的上市公司证券;
 1.3 上市时间超过 6 个月。 
2 选样方法
 2.1 对样本空间内证券按照过去一年的日均成交金额由高到低排名,剔除在中证全指样本中排名后 20%的证券;
 2.2 剔除满足以下条件之一的证券后,将剩余证券作为待选样本;
  2.2.1 实际控制至少一家证券公司,但合并报表中证券行业相关主营业务收入占比不足 80%的上市公司证券;
  2.2.2 证券行业相关主营业务收入占比不足 50% 的上市公司证券;
  2.2.3 中国证监会确定的证券公司风险控制相关指标未达到最低预警标准的上市公司证券。
 2.3 按照证券公司每年公布的经纪、发行与承销、资管、信用与投资单项业务收入由高到低排名,并进行标准化打分,再将各项得分的简单算术平均值作为业务得分;
 2.4 在上述待选样本中,根据业务得分、过去一年日均总市值、营业收入(TTM)、ROE(TTM)和营业收入同比增速分别由高到低排名,再以各项排名的简单算术平均值作为综合排名,选取综合排名靠前的 30 只证券作为指数样本。

指数行情

权重分布

证券龙头(399437)

指数快照

指数代码: 399437
指数简称: 证券龙头
指数全称: 国证证券龙头指数
调样频率: 每半年一次
发布日期: 2014-12-30
基点: 1000

选样空间&方法

1 选样空间
满足下列条件的所有 A 股:
  1 非 ST、*ST 股票;
  2 上市时间超过六个月;
  3 公司最近一年无重大违规、财务报告无重大问题;
  4 公司最近一年经营无异常、无重大亏损;
  5 考察期内股价无异常波动;
  6 公司业务领域为证券。

2 选样方法
  1 首先,剔除最近一年中国证监会分类评级为 C 及 C 以下的证券公司的股票;
  2 然后,按经纪、投行、资管、信用、投资五项业务最新年报的营业收入数据从高到低排序,分别选取各项业务排名前 10 名的股票,并选取具有证券相关创新业务的股票;
  3 最后,对入围股票按最近半年的 A 股日均总市值从高到低排序,选取前 30 名股票构成样本股,数量不足 30 只时,将五项业务排名均不在 10 名的股票,按最近半年的 A 股日均总市值从高到低排序,选取排名靠前的股票,直到样本股数量达到 30 只。

指数行情

权重分布

代码结果输出

指数成分股数量

  • 证券公司数量:49
  • 证券龙头数量:30

证券龙头和证券公司

证券龙头比证券公司更倾向权重股;

  • 证券龙头跟证券公司相同的公司数量:30
  • 证券龙头的公司在证券公司中所占的权重:84.79599999999999
  • 证券龙头的前十大权重股所占的权重:80.18
  • 证券公司的前十大权重股所占的权重:57.349

证券公司30和证券公司

由于证券公司30成分公司只有30个,前十大重仓股比例会稍微高一些;

  • 证券公司30跟证券公司相同的公司数量:30
  • 证券公司30的公司在证券公司中所占的权重:84.601
  • 证券公司30的前十大权重股所占的权重:66.78
  • 证券公司的前十大权重股所占的权重:57.349

证券龙头和证券公司和沪深300

证券龙头和证券公司在沪深300中的情况完全一样,数量为20,权重为5.558;

  • 证券龙头跟沪深300相同的公司数量:20
  • 证券龙头的公司在沪深300中所占的权重:5.558
  • 证券公司跟沪深300相同的公司数量:20
  • 证券公司的公司在沪深300中所占的权重:5.558

代码

@Slf4j
public class QuanShangIndexAnalysis {

    public static void main(String[] args) {
        String zhengquangongsiWeightFileName = "202303/399975closeweight.xls";
        List<ZhongZhengWeightMo> zhengquangongsiWeights = Lists.newArrayList();
        EasyExcel.read(ResourceUtil.getResource(zhengquangongsiWeightFileName).getFile(), ZhongZhengWeightMo.class, new ZhongZhengWeightMoListener(zhengquangongsiWeights)).sheet().doRead();

        String zhengquangongsi30WeightFileName = "202303/931412closeweight.xls";
        List<ZhongZhengWeightMo> zhengquangongsi30Weights = Lists.newArrayList();
        EasyExcel.read(ResourceUtil.getResource(zhengquangongsi30WeightFileName).getFile(), ZhongZhengWeightMo.class, new ZhongZhengWeightMoListener(zhengquangongsi30Weights)).sheet().doRead();

        String zhengquanlongtouWeightFileName = "202303/399437_cons_202303.xls";
        List<GuoZhengWeightMo> zhengquanlongtouWeights = Lists.newArrayList();
        EasyExcel.read(ResourceUtil.getResource(zhengquanlongtouWeightFileName).getFile(), GuoZhengWeightMo.class, new GuoZhengWeightMoListener(zhengquanlongtouWeights)).sheet().doRead();

        String hushen300WeightFileName = "202303/000300closeweight.xls";
        List<ZhongZhengWeightMo> hushen300Weights = Lists.newArrayList();
        EasyExcel.read(ResourceUtil.getResource(hushen300WeightFileName).getFile(), ZhongZhengWeightMo.class, new ZhongZhengWeightMoListener(hushen300Weights)).sheet().doRead();

        System.out.println("证券公司数量:" + zhengquangongsiWeights.size());
        System.out.println("证券龙头数量:" + zhengquanlongtouWeights.size());
        System.out.println("证券公司30数量:" + zhengquangongsi30Weights.size());

        Map<String, ZhongZhengWeightMo> zhengquangongsiWeightMap = zhengquangongsiWeights.stream().collect(Collectors.toMap(ZhongZhengWeightMo::getConstituentCode, item -> item, (v1, v2) -> v2));
        Map<String, ZhongZhengWeightMo> zhengquangongsi30WeightMap = zhengquangongsi30Weights.stream().collect(Collectors.toMap(ZhongZhengWeightMo::getConstituentCode, item -> item, (v1, v2) -> v2));
        Map<String, ZhongZhengWeightMo> hushen300WeightMap = hushen300Weights.stream().collect(Collectors.toMap(ZhongZhengWeightMo::getConstituentCode, item -> item, (v1, v2) -> v2));

        Comparator<GuoZhengWeightMo> guoZhengWeightMoComparator = Comparator.comparing(GuoZhengWeightMo::getWeight).reversed();
        Comparator<ZhongZhengWeightMo> zhongzhengWeightMoComparator = Comparator.comparing(ZhongZhengWeightMo::getWeight).reversed();

        zhengquangongsiWeights.sort(zhongzhengWeightMoComparator);
        zhengquanlongtouWeights.sort(guoZhengWeightMoComparator);
        zhengquangongsi30Weights.sort(zhongzhengWeightMoComparator);

        System.out.println("证券龙头跟证券公司相同的公司数量:" + zhengquanlongtouWeights.stream().filter(item -> zhengquangongsiWeightMap.get(item.getConstituentCode()) != null).distinct().count());
        System.out.println("证券龙头的公司在证券公司中所占的权重:" + zhengquanlongtouWeights.stream().map(item -> zhengquangongsiWeightMap.get(item.getConstituentCode())).filter(Objects::nonNull).mapToDouble(ZhongZhengWeightMo::getWeight).sum());
        System.out.println("证券龙头的前十大权重股所占的权重:" + zhengquanlongtouWeights.subList(0, 10).stream().mapToDouble(GuoZhengWeightMo::getWeight).sum());
        System.out.println("证券公司的前十大权重股所占的权重:" + zhengquangongsiWeights.subList(0, 10).stream().mapToDouble(ZhongZhengWeightMo::getWeight).sum());

        System.out.println("证券公司30跟证券公司相同的公司数量:" + zhengquangongsi30Weights.stream().filter(item -> zhengquangongsiWeightMap.get(item.getConstituentCode()) != null).distinct().count());
        System.out.println("证券公司30的公司在证券公司中所占的权重:" + zhengquangongsi30Weights.stream().map(item -> zhengquangongsiWeightMap.get(item.getConstituentCode())).filter(Objects::nonNull).mapToDouble(ZhongZhengWeightMo::getWeight).sum());
        System.out.println("证券公司30的前十大权重股所占的权重:" + zhengquangongsi30Weights.subList(0, 10).stream().mapToDouble(ZhongZhengWeightMo::getWeight).sum());

        System.out.println("证券龙头跟沪深300相同的公司数量:" + zhengquanlongtouWeights.stream().map(item -> hushen300WeightMap.get(item.getConstituentCode())).filter(Objects::nonNull).count());
        System.out.println("证券龙头的公司在沪深300中所占的权重:" + zhengquanlongtouWeights.stream().map(item -> hushen300WeightMap.get(item.getConstituentCode())).filter(Objects::nonNull).mapToDouble(ZhongZhengWeightMo::getWeight).sum());
        System.out.println("证券公司跟沪深300相同的公司数量:" + zhengquangongsiWeights.stream().map(item -> hushen300WeightMap.get(item.getConstituentCode())).filter(Objects::nonNull).count());
        System.out.println("证券公司的公司在沪深300中所占的权重:" + zhengquangongsiWeights.stream().map(item -> hushen300WeightMap.get(item.getConstituentCode())).filter(Objects::nonNull).mapToDouble(ZhongZhengWeightMo::getWeight).sum());
    }
}