SRE: Data Integrity

 

Data integrity usually refers to the accuracy and consistency of data throughout its lifetime. For customer involved online services, things can go even more complex. Any data corruption, data loss, or extended unavailability are considered data integrity issue for the customer.

Data integrity in many cases can be a big problem. For instance, the database table was corrupted and we had to spend a few hours restore the data from the snapshot database. In another instance, the data was accidentally deleted and had a fatal impact on our client, as the client never expected the data to be unavailable. However, it was too expensive to restore the data, so we had to fix the dependent data record and some code on the client side to mitigate the impact on the clients. There is another instance that the data loaded for the client is not what they expected. This is clearly a data consistency issue. However, the issue was not reproducible and thus made it super hard for the team to debug.

There are many types of failure that could lead to the data integrity issue:

  • Root cause

User actions, Operator Error, Application Bug, Infrastructure defect, Hardware Failure, Site Disaster

  • Scope

Wide, Narrow, directed

  • Rate

Big Bang, Slow and Steady

This leads to the 24 combinations of the data integrity issue. How do we handle such issues?

First layer action is to adopt soft delete to the client data. The idea behind soft delete is to make sure that the data is recoverable if needed, for example, from operation errors. A soft delete is usually implemented through adding a is_delete flag and a deleted_at time stamp to the table. When data is to be deleted, they are not deconstructed from the database immediately, but will be marked as deleted with a scheduled deleted time in the future, say 60 days from the deletion. In this way, the data deletion could be reverted if necessary.

There are different opinions about the soft deletion solution, as it might introduce extra complexity on the data management. For example, when there are hierarchies and dependency relationship between the data records, the deletion might break the data constraints. In the meantime, it makes the data selection and option more complex, as a customized filter has to be applied to the data in order to filter out the data that has been soft deleted. And recovering the soft delete data can also be complex especially only part of the data is deleted, a recovery might involve complex data merge.

The second layer action is to build the data backup system and make the recovery process fast. We need to be more careful here that the data backup or archive is not the purpose of data integrity. Find out ways to prevent the data loss, to detect data corruption, to quickly recover from data integrity instance is more important. Data backup is often times neglected as it yields no visible benefit and not a high priority for anyone. But building a restoring system is a much more useful goal.

For many cloud services, data backup is an option, for example, AWS RDS supports creating data snapshot, while the cloud cache Redis cluster supports backup the data on the EBS storage. Many people stop here as they assume that the data is currently back up. However, we should realize that the data recovery could take a long time to finish, and the data integrity is broken during the recovery time. The recovery time should be an important metric for the system.

Besides back up, many systems use replicas. And by failover to the replica when the primary node had an issue, they could improve the system availability. We need to realize that the data might not be consistent between the primary instance and the replica instance.

A third layer is to detect the error earlier. For example, have a data validation job that validates the integrity of the data between different storage systems so that the issue could be fixed quickly when it happens.

SRE: Service Level Objectives

As we are moving from monolithic service to the micro-services, I find it pretty useful to think about the following problems:

  • How do we correctly measure the service?

This question can be breakdown into the following sub questions:

  • If you are about to maintain your service, how do you tell whether your service is functioning correctly or not?
  • If your service is a client facing product, how do you know whether you provide a good experience for the client or not?
  • How do you know your service hit the performance bottleneck or not?
  • If you are about to scale the service performance, what metric should you use to find out the performance bottleneck?

As you find out from the above sub-questions​, it all about defining the metrics for the proper client and proper scenario. For sanity check of the service, it should be quick and straightforward, for product experience check, you should rather put metric where the product impact could be measured; for performance monitoring and optimization, finding out how to measure the resource utilization and the dependent service are essential metrics.

I found that many times we didn’t measure our service correctly. And it takes time, experience and domain knowledge to find define such metrics correctly.

  • How to manage the expectation of the clients that are using our service?

One common problem for monolithic service is that the integration many times are based on direct DB or data integration, where the client treat it as local DB where the data is always available. With this setting, the failure in one domain would be contagious: as the client never assume there will be failures from the domain and when failure happens, no exception handling logic is installed to handle such failures.

To make the system more resilient, a service level agreement or expectation is truly needed. It is about setting the expectation of you service client: we are not a service that is constantly performant and reliable, we could slowdown or not available at some case, and you should be prepared for that.

So I find it is pretty useful to think about these problem​s with the SLOs and related concepts:

  • SLIs: Service Level Indicators

The service level indicators are metrics you defined to measure the behavior and performance of your service. It can be product facing or purely engineering facing.

  • SLOs: Service Level Objectives

The service level objectives are objectives that are set based on the SLIs. It serve as the direction for the team to optimize the system if necessary.

  • SLAs: Service Level Agreement

The service level agreements are more about the contract you defined for the client: how fast your service could load the data on average, and at what case you service might fail and how your client should handle such failure.

Besides defining the SLIs and SLAs, it also provides a way to validate the adoption of the SLAs. For example, if your client are supposed to handle the data access failures from your service, then you can validate that by scheduled an outage of your service. And by doing so, you push your client to adopt to the SLAs.​

货币供给的调控机制

中央银行是如何调控市场上的货币供给的呢?

中央银行的调控目标

在了解中央银行如何调控供给之前,我们先要了解为什么中央银行要进行这样的调控。以及,这样的调控是需要的吗?为什么不能完全让市场决定?中央银行是唯一合法的供给渠道,但是我们知道,如果市场上的货币供给过多就会导致通货膨胀,比如中央银行向财政部购买超出预算的债券,而如果货币供给不足就会导致货币市场上的利率增高,抑制投资和消费的需求,妨碍经济发展。但是中央银行以哪种测量量作为调控的指标和目标呢?不同的银行有不同的选择,总体上是以货币增长量和利率为主。

债券公开市场操作

中央银行调控货币流量的一个主要方式是公开债券市场回购债券。回购债券表现在家庭资产负债表上的变化是资产从债券转变成银行存款,因此市场上的货币量得以增加。在了解回购操作之前我们首先要了解一下债券这种金融产品。债券是在一段时间里保证每一时期支付一定金额的金融票据。和银行存款不同,债券是可以购买和转让的,并且购买和转让的价格取决于下面这些因素:

  • 面值:面值(face value,par value)是指债券交割的时候偿还的数量
  • 交割期限:债券到期和交割的日期,比如一年,五年,三十年等。
  • 利息和付息频率:按照利息(coupon)分比为零息债券,附息债券等,按照付息频率有比如半年付息,每年付息和一次付息等。
  • 发债者的信用水平
  • 可比较替代投资的收益水平:主要是银行存款的利息。

为了简化比较,我们现在假设债券的价格只受到其可比较替代投资品,也就是银行定期存款,的收益水平的影响,也就是说债券的价格等于其将来要产生的总收益的现值之和。未来资金的现值由当前的利率决定,比如银行利率为10%,则未来的100美元现值为100/(1+10%)=90.9,因为现在将90.9美元的资金存入银行,一年后就可以获得100美元的收益。

下面是2019年3月22日的美国国库券信息:

  • 交割期限:30年
  • 利息:3%,即每年偿付3%
  • 价格:102.52美元
  • 面值:100美元

在30年时间里一共要偿付90美元利息,最后偿还100美元本金,假设30年间年利率是3%,那么这三十年的实际总收益是多少呢?
Y = 3 + 3/(1 + 3%) + 3/(1+3%)2 + … + 3/(1+3%)29 + 100/(1+3%)29。
用下面的python 代码可以算出30年的总收益为:102.9,也就是说,这个国库券的当前价值为102.9。

par_value = 100
coupon = 3
ytm = 0
interest_rate = 0.03
for x in range(30):
    print("year {}".format(x))
    ytm += coupon/((1+interest_rate)**x)
    print("accumulated yield to this year: {}".format(ytm))
ytm += 100/((1+interest_rate)**29)
print("year to maturity {}".format(ytm))

如前面所说的,国库券可以在二级市场(secondary market)上进行交易,而中央银行可以通过在市场上的回购控制货币量。

贴现窗口

中央银行还可以通过向商业银行贷款来控制货币量。在了解贴现窗口之前我们先了解一下联邦基金市场的相关概念:

  • 联邦基金市场(federal funds market)

法律规定的商业银行必须将一部分的存款留存以降低风险,留存的这部分存款占总存款数量的比例就成为准备金率(reverse ratio)。商业银行的实际准备金可能会低于或者多出的法定的准备金,如果多出一般会将这些钱借出,如果少于法定准备金率,商业银行既可以向其他银行拆借。这些用于满足法定准备金要求的资金市场就称为联邦基金,而这个用于借出和借入的市场就称为联邦基金市场,也称为同业拆借市场。一家银行拆出和拆入的利率差就是这家银行的收益。

  • 联邦基金利率

中央银行一般会维持一定目标的同业拆借利率,也就是联邦基金利率。我们常说的美联储加息就是增加目标联邦基金利率。中央银行一般通过控制对银行持有的证券的购买来控制联邦。通过向银行回购证券,银行的资金储备会增多,因此对联邦基金的需求就会降低,联邦基金利率就会下降,反之则上升。联邦基金利率的增加会增加银行拆借成本,从而抑制银行向市场发放贷款,从而也可以降低市场上的货币量。

  • 贴现窗口和贴现率

除了同业拆借,中央银行还可以直接向商业银行借款。这个机制就成为贴现窗口(discount window),而商业银行从中央银行获得借款的利息就成为贴现率(discount rate)。银行在选择使用哪种资金来源来满足法定储备要求的时候会对各个资金来源进行比较。如果贴现窗口的利率小于商业银行的贷款利率则使用贴现窗口就是有利可图的。但是同时中间还存在交易费用和坏账的风险。

还需要提到的事,中央银行可以通过多重手段来控制市场上的货币量。比如通过贴现窗口发放了5亿美元的贷款到商业银行之后,中央银行可能通过在债券市场上放出5亿美元的债券来抵消对货币总量的影响。

另一个重要的控制手段是通过外汇的买卖来控制货币量。购买更多的外国货币会降低本国货币的存量,而出售外国货币或证券会获得更多的本国货币。这种部分操作与公开市场的操作类似。

超长期经济增长理论:索罗模型

经济为什么会增长?经济增长的差异在不同的国家地区的差异为什么如此之大?经济增长的驱动因素是什么?

首相是关于资本积累的考察。我们先假设人口和技术的因素保持静止。资本的存量重要吗?资本的存量对于产出的规模是重要的,但是对于产出的增长是不重要的。资本积累的增加与产出的增加是相关的,但是其回报是逐步下降的。比如当人均资本已经很高的时候,资本增加带来的回报将会相对较低。同时,现存资本包含折旧成本,当资本增加率和折旧率达到平衡的时候,经济将到达稳定状态。因此我们可以看到,资本的积累并不是能够维持长期经济增长的原因。

与资本的积累相关,不同国家居民的储蓄率以及财政政策也是经常被讨论的问题。以中国和美国为例,2016年中国居民的储蓄率为46%,全球平均水平为25%,而美国的储蓄率为2.5%。与此同时,2019年美国的财政赤字为9860亿美元。储蓄率,财政赤字和经济增长率有何相关性呢?较高的储蓄率意味着较高的投资水平,而较高的财政赤字将会降低居民储蓄率(较高的财政赤字说明居民收入分配中用于政府支出的部分增加,居民收入部分降低)。因此,因此较低的储蓄率和较高的财政赤字会降低经济增长的水平。

其次我们考察人口增长。注意,前面的分析都是建立在人均资本存量的模型之上的。而人口增长必然会降低人均资本存量。这种稀释效应和资本的折旧一起,将会部分抵消资本存量的增加,在稳定状态,这三者将会相互抵消。因此,在稳定状态下,投资的目的就变成了抵消资本的折旧和为新工人提供稳定状态的资本量。人口增长率的不同也部分解释了不同国家经济增长率的差异:过快的人口增长降低了人均资本存量。

经济增长的另一个驱动因素是技术进步。为了衡量技术的因此,我们在索罗模型中引入了劳动效率的概念,劳动效率和劳动力水平决定了劳动的实际产出,技术进步、经验增加都会提高劳动效率。引入了劳动效率之后的稳定状态在哪里呢?劳动效率的升高提高了有效产出,等效的,也可以认为是增加了有效工人的数量。而稳定状态就在于,新增加的有效工人的人均资本和有效产出保持不变。而技术进步的会持续带来有效工人的增加,也就是实际人均产出的增加,从而带来经济的进步。

在马克思主义的经济理论中有一个重要的推论:资本主义的经济增长将会由于随着收益的下降而放缓,从而导致金融危机,进一步的危及资本主义的政治。很明显,马克思未能注意到技术进步对经济增长的贡献。

到此为止,我们已经了解了索罗模型的基本理论。但是这当中仍然有一个问题没有解决:技术的进步是从何而来的?在索罗模型中,我们假设技术进步是外生的变量,这种假设不能解释为什么许多国家的技术进步速度明显不同。为了解释技术进步,我们引入了内生增长模型。内生模型的基本思想史引入了制造业企业和研究型大学来量化知识的增长,从而解释技术的进步。

实际利率和购买力平价

如何理解名义汇率和实际汇率的差别呢?所谓实际汇率就是两国之间产品的相对价格,比如同样的麦当劳Big Mac汉堡单点,在美国是3.99美元(非meal价格),而在中国是17元人民币,按当前6.71的中美汇率也就是2.53美元。那么一个美国汉堡可以在中国购买1.57个汉堡,就是关于汉堡的中美实际汇率。流行的Big Mac指数就是用于衡量不同国家实际汇率的一种手段。名义汇率不难理解,就是美元货币对中国货币的汇率。

衡量实际汇率有什么意义呢?最直观的一点是,实际汇率是同类的物品在不同国家的价格差异,价格差异就会带来盈利的机会。比如,如果我们把中国制作的汉堡运到美国,出去运输成本之后,仍然有盈利的可能。而这也正是国际贸易的基石之一。同样品质的汽车,如果存在实际汇率的差异,那么消费者就就会更多购买价格更低的产品。比如,如果国际产品比同类国内产品还便宜,那么消费者就会更多的购买进口产品。进一步的,由于对进口的需求增加,贸易余额就会减少。

从上面的分析我们也可以看出,实际汇率和净出口之间是存在关联关系的。实际汇率低意味着国内产品便宜,因此对进口的需求降低,净出口相对增加,反过来,实际汇率增加会导致国内产品变得更加昂贵,因此对进口的需求增加,净出口也相对减少了。

净出口等于用于购买国外产品的资金,也就是资本的净流出,而这些流出的资本又来自于储蓄减去投资之后的部分。而储蓄和投资都不取决于直接汇率,因此可以认为是相对不变的。在他们交汇的地方就是均衡的实际汇率。

  • 购买力平价的问题

在上面我们已经讨论过了,实际汇率的差异会带来盈利的机会:实际汇率的差异越大,盈利的空间就越大。那为什么没有发生实际的频繁套利呢?因为套利的前提是产品和资金的移动,这其中涉及到许多成本,在盈利空间不够覆盖这些成本的时候,套利是不存在的。但反过来说,一旦实际利率空间达到足够覆盖转移成本,套利行为就有利可图了。反过来也因此可以认为,实际汇率是区域稳定的,因为任何套利实际上都会通过改变双方市场供求关系的方式改变物品的实际价格。比如如果把中国的汉堡运往美国有利可图,中国的汉堡价格将会上升,美国的汉堡价格将会下降,从而使实际利率再次达到均衡。购买力平价的理论实际上是再说,因为你套利的可能,同样的物品在各个市场上市等价的。当然我们知道,这种假设是有很多不足之处的。

关于购买力平价的另一种误解是错误的使用了比较对象。比如经常有人拿不同国家的工资水平相比较,比如假设在美国工作的程序员年薪为25W美元,那么经常有人认为他是中国收入为185W人民币的人的行列,属于超高薪水的一类。评估他人收入水准进而判断其社会地位是不可避免的事情,在需要跨越文化进行比较大的时候,这种使用名义汇率进行的转换时非常常见的。但这种比较实际上是错误的,一则社会地位必须放在所处的社会进行比较,生活水平的跨经济体比较是可能的,但是并不具备社会地位的参考价值。第二是因为这种比较使用了名义汇率,而忽略了其实购买能力的比较应该建立在实际汇率之上。比如在中国要购买双层联排别墅所需要的价格和在美国需要的价格相比较,只能告诉我们在中国住上类似大别墅的成本如何,并不能说明我在美国享有的社会地位和在中国住联排别墅的人的社会地位相仿。但是基于实际汇率的比较可以使我们比较清楚的知道,要保持相应的生活水平需要付出的大家有多大。

经济学的学习

经济学如同社会学一样,都为我们提供了很多把握现实的基础观点。这些观点是我们理解现实的切入点。比如自由派的经济学认为,政府完全不应当干预市场,因为这只会带来无效。比如租金控制的政策导致房东可以获得的收益少于最优收益,这种差值会降低现有房东维护房屋和新房东将房屋投入租房市场的动力,最终既降低了房客的生活质量也减少了市场上可租房屋的数量,最后同时损害房东和房客两方面的利益。

但是需要注意,这些基础观点只是切入点,而非问题的终点:这些理论多数并不能完全解释实现,也不能直接指导我们获得更好的生活。在一个日益复杂的社会当中,所有问题最终都会转化为细分的专业领域,仅仅理解基础概念和理解这些领域之间和有很深的距离。那么为什还要学些他们呢?在我看来,学习这些理论的意义乃在于,我们仍有机会将他们与不同领域的理论结合来获得对现实的更好的理解和对生活的指导。

大部分时候,我们在所处职业上的努力会转化为社会地位的提升和经济状况的好转,而他们通常并不直接指导于我们职业以外的生活,也并不帮助我们理解职业以外的世界。比如计算机的学习当然对于理解信息社会是有帮助的,但是在这个领域之外,帮助就并不明显了。经济和社会理论的学习正式为了填补这样的空缺。这篇文章是我对于学习经济学的阶段性总结和反思。我希望通过这种方式来修正学习的过程。

如同其他科学一样,经济学的研究也是建立在模型之上的,研究的深入也必然伴随着对模型的不断改进。这种改进体现在不断引入新的因素,同时对不同因素的作用关系进行调整之上。随着模型变得更加复杂,对于研究者数学能力的要求也在不算加深;而由于研究的问题和对象的逐渐深入,其所探讨的内容也将逐渐超出一般生活经验的范畴。对于并不从事专业领域的工作,或者工作中并不需要专业级别经济学知识的人来说,如何选择学习的方向和程度是一个需要考虑的问题。

在我看来,对于经济学的学习需要把握这些要点:

  • 重视模型的假设,同时注意到模型中与现实不完全相符合的地方。

比如新古典经济学中对于国民收入的研究首先建立在一个封闭的经济体之上。这种经济体中包含三大主题:政府,家庭,和企业。但是我们知道,现实当中,政府并不是货币的直接入口,银行才是可贷资金市场的主要影响力量。另一方面,我们认为企业的生产完全取决于劳动力和资本,但现实中我们知道,企业的生产技术,包括税收政策都会对企业的生产能力产生影响。同时,现实中也没有完全的封闭经济体,绝大多数经济体都是和其他经济体发生直接贸易往来的。

  • 重视论证过程

同样以国民收入的研究为例。在论证的过程中,我们首先假设了企业将劳动力和生产要素转化为产品和服务的过程,进一步的,我们发现当劳动力和资本的编辑产量等于工资和租赁价格的时候,企业的产出就达到了最大化的过程。在这种情况下,如何确定经济收入在生产要素之间的分配呢?于是我们引入了市场充分竞争的假设,于是我们知道工人的实际工资等于劳动力的边际产量值,资本的回报等于资本的边际产量值。对于论证过程的理解将更好的帮助我们了解经济学的思考方式。

  • 和实际生活结合起来

要多思考所学到的经济学知识对于理解实际问题有何帮助。经济学的一个重要方面是对政府的经济政策提供指导,而很多政策背后实际上都可以找到经济学的原理。对于大多数而言,影响经济政策是一个相对遥远的目标,但是了解经济政策对于我们自身生活的影响却是可以得到理解的。

  • 细分领域和交叉领域

如同在本文开头所说的,基础的经济理论是我们深入理解社会的起点,而细分领域和交叉领域则是进一步扩展的台阶。比如,人口理论可以很好地和经济原理相结合,帮助我们更好的了解不同生育率国家所面对的问题。

最后,经济学的学习归根到底是为了让我们更好的理解现实,不要刻意追求理论的大而全面,对于一个理论的深入思考和研究,比获得一个完整的知识图谱是更为值得追求的目标。

国民收入模型和分配理论

国民收入模型是新古典宏观经济学中较为著名的一个模型。国民收入模型旨在讨论在一个经济体当中,经济的收入是如何从 企业向家庭分配的,以及商品和服务的需求与产品和服务的供给之间是如何达到均衡水平的。

首先我们需要了解这个模型中的三大主体:企业,家庭,和政府。其中,家庭得到收入,向政府纳税,并向企业购买产品和服务。企业主要提供产品和服务。政府从税收中得到收入,用其支付政府购买。

在平衡的供给一方是产品的生产和服务。为了对其进行量化,我们引入了生产要素和生产函数的概念。首先假设在这个模型中只存在两个生产要素:

  • 资本:K
  • 劳动力:L

企业将生产要素转化为产品和服务:

  • Y=F(K, L)

同时我们假设生产函数具有规模不变效应,也就是说,生产要素增加Z%会带来产出增加Z%。企业在生产的产品和服务的过程中需要进行支付购买生产要素,这部分资金就进入了家庭当中–生产要素的提供者。那么什么决定了向家庭的收入分配呢?为了解释这个现象,我们引入了要素价格,也就是支付给生产要素的报酬数量,如果假设只存在资本和劳动力两种要素,那么报酬就仅仅包括工人的工资和资本所有者的租金。

那么什么决定了这些要素的价格呢?国民收入模型在这里引入了另一个重要的假设:竞争性企业。在这种假设之下,市场是完全竞争的,企业对于生产要素的价格的影响可以忽略不计。如果我们假定企业用P价格出售产品,用W工资雇佣工人,用R价格租用资本,那么企业的利润就可以用下面的共识表示:

  • Profit = PY – WL – RK = PF(K, L) – WL – RK

我们假设企业的经营目标是是利润最大化。那么利润在何时会达到最大呢?在之前的文章中,我们谈到过边际产量数,也就是企业每多一个单位的投入所带来的单位产出,边际产量是递减的,因此产出也会递减,于是:当边际产量所带来的收入恰好等于边际的生产要素成本的时候,企业便达到了最大利润,继续增加生产则会降低利润。这个定理可以适用于劳动力和资本两种生产要素,用公式表示:

  • PxMPL = W 当劳动力的边际产量至等于工资的时候,企业的产出达到了最大化。
  • PxMPK = R 当资本的边际产量等于资本的租赁价格的时候,企业的产出达到了最大化。

那么生产要素如何决定市场中经济收入的分配呢?当企业在充分竞争的市场运营的时候回答道上述的边际状态,也就是工人的实际工资等于劳动力的边际产量值,资本的回报的等于资本的边际产量值。假设企业在支付了劳动报酬和资本租赁价格之后的盈利是经济利润,那么经济利润等于:

  • Y – MPLxK – MPKxK

而根据规模不变的效应,经营利润等于0,因此Y=MPLxK + MPKxK

现在我们已经知道什么决定了市场中收入的分配,那么什么决定市场中对产品和需求的供应呢?首先我们可以认为GDP分为下面四个部分:

  • 消费(C):假设消费水平直接取决于可支配收入,C=C(Y-T)
  • 投资(I):假设投资量的需求去决定于利率:I=I(r)
  • 政府购买(G):

那么是什么使得消费,投资和政府购买之和等于所生产的产出量呢?这里我们引入可贷资金市场,我们认为可贷资金市场来源于居民储蓄S,那么

  • S= Y – C – G = I

经过变换可以得到:

  • S = (Y – C – T)-(T-G)

其中(Y-C-T)等于收入减去消费,减去税收,等于私人储蓄,T-G等于税收减去政府支出,为公共储蓄。带入前面所得到的投资函数和消费函数可以得到

  • Y – C(Y-T) – G = I(r)

为了使得等式,也就是可贷资金市场达到均衡,利率r将起到调节作用。在给定的T和G之下,储蓄量是不变的,而投资函数是一个向右下倾斜的曲线,因此:

  • 当投资需求大于供给也就是储蓄量的时候,利率将上升,从而降低供给。
  • 当投资需求你小于供给也就是储蓄量的时候,利率将下降,更多资金将进入投资。

我们需要注意,在这个均衡模型中我们进行了诸多假设,比如:我们没有加入货币市场,我们假设这是一个封闭的经济体,我们还假设这个经济体中的就业是充分的,而且资本存量,劳动力和生产技术是固定的。在后续的解释中,我们将通过扩展这些模型来更加准确的了解宏观经济运行。

过于国民收入的一个非常著名的理论来源于马克思主义的劳动价值理论。马克思主义经济学引入了两个主要的理论:劳动价值理论和剩余价值理论。马克思主义认为劳动是创造价值的唯一方式,机器在劳动中将一部分价值转移到了商品当中,但是资本方并没有参与劳动因此也就没有生产价值。马克思主义认为,商品生产中在出去不变成本和可变成本之后的为剩余价值,而这一部分剩余价值应归属劳动者所有。在传统的经济学当中,我们认为这部分的剩余价值是包含企业投资资本的租值的,也就是企业的投资回报。