《致命的自负》:商业的价值

《致命的自负》是哈耶克晚年的最后一本著作。这本书出版于1970年代,主旨是批判社会主义计划经济。最初看到这本书的简介并没有引起我的兴趣,一方面是这种对市场经济的批判在今天已经显得过时,拥抱市场经济似乎是理所当然的选择,另一方面包括我的大多数人都能说出一两点计划经济的弊端:经济决策过程里面信息的不完全、不及时和不对称。我自然而然地想也许在上个世纪苏联尚未解体时候,才需要一整本书来批判计划经济,但我还是决定挑一两章读读看,很快我就发现我把这件事情想得过于简单了。

我挑出来读的是第六章。哈耶克在这一章主要批判社会主义者对于商业、贸易还有货币的错误观念。历史上许多社会贬低商业的价值和商人的地位,他们认为只有通过手工和体力劳动才能创造物品和价值,商人将物品高买低卖是一种剥削他人的行为,更不是一种诚实值得赞美的劳动。这样对于商业的歧视在世界上很多国家都存在,包括中国。这其中既包含了人们观念的愿意,也包含了政治上的需要和意志。这种因为不理解而产生的轻蔑在当代的社会主义者中仍然存在。也因为不理解贸易和商业的过程,所以社会主义者妄想创造一种计划性的制度来解决所有的生产协调和分配问题。

哈耶克认为对于贸易的恐惧和误解的根本原因在于:传统的知识分子对贸易和流通是否创造价值以及价值到底是不是物品的固有属性这两个问题的错误理解。我们通常认为劳动创造价值,对于劳动之外的工作能否产生价值总有疑虑。在贸易的过程里是物品的转移而不是生产。哈耶克在本章论述了这个问题。他想要强调的是,商业和贸易的作用在于传递需求的信息,从而可以使人们调整生产。调节生产的作用就在于它最终促进了社会的分工和专业化,从而使得整个社会的生产得以增加。传递需求信息最好的途径就是自由的价格机制。

社会主义者往往认为价值是物品的结果,是物品的固有属性。所以马克思主义的经济学认为物品的价值是生产过程的劳动赋予的,只要生产出来了就存在了价值。但实际上,物品的价值并不是结果。如果一件东西生产出来了,但是没有人要,这件东西就是没有价值的。物品的价值是因为存在对它的需求,而贸易和商业正是船体这种需求的机制。

这两个观念虽然很简单,但当我在书中读到它们的时候仍然感到一点震惊。我此前从未如此深入地思考过这些问题,这层领悟使我对于价格机制有了更深的理解:通过对错误观念的批判使我们更好地认识正确观念。对市场经济观念的批判也并不是简单的论述一种常识就可以解决的。批判者必须将原来的观念层层剥开,还原和解释造成这些观念的原因,同时要能够有力的论证新的观念。了解了这个过程的艰辛我们才更能够欣赏哈耶克的智慧。

Concurrency Based on Threads, Locks and Shared State

This is the third article discussing the challenges of implementing high concurrent web applications. In the previous two articles, we mainly focused on the challenge for handling concurrent requests and the two design patterns of handling concurrent requests. In this article, we are going to discuss the challenges in designing highly concurrent business logic.

  • I/O Bound VS. CPU Bound

Most of professional developers have developed thread based concurrent applications in the past. If you are a Java developer, it’s likely you’ve used runnable interfaces and executor services, you probably also used future or completable future to handle the results of your forked concurrent threads. But have you ever wonder why we want to design concurrent business logic? The answer is simple: to boost the performance of the applications. There are two types of activities in general: I/O Bound activities and CPU bound activities.

I/O bound activities are tasks that mainly limited by I/O resources, for example network I/O, or database I/O. As we explained in the previous posts, I/O operations is thousands more times slower than CPU operations. Assuming the application logic runs in sequential, while the CPU waits for the I/O operations to finish, the application can’t proceed.

CPU bound activities are tasks that are primarily consume CPU time during executions. Some algorithm can be very complex, while they don’t involve heavy I/O operations, they requires the CPU resources quite intensively. For example, video processing and image processing.

When we deploy our applications in the services, often we get more than one CPU. It’s natural that we want to fully leverage these extra computing powers when we implement CPU heavy applications. A simple way is to divide the task into several subtasks, then schedule the subtasks into different CPUs to have them run concurrently, and finally synchronize the result.

  • Thread Model and Race Conditions

One model to handle the divided tasks is to leverage the thread pool: run the divided tasks in a thread. The thread pool is to limit the number of concurrently running thread, in the mean time, save the overhead of creating new threads. However, this approach caused an inevitable problem: race condition.

Race condition happens when multiple process/thread try to get access to the same resource. Why race conditions happens in thread model? Because threads share states. The thread within the business application is different from the thread based web service handling concurrent requests. These threads are forked by the main thread, and the forked thread often have interaction with the main thread.

One way of handling main thread <> forked threads interaction is through shared variables. For example, the forked threads save the results back into a global variable. And all threads will have access to these variable, hence race condition can happen.

Why race condition is a problem for programming? Because the result of the program becomes indeterministic. As we mentioned above, the control flow of the thread model is largely sequential, when the intermediate state of the thread is changed, the final result is different.

  • Locks and the Risk

How do we prevent race condition? Making sure only one thread have access to the shared state at one time. And one achieving that is to introduce locks. Locks make sure the shared state is locked and only be accessed by one or limited number of threads.

The most common lock implementation is a binary semaphore. The binary semaphore use a shared variable to control the access, and two operation: wait and signal. The two operations are always used together. In the wait operation, it check the status of the lock, if locked keep waiting, otherwise change the lock from unlock to locked so other operations can’t access it. This operation is atomic hence won’t cause race condition. Once the critical operations are finished, it release the lock so other thread can acquire it.

In Java programming, we use synchronized keyword to lock the variable or code block. However, there are risks using locks. On the one hand, using it incorrectly can cause many lock issues say dead lock or lock starvation, on the other hand, when the lock is too granular, it breaks the control flow into small blocking chunks, the overhead of lock checking offset the performance gain from multi threading.

  • Multithreading

While thread based muti-thread programming benefits the CPU bound activities pretty well, it doesn’t scale for I/O bound activities. As discussed in previous articles, in I/O bound activities, I/O is the final bottleneck, having multiple threads accessing the I/O might help in the beginning, as most of the I/O device supports concurrent operations in one way or another, but we reach the concurrent bottleneck, the latency would increase.

Complier Design: Scanner, Parser and Analysis

Compiler is the translator between human readable high level language and the computer readable low level languages, it translate the a program from a source language into a target language. Why do we need compiler? Because for human beings, programming in a machine language, such as assembly is highly inefficient and time consuming.

Different compiler does the translation differently, for example, Java complier compile Java into a JVM byte code that stored in the class file, while a C compiler compile C language into an executable file. However, they all follow similar process and are designed based on the similar principles. Understanding how compiler works is an important steps for us to understand how programming languages are design, and how are they compiled into executable code.

A compiler usually has three major components: a front-end component, a middle component, and of course, a back-end component. We will start from the front-end component, which mainly including the scanner, the parser, and the semantic analysis modules.

  • Scanner

A scanner is also called a tokenizer. As indicated by the name, it reads the source file and generates the tex into a stream of known objects, called token. And the token will be send to the Parser for parsing. There are different elements on the coding text, say variables, operators, operands, strings, the lexical analysis is to identify their types.

In the lexical analysis, the parser reads one character at a time, remove the white space and comments from the text, then form the <token-type, value> tuple. For example, <type: Operator, value: +>, <type: Var, value: numberOfDays>. In this phase, parser will check whether the token is legal string. The definition of legal string is usually based on regular expression, which we will discuss in the future.

  • Parser

A parser translates the code to rules of grammar, it build the representation of the code. The following is a simple set of grammar rules:

expression = atom   | list
atom       = number | symbol    
number     = [+-]?['0'-'9']+
symbol     = ['A'-'Z']['A'-'Z''0'-'9'].*
list       = '(', expression*, ')'

When the parser receives the token stream from the scanner, it tries to match the token with the rules on the grammar set. If it is a number, then checking if the number is valid, if it is an expression, checking whether it is an atom expression or a list expression. The low level grammars can be combined and composed into high level grammars.

  • Syntax and Semantic Analysis

The parser will do two types of analysis: syntax analysis, semantic analysis. The difference is subtle: the syntax analysis checks whether or not the sentence is valid, while while semantic refers to the meaning of the sentence. For example:

int x;
print("%d", x)

This example is syntax valid, but semantic invalid. In semantic check, the parser understands the semantic by triggering a set of semantic actions. For example, compiler will maintain a symbol tables to track the scope and status of the variable. When the parser first see the variable, it enter the values and scope into symbol table, when it sees the variable in use, it will check if it has been defined and in the correct scope, otherwise it will throw error. The variable saving and checking is one of a semantic actions. There are more of such actions.

税务基础:Itemized Deduction

获得调整后收入(Adjusted Gross Income)之后,还需要扣除税收减免才会获得应纳税收入(Taxable Income)。报税时候最主要的工作就是计算各种税收减免,比如总收入10万,扣除各项减免之后应纳税收入可能只有不到8万美元。这篇文章主要如何税收减免中的一些重要项目。

  • 标准减免还是单项减免

计算减免额有两种办法,标准减免(Standard Deduction)和单项减免(Itemized Deduction)。注意不要把这项减免和另一项个人免税额(Examption),个人免税额几乎适用于所有人,而标准和单项减免都需要按照个人情况计算。IRS为每人提供一个标准的免税额度,比如在2020年单身标准免税额是$12400。实际报税的时候我们一般会比较标准减免和单项减免的数额,选择对我们更有利也就是减免额度更大的方式。单项减免一般需要填写各种附加表格,用来说明单项的具体细节,大部分的软件都提供这样的支持。

  • Medical and Dental Expenses

获得这一项减免的条件是你的医疗费用超过你的AGI的10%,一般只有收入非常低或者重病患者才有此项抵扣。IRS对于那些医疗费用可以抵扣有比较明确的规定,请参照IRS的页面。对于重病患者或者有长期疾病的患者可以考虑另外两个帮助减免医疗费用的项目FSA和HSA。

  • State & Local Tax

除了联邦税,美国的州和地方都有单独的税收项目,比如消费税(sales tax)和房产税(property tax),还有一些不大引人注意的汽油税、车检税、牌照费等等。在发工资的时候已经提前扣除了一些州税和地方税,比如州的个人所得税。注意社保税和医保税都是联邦税,是作为联邦税抵扣的。另外你为前一年补交的州和地方税也是可以用于抵扣,当然不包括罚款和利息。

两年前作为税收Credit的退税金额也可以用来抵扣。这里需要解释一下,假设我们为去年报税,而两年前的收入已经交过税,因此退税的部分尽管是去年才收到的,但是两年前的收入,不应当计入去年。

最重要的项目大概是房产税,注意,从2019年开始,州税的可抵扣金额降到了$10K,更多的细节请参照这篇文章。对于加州而言,很多人的房产税加上州税等项目远高于$10K。如果你观察你的报税表State&Local Tax的部分,最终决定抵扣额度的时候会在这些累计计算额度和$10K之间取较小的一项。

  • Interest

如果你有房贷(morgate)或者学生贷款(student loan),那么你每月和每年支付的还款当中有相当大一部分实际上是付给银行的利息,而这些利息的一部分是在报税的时候可以免税。但是利息的免税额度是有限制的。

比如从2019年开始,房贷的的利息贷款只能计算$750K贷款以下的部分。比如你有$1000K的贷款,但只有$750K的贷款所产生的利息可以用于抵扣,$750K以上的贷款所产生的利息不能用于抵扣,当然在2018年之前的贷款抵扣额度仍然是$1M。对于加州、纽约等高房价地方的同学来说,房贷超过750K是很常见的时,另外通常大家每隔若干年会重新做贷款,因此能够享受到$1M抵扣额的同学越来越少。

如果我有多套房子怎么办?一般来说,第一套和第二套自住房的利息是可以用于抵扣的,超过第二套房子的贷款利息不能用于抵扣。投资房(investment property)的贷款利息也不能用于抵扣的。但是加州的房价一套房子的贷款可能就用完了全部额度,不用说两套房产了。

  • Gifts & Charity

你向慈善和公益组织的捐款可以用于抵税。至于慈善和公益组织的定义比较广泛,包括各种宗教、慈善、教育和科研的结构,以及各种儿童和动物保护组织。注意,政治捐款是不能用来抵税的。慈善抵税的额度不是没有上限的,你可以抵扣AGI的60%。如果你当年没有用完慈善项目的抵扣额度,你有五年时间可以使用这些额度。

其他的抵扣项目包括Casualty & Theft Loses,可以用于抵扣的意外包括比如飓风,火灾等。要使用这一项抵扣,你的损失必须超过AGI的10%。赌博输掉的钱也可以部分抵扣。在此不一一列举。

税务基础:基本概念

介绍税务知识的文章往往细节过多,繁琐难懂。为了避免这种情况,这个系列的文章会介绍税务体系中最重要的概念,同时避免引入过多技术细节。这些文章知识为了让我们对税务问题有更清晰的图景,至于专业的报税和税务规划问题还是要请有经验的CPA。

  • 累进税制

美国采用的是累进制税率(Progressive Tax),美国国税局(Internal Revenue Service)用档位(brackets)的概念来对收入分段,在不同档位的收入对应的税率不同。比如根据2020年代的税法修订,联邦个人所得税一共分为七个档,0-$9700美元,税率10%,$9,701- $39,475 美元,税率12%,依次升高,在$510,301以上,税率是37%。

  • 边际和平均税率

累进制税率就会涉及到两个概念:边际税率和平均税率。边际税率(marginal tax rate)是说,假如你今年多挣了亿美元,这一美元应该落在哪个税率档位,应该交多少税。累进制税率的特点就在于,就算我们想办法降低了我们的边际税率,我们也只是减少了边际那部分收入应该交的税,因为基座的税率没有变化,因此那一部分收入少交税。平均税率(average tax rate)有时候也称为有效税率(effective tax rate),其含义就是我们最后交的总税额度占我们总收入的比重。

  • 税收预扣

按照这样的算法,我们的平均税率应该是远小于37%,但对硅谷在硅谷工作的年轻人来说,我们往往发现工资的将近40%都被预扣(withholding)了,为什么扣这么多税?问题在于,上面介绍的37%税率只是联邦个人所得税,我们还有其他很多的税收要交,这是我们常见的第一个误区。

  • 要交哪些税

要了解我们叫了哪些税,只需要看一下我们的工资单(paycheck)和W2表格就行。一般来说,我们的工资单上预扣的部分包括税收(Taxes),福利(Benefits)和其他三块。在税收预扣这一项当中,又包含了联邦个人所得税,州个人所得税,社会保险税,医疗保险税这几个主要部分。这些税加载一起就导致我们40%左右的工资被预扣了。

除此之外,在公司给我们发放RSU的时候,也会强制出售40%左右的RSU用于交税,这是因为这部分的RSU是作为收入算入我们的W2当中的,因此需要按照类似的比例预扣。

  • 实际税率

我们的实际税率(effective tax rate)一般是低于上面提到的40%的税率的,主要是因为我们在计算实际税收的时候需要对收入进行调整(adjusted gross income),然后出去减免(deduction)的项目,最后才得到可税收入(taxable income)。而实际税率是针对可税收入计算的。如果请CPA报税有时候他们会把有效税率在最后单列出来跟前一年比较,建议你看一看自己历年的实际税率。

  • 税收计算公式

具体应该如何计算税收呢?基本可以认为是下面这个过程:

收入 – 抵扣或者调整项目 = 调整后收入 – max(标准抵扣,单相抵扣) = 可税收入

可税收入 X 税率 = 应缴税款 – 税收分数 = 实际税款

将实际税款和已经交过的税款比较就可以知道自己应该补交还是应该退税了。

期权税务研究三

  • ISO的AMT税

AMT(Alternative Minimal Tax)税设置的初衷是为了防止高收入的人群利用各种税收抵扣(deductions)避税。正常收入税计算是会有各种项目用以抵扣税率,最后计税基于抵扣后的部分(Adjusted Gross Income)进行的,AMT税计算的基本方法是在AGI之后将一系列的可抵扣税项目加回来,称为preferred items。这些加回来的项目当中就包含了ISO spread部分的收入税。最后决定缴税额的时候需要比较用正常收入税和AMT税计算得到的交税量的差异,交其中较高的部分。

对于Option升值较大的人群,仅仅计算spread就可能带来大量的AMT税。另外需要注意的事,AMT最大的风险在于,及时你的股票未来已经跌倒了你行权是的价格一下,你仍然要按照行权的价格附税。比如Strike Price是$10,Exercise的价格是$20,但是持有一年之后价格跌倒了$15,但你仍然需要按照每股$10的spread收益支付AMT税,尽管你在未来有机会试用AMT的credit将这部分钱拿回来。

AMT税的免税额(examption)对单身人士是$72K,对于已婚合并报税是$113K。AMT的税基中排除了各种常规的税务抵扣项目,包括房产税,房贷的利息等。AMT的计算方法较为简单,在AMT以下的部分按照26%的税率报税,在以上按照28%的税率报税。AMT税率当中还有一个Phase Out的区间,当超过这个区间之后实际税率可以高达35%,这个phase out的设置是为了防止高收入的人群利用AMT的起征额度,一般来说当单身收入超过500K的时候剩余部分就会进入phase out的区间。

  • AMT税的credit

AMT的credit可以用在未来收入较低的年份来抵扣自己的税额。比如在2020年交完AMT之后,如果2021年你没有达到AMT的税率,也就是说你的正常收入税低于你的AMT税,那么你可以用2020年的的AMT税额度作为抵扣额度。比如2020年你因为AMT多交了20K的税,那么2020年你就可以使用20K的抵税额度。

  • ISO的行权策略

最佳的行权策略必去考虑如何平衡行权的资金、税收和长期持有的风险。为了平衡资金和税务风险,一个策略是在IPO之后卖掉一部分的股票,然后产生足够支付行权费用和AMT税的陷进,将剩下的期权行权之后等到时间足够再卖出以获得税收优惠。这仅仅适用于ISO股票,对于NSO股票和RSU并不适用。

为了长期持有的时间风险,一个策略是在年初的时候卖出ISO,然后再未来的一年中密切观察股票的走向。在同一年之内如果卖出股票则不需要支付AMT税。如果在同一年之内股票价格低于行权时候的股价,则可以再年终的时候将股票卖出,因为如果继续持有则需要按照行权时候的价格支付AMT税,非常不划算。卖出之后只需要按照卖出价格和行权价格之间的差价支付收入税即可。而如果年底的时候股票价格高于行权时候的价格,可以通过计算从当前价格到行权时候的股价之间的税率差异来决定是否需要持有更长时间。而因为你已经在年初的时候行权,再多持有一段时间以到达一年时间点的成本并不大。

  • 如何利用AMT的credit

注意,AMT的credit只有在收入没有到达AMT水平的年份才可以用,如果你同时持有很多的NSO,你大可以在同一年分卖出NSO,然后再第二年避免使自己的收入到达AMT水平,从而可以使用这一年积累下来的AMT credit。

期权税务研究二

这一期我们讨论如何计算期权的收入,以及不同部分收入如何计税。

  • 期权的收入

期权是有成本的(strike price)也是有价格的。其价格在私有公司是按照FMV计算,在上市公司是按照股价计算。考虑是否购买期权的时候我们会把行权价格和当前的价格笔记,如果当前价格等于或者低于我们的行权价格,那么行权就没有任何意义。如果当前价格高于我们的行权价格的时候,这中间的差距就叫做spread,这一部分将会被按照正常收入计税(ordinary income tax)。购买期权之后你不一定会马上出售,从行权到出售之间的市场价格差是资本利得(Capital Gains),这一部分会按照资本利得计税。

  • NSO的税务政策

NSO的税务政策比较固定。在行权的时候spread的部分必须按照正常收入交税,不管此事你是否已经出售。因为这一部分会被作为补偿性收入(compensation income)计入到你的总收入当中,并出现在你当年的w2当中。注意,在NSO行权的时候,公司一般会强行出售一部分的NSO以帮助你交税,但出售的额度往往达不到实际税率,第二年报税的时候往往需要补交。

从行权到出售之间的利得按照是否持有满一年交长期或者短期的资本利得税。资本利得计税的时候最需要注意的成本的计算。NSO的成本是行权价格加上补偿性收入以及各种券商收取的费用。NSO的最佳行权策略是在FMV靠近strike price的时候行权,以避免缴纳收入税。同时,可以持有NSO超过一年以获得长期资本利得税的优惠税率。

  • ISO的税务政策

ISO和NSO之间最大的区别在于,ISO在行权的时候可以不用交收入税。等到你出售的时候,出售价格到行权价格之间的价格差按照资本利得计税。ISO税收政策的优惠在于,如果满足一定条件,这部分收入可以按照长期资本利得交税,其税率一般为15% ~ 20%,远低于收入税的边际税率。那么满足什么条件才能获得这一税收优惠?ISO收入要计入长期收入所得税要满足两个条件:从出售到行权之间必须间隔一年,从出售到公司授权(grant)之间必须间隔两年时间。

持有时间增长可能带来风险显著增加,行权时付出了成本但是要等一年才能出售,在这一年里公司的股价走向和放很难预料,有很多公司的股价甚至跌倒了行权价格之下。如果在一年之内出售则需要按照短期的资本利得计税,边际税率可能高达35%,失去了相对于正常收入的税收优惠。

ISO最大的风险在于其行权的时候可能会触发AMT税。ISO在行权的时候是没有实际经济收入的,因此不计入正常收入税,但是AMT税当中包含了这一部分,就算你此时没有出售,你的spread部分也必须按照AMT税率交税。AMT税带来了一个显著的风险:如果你想要长久持有ISO,必须在获得任何收益之前交AMT的税。虽然从理论上AMT可以作为税收的credit返还,但其中仍然存在很大风险,这一部分我们留待下篇展开说明。

ISO的最佳行权策略是在spread小的时候行权以避免出发AMT或者减少AMT的税基。一般可以选择在获得期权之后在FMV增长过多之前行权。但提早行权的风险在于,在企业发展早期我们很难预料未来的股票会值多少钱,自掏腰包购买早期期权的风险很大。对于估值过快增长的企业,这一选项也不实际,因为FMV的过跨增长导致spread部分太大,AMT税的税金过高,对许多人来说这可能带来非常大的现金流压力。

期权税务研究一

硅谷很多早期公式提供期权(Option)作为激励。期权和另一种常见的激励:限制性股票(RSU)有相似之处,但是期权的相关税务问题要复杂得多。一般来说涉及到期权的报税和税务规划需要请CPA处理,但是了解一些期权税务的基础知识对我们做出合理判断非常有帮助。这篇文章先介绍一下期权税务相关的基本问题,一些专门问题,比如AMT税务留待之后的章节再讲。

  • 期权的生命周期

期权和限制性股票的最大不同在于,期权的生命周期(lifecycle)中有三个重要的节点:vesting,exercise和trade。Vesting就是公司按照计划(vesting schedule)给你发放option,一般来说vesting schedule是四年制,其中第一年的部分等一年期满之后发放(one year cliff),后面按照月度或者季度发放。和其他的股权激励一样,离职的时候剩余的还没有vesting的部分自动作废。

行权(exercise)就是你出钱购买期权的使用权,即你可以使用这个期权购买股票了。行权一般是按照strike price的价格,有时候称为exercise price。交易(trade)就是你将行权后的期权在市场上交易,一般只能在公司可以公众交易的时候才能进展到这一步,比如发生IPO或者收购等事件(liduidity event)。

  • 期权的成本和收益

期权的成本(cost basis)和收益(gain)部分也与普通股票大为不同。第一个重要概念是strike price,也就是你在被授予期权的时候被赋予的可以用来购买股票的价格,通常也称为行权价格(exercise price)。第二个重要概念是FMV(Fair Market Value)。一般是在公司尚未上市的时候董事会投票通过的公司的股价估值,也通常称为409A估值,企业进入公开市场交易之后其FMV就是公开市场的股票价格。这些不同价格对于我们期权的成本和收益以及确定如何交税极为重要,但因为期权的三大事件中的后两个在我们的控制中,配合期权可交易性和价格变化可能带来多种组合,后面我会详细介绍。

  • 期权的种类

按照税务政策的不同,期权分为NSO(non-qualified stock options)和ISO(Incentive stock options)两种。其中ISO的税收政策较为优惠,主要差别在于NSO的所得直接计入收入,而ISO的可以算作资本所得(Capital Gain)。对于高收入的群体,长期资本所得税的税率比收入税要优惠得多。

但是公司每年可以发放的ISO的数量是有限的,上限是$100K。计算方法是用100K除以你的期权批准(grant)时候的FMV(fair market value),主义是grant当时的FMV而不是vest给你的时候的FMV,前者一般接近于Option的行权价格(exercise price)。

我们只能用自己的方式获得幸福

这几年我一直在观察和思考我身边的人获得幸福的方式。有些人很勇敢,他们在很短时间里就走进了爱情和婚姻,似乎不需要为选择人生伴侣这件事情花费过多的心力。有些人很坚定,他们按照自己认定的方式去生活,不需要顾及他人的眼光和评价。有些人很简单,他们没有太多探索精神世界的欲望,把生活本身料理好就足够让他们快乐。

这些人像是坐标一样,让我常常忍不住感叹,为什么自己不可以像他们那样勇敢,坚定,简单的快乐着?我一直是一个敏感而细腻的人,我独立并且试图不依靠任何人,我对世界运行原理的兴趣要远远高于我对物质生活的兴趣。但这些特质有些时候会产生许多负作用。敏感让我过于在意他人的眼光,独立有时候使我不知道该如何依赖他人,也不知道如何让他人依赖自己,好奇心则使我在探索中消耗大量精力而在找不到答案的事实面前深感沮丧。

我因此常常会讨厌这些特点。我时常想,如果没有这样的特点,我是不是也可以像他们一样幸福快乐呢?比如为什么我需要花这么多精力阅读经济、社会和人文知识,为什么不用这些时间去看剧看综艺,不是会更快乐吗?为什么在你许多事情上患得患失踌躇不前?如果努力跨出去是不是也可以找到一条幸福的路?

但我最近忽然觉得,一直否定那些最根本的需要才是获得幸福和宁静的第一重阻碍。我一直说要接纳自己,但什么是接纳自己?我现在想,接纳自己最本质上要能够认清自己,尤其是认清自己跟他人不一样的地方,比如我是很敏感的性格会在意他人的看法,没有办法做到那么宠辱不惊。但更重要的是尊重自己与他人的不同,所谓尊重是将自己的特质和他人的特质放在同样的水平上评价,而不试图作高下之分。

我们看到许多人获得快乐,于是推断他们的性格特点使他们获得了这种快乐,于是就有了分别心,有了高下好坏之别。我们会试图回避和改变那些我们认为阻碍了我们获得快乐的特质。这就好像父母在对孩子说,你能不能像其他小朋友一样坚强一点,不要总是哭哭啼啼。我们在对别人或对自己说这些话的隐含的意思即是这些特质没有其他的更好。

当然,从客观上说,不同的特质带来的人生结果是完全不同的,坚强而勤奋的孩子通常比软弱而懒散的孩子取得更大的成就,但真正的困难在于,我们的幸福程度并不能被这些客观标准衡量。而这样的心态的问题在于,如果我们不能首先接纳和爱自己,我们如何获得幸福和快乐?又如何去爱另一个人?

我们走入亲密关系大多数是因为欣赏对方的优点,可是没有人是完美的,对方的缺点也迟早会成为关系的一部分。我们常常说要在关系当中要包容,但包容这个词的潜在含义就是认为对方的差异性是不好的,我们需要站像大人一样去忍耐。可是如果不怀着平等的心态去认识和尊重对方的所有性格特质,这些所谓的包容和忍让难道不会最红伤害我们吗?

我们只能用自己的方式获得幸福和快乐。别人获得幸福的方式方然值得欣赏,可是我们无法将哪种方式移植到自己身上。我们能够否定自己内心的敏感而从此变成一个简单快乐的的人吗?我们能够务实内心对于知识的热情而只将时间花在娱乐上吗?我们是与他人彻底不同的个体,而我们没有获得幸福,多数时候是因为我们不懂如何照顾自己身上的不同,甚至否认自己身上的不同。当我们认识到自己的不同,尊重自己的不同,甚至开始照顾自己的不同的时候,才是获得幸福的第一步。

银行是怎么给房子估值的?

在批准贷款之前,银行会请第三方机构对房屋进行估值(appraisal),并以此作为提供贷款和利率的重要根据。那么估值公司是如何对房屋进行估值的呢?我们从中又能学到什么?并且应该注意什么?

地产估值公司一般有两种方式对房子进行估值:销售对比方式(sales comparison approach)和成本方式(cost approach)。对第一种方式,估值公司首先会收集房子的信息,大致包括以下几类:

  • 总体信息:房屋户型,层数,建造风格,建造和使用年限。
  • 基础:房屋地基的类型,制冷和制热系统类型。
  • 家用电器:冰箱,微博咯,洗碗机,烘干机等。
  • 房型信息:总面积,居住面积,总房间数,卧室数量和卫生间数量。

有了这些信息之后,估值公司会选择4 ~ 6个附近最近成交的房子作为估值的基础,估算出房子的价值。主义估值公司一般会选择同一个学区内的房子,因此学区的附加价值不会体现在报告中。下面是我从估值报告中抽取出来的影响估值的主要因素:

  • 每坪售价:参照房屋的均价,销售价格/居住面积,注意不是总面积,根据这个价格可以算出你房子的基准价格。
  • 所处位置:比如是否靠近高速公路。根据靠近程度差异,远离高速的房子比靠近高速的房子多出2% ~ 4%的估值。以我所在区域为例,这个差异可以达到$3W ~ $4W。
  • 总面积:地块(site)的总面积,总面积越大越值钱,在我所在的区域,每坪的价格差异在$15左右。
  • 使用年限:房子实际使用的时间。房子越新越值钱,在我所在区域,每差一年估值差异$500。
  • 房间数量:卧室和卫生间越多越值钱,在我所在的区域,平均每个房间可以多贡献出$5K~$2W的差值。
  • 居住面积:居住面积是最主要的调整因素,类似的户型居住面积越大月之前,根据居住面积差异和每坪售价可以算出这部分的调整价格。
  • 是否翻新:翻新之后的房屋更值钱,在我所在的区域,根据翻新程度不同价格差异可以达到$4W ~ $8W。
  • 其他:比如制冷制热系统,银行给出的估值差异在$5K左右,还有壁垒的估值差异也在$5K。

根据上面这些因素调整之后就可以估算出你房子的估值。一般来说这个估值低于市场价格,因为它基于最近几个月完成的交易,略微滞后于市场。这也是每个购房者需要注意的事情:银行对你新买的房子的估值很可能低于你的成交价,如果你只按照成交价格准备首付很可能发现不够用,因为银行没法贷给你那么多钱。

从银行估算房屋价值的方法我们可以得出什么启发?最重要的事直观地认知到影响估值的因数,户型,位置,居住面积,房间数量等都是最重要的因素,给房子重新装修之后在市场上会受到加倍回报。当然,这份报告里面不包含另外两个重要方面:学区的附加价值,以及未来升值的潜力预期,这个等以后有机会再单独研究。

使用这种方法的时候要注意什么?研究了三分来自不同银行的估值报告之后我发现这种方法的变量非常多,不同公司估算出的结果大不相同。比如房屋的大小、卧室和卫生间的数量无法改变,但是房间总数量的计算似乎没有明确标准。三份报告有三个不同的结论,而房间数是选取比较房型的基准,一般来说房间越多均价越高,把房子同7个房间的房子比较和同5个房间的房子比较会得出非常不同的估值。

估值公司还会根据总成本来估算你的房价。估值公司会基于居住面积和建造成本计算重新成本(replacement cost),再加上地块的成本和贬值就得出总成本,这种方法类似于保险公司估算财务理赔价值时的做法。但我发现这种方法的变动更大,比如对地块总价的估值可以有40%的差异,对于重新建造房屋的每坪成本也可以达到30%以上。虽然差异极大,但估值公司都能根据这个方法得出一个和第一种方法类似的估值,我怀疑他们是在自己胡乱凑数字。不过也许他们自己也对这种方法的粗糙心知肚明,最终估值报告所采用的是根据第一种方式算出的估值。