中国海油估值分析
主营
从页岩气中提取石油并销售
油气销售 净利润占比 97.23%
分红
派现融资比0.3179,因为上市没几年。
分红率40%可以预期。
财务
营收
营收稳定增长,利润稳定增长。
24年中报2268亿,同比增长18%。
净利
24年中报797亿,同比增长25%。
未来经营猜想
海南页岩气扩张,石油产出增加,基于油价,低油价低利润,高油价高利润。
24年中以80元每桶的价格,超过了22年110元每桶的价格,扩张,降成本可期。
估值
2024-09-02
当前市值1.4万亿,股价28.9,总股本475.5亿。
假设全年1547,未来平均维持住该利润,分红43%,那么加权利润为 841.56亿,按5%到10%倒退,那么市值为8415.6到16831.2亿。对应股价 17.69到35.39
仓位:
有成长,质优,给与20%的仓位。
2024-08-14
按22年1238亿净利润为基准,分红率40%,那么加权现金流为 12380.4+12380.6/4=680.9亿。
按5%到10%的估值,那么估值为6809亿到13618亿。
基于确定性,给20%仓位。
农业银行估值分析
601288.XSHG,农业银行,银行I,银行II
财务
营收开始放缓
净利润今年也放缓
分红融资
派现融资比2.98,优秀
20年分红647.8亿,30%
21年分红 723.8亿, 30%
22年分红 777.7亿, 30%
23年分红 808.1亿, 30%
估值
2024-08-30
当前市值1.6万,股价4.69,总股本3499.8亿。
预估未来无增长或微跌,维持净2600亿,加权现金流 2600*(0.7/5+0.3)=1144亿,按5%到10%估算,对应市值11440到22880亿,对应股价3.26到6.53
仓位给与10%
- 营收下降
- 招行,工行,农行三大航。
2024-08-14
当前市值1.6万亿,股价4.66,总股本3499.8亿。
预估未来无增长或微跌,维持净利润回到20年的2159亿,加权现金流 2159*(0.7/4+0.3)=1025.52亿,按5%到10%估算,对应市值10255.2到20510.5亿,对应股价2.93到5.86
仓位给与10%
- 因为营收净利出现了下降的情况
2024-07-22
银行已经有两个了,不分析
恒源煤电估值分析
600971.XSHG,恒源煤电,采掘I,煤炭开采II
基本信息
2004-08-17 上市
当前市值109.8亿,股价9.15,总股本12亿。
财务
营收
24年38.93,同比下降8%
净利
24年中报7.58亿,同比下降32%。
分红
派现融资比1.38,不合格
累计分红54.88亿,近3年分红28.2亿。
20年后分红率51.38%,43.25%,47.49%,50%。
估值
2024-08-28
分红融资比1.38,比较一般。
假设回到18年到20年,利润11亿,分红40%,加权净利润为 5.72亿 按5%到10%,57.2亿到114.4亿之间。
仓位:净利下降32%,不观察。
2024-07-23
一季报下降19%
假设回到18年到20年,利润11亿,分红50%,5.5亿,按5%到10%,55亿到110亿之间。
工商银行估值分析
601398.XSHG,工商银行,银行I,银行II
分红融资
派现融资比4.85,优秀
20年948亿 30%
21年 1045亿 30%
22年 1082亿 30%
23年 1092亿 30%
估值
2024-08-30
当前市值22000亿,股价6.23,总股本3564.1亿
利润维持住3600亿,分红维持住30%,那么就是1080亿,加权现金流为1584亿,按5%到10%股息率计算,市值为15840亿到31680亿。对应股价4.44到8.88
仓位:
由于有工商,农业,招商,给与10%的仓位。
2024-08-14
当前市值21000亿,股价6.02.
利润维持住3600亿,分红维持住30%,那么就是1080亿,加权现金流为1710亿,按5%到10%股息率计算,市值为17100亿到34200亿。对应股价4.8到9.6
确定性给与20%仓位
2024-07-22
利润维持住3600亿,分红维持住30%,那么就是1080亿,按5%到10%股息率计算,市值为10800亿到21600亿。
spark源码阅读03-withscope的作用和原理
前言
阅读spark源码时,withscope代码随处可见,
比如最简单的map
1 | def map[U: ClassTag](f: T => U): RDD[U] = withScope { |
当时就有一个疑问,这个的作用是啥?
withscope 的作用
官方的注释解释
Execute the given body such that all RDDs created in this body will have the same scope.
If nesting is allowed, any subsequent calls to this method in the given body will instantiate child scopes that are nested within our scope. Otherwise, these calls will take no effect.
Additionally, the caller of this method may optionally ignore the configurations and scopes set by the higher level caller. In this case, this method will ignore the parent caller’s intention to disallow nesting, and the new scope instantiated will not have a parent. This is useful for scoping physical operations in Spark SQL, for instance.
Note: Return statements are NOT allowed in body.
机器翻译一下
执行给定的主体内容,确保在该主体内容中创建的所有 RDD 都具有相同的范围。如果允许嵌套,则在给定主体内容中的任何后续调用将会实例化嵌套在我们当前范围内的子范围。否则,这些调用将不会产生效果。 此外,调用此方法的主体可以选择忽略上级调用者设置的配置和范围。在这种情况下,此方法会忽略父级调用者禁止嵌套的意图,并且新实例化的范围将没有父级。这对于在 Spark SQL 中为物理操作设定范围是有用的。 注意:主体内容中不允许使用返回语句。
额,有点生硬,找下网上的解释
在 Apache Spark 中,withScope 主要用于构建和跟踪 RDD (Resilient Distributed Datasets) 的作用域层次结构。它被广泛应用于 Spark 的内部实现中,以记录 RDD 的操作历史和父子 lineage 关系,这对于调试、性能优化和监控非常重要。
withScope 的主要功能包括:
- 作用域层次结构:
- withScope 保证了在给定的代码块内创建的所有 RDD 都具有相同的作用域。
- 如果允许嵌套,则可以创建子作用域来表示更细粒度的操作。
- 操作序列记录:
- 它记录 RDD 操作的序列,帮助追踪 RDD 的来源和转换过程。
- 依赖关系分析:
- 帮助理解和分析 RDD 之间的依赖关系。
- Spark UI 展示:
- 支持 Spark UI 中的可视化展示,使得用户能够看到数据流的图形表示。
其实,还是有那么点不理解,问题不大,我们先看源码。
withscope的源码
withscope到底干了啥?
传到底层后,源码如下
1 | private[spark] def withScope[T]( |
简单来说,withscope就是往LocalProperty里存一个RDDOperationScope对象的json字符串,这个对象里包含了作用域的名字和父级作用域。
withscope的写入的东西长什么样?
我们以workcount代码为例来查看
1 | // scalastyle:off println |
同时修改withscope源码,加上日志打印
1 | // Optionally disallow the child body to override our scope |
运行代码,关于日志的输出如下
1 | 24/08/08 18:52:52 INFO RDDOperationScope: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
可以看到,写入的基本都很简单,一个id,一个name,无了,没有parent
为什么没有parent?
1 | body |
结合之前的源码,body函数执行结束后,就会重置scope
也就是说body函数内需要再次调用withscope才会有parent
而我们的wordcount里的map,flatmap里都不会再次调用withscope。