在Google工作半年多的一些感想

算是一些要对自己说,让自己记住的话和人生经验吧。如果碰巧能启发到其他人,那就太好了。

每个时刻都应该知道自己该干什么,并有效执行

恰逢前阵子TI6护国神翼夺冠,看到知乎上有人回答,在dota界极少有整场都知道自己该干什么并贯彻执行的。而神翼是5个人都很清楚要干什么。就像大酒神伍声视频里总是强调,打dota路人就是要每时每刻想着单位时间里收益最大的动作是什么。在为梦想拼搏的时候,也是如此。生活可以过得写意一些,但至少工作时间里,需要做到这一点。曾经有人说我目的性太强。但正是这样,才让我走到今日。恰恰相反,我不是目的性太强,而是还不够强,因为我觉得自己还没有达到这种境界。

每次只干一件事

专注非常有好处,这可能分人。就我自己而言,即使面对multi-tasking的情形,事情也是要一件一件来处理,把所有东西都打开对我自身效率的提升毫无用处。我想如何处理multi-tasking,CPU调度方式已经给了我们答案。Round-robin scheduling + priority。

生活节奏不能乱

该睡觉就睡觉,该吃饭就吃饭,该干活干活,该看书看书,该玩就玩。再也不像学生时代那样可以随便乱来了。因为如果工作了还保持这样,很可能一辈子就是这样了。Life is not a sprint, it is a marathon。仰望星空的同时,更重要的是脚踏实地,过好每一天。你仰望的星空,也许在你实力增长以后,就不再是你要的星空了。但脚踏实地带来的提升,会永远保留着。这一点上很佩服一些女孩子XD。

努力一定会有提高

这一点其实以前大学搞竞赛的时候就已经深刻体会到了。第二年打world finals和第一年打的时候比完全是处于两个境界。犹记得第一年训练结果忽好忽还,后来我甚至对训练的效果产生了质疑。我还对搞学长说:『训练根本就没有什么用,该会的知识都已经会了,那都是智商题,临场想得出来就想得出来,想不出来就想不出来,就这样了。』后来一年练多了以后才明白那种忽好忽坏,其实就是菜。理解还不够深刻,手还不够熟练。当思维熟练到一定程度的时候,解法和灵感就自然来了。

所谓的创新,也不过是把相似的东西联系结合起来罢了。人的联想能力是有限的,所以当我们面对很难的问题的时候,如果你的记忆里储备的相关内容不够多,是不可能把他们联系结合起来的。除了要提升自己知识储备的量以外,对学习到的内容加深理解也是很重要的。所谓加深理解,就是提取事物的本质特征。因为最终你能联想到相关的东西,一定是因为一些共同的本质特征。如果你事先提取好这些特征放在脑子里(做法就是平常对遇到的事物多思考),那么联想起来就容易很多了。人类的思考模式有点像广度优先搜索,遇到问题,先找最相关的一堆东西,不能解决再找次相关的一堆东西。这里简单想一下就会知道这个『相关事物的量』相对于从问题到要找的东西的距离是指数级的。所以你平常不思考做好索引,搜索起来肯定就慢得要死了…还很可能超出你能搜的能力极限,反映到实际就是,你搞不定这个问题了。

分析了这么多,就是要印证这个标题:努力一定会有提高的。能到什么程度不知道,但一定可以比原来强。

适当展示自己

这一项的目的不是为了show off,而是为了调节他人对自己的期望。有些牛人确实很低调,那是因为他们不再需要周围人改变对他的期望来实现自己的价值。我觉得之前在依图那边听来的一句话非常正确,大意是:一个人的成长是由他做的事情决定的。

如果你做的东西都是打杂,那成长的速度是很慢的。

而对于我们刚出来社会工作的new graduate来说,在大公司被boss拿去打杂是十有八九的。要去做重要的有难度的事情,就必须要秀你自己的能力。万事开头难,当你抓住机会表现了一两次以后,别人对你的期望就会得到改变。这时候拿到了一些有意思的活就不要再表现得那么强势了,不然最后不能meet老板的期望就适得其反了。

强者的谦虚才是真的谦虚。当在别人的期望里还是个弱者的时候,再谦虚就没人会注意了。记得大酒神打dota1 solo大赛的时候杀完对面的鸡打的那一句:对不起,这场比赛我要赢。人都是需要机会来证明自己的。当你被推到那个舞台之后,自然而然就会变强了。

不过呢,这一点在比较小的创业公司就没有这个问题,反正事情都干不完,you can you up…

就像@Lpuck跟我说的:你玩宠物小精灵的时候,一个怪也就是一开始厉害一点,后面你一直用,他升级飞快,就很厉害了。展示自己,做的就是让自己“看起来厉害一点”。

坚持自己的想法

别人的意见要看,但是不要随便就接纳。犹记得刚进来的时候,随便一个提交都好多comments。然后当时比较naive,觉得他们说得有一点道理的都照着改。结果一会儿你把这次的经验用到下一个提交上面的时候,又有一个另外的人来说,你这里不应该这样…然后我就意识到其实这群比我senior的人之间其实都不能统一意见。在那之后,如果不是我想过非常有道理的意见,基本都坚持自己的想法。

每个人都有不同的想法,所以外界的意见是不可能保持自洽的,能自洽的只有你自己的体系。但是当外界对某件事形成一个统一的想法的时候,就要特别注意思考其原因。虽然这种意见不一定对,但即使是错的,也值得积累下来的。这样在你带领别人的那一天,就能快速理解别人的动机并指正。

Java中重载equals方法的大坑(OOP通用)

看《Effective Java》看到的,主要讲对Java equals的override。C++对==的重载也是一样的。下文就用Java举例子了,因为是OOP的通用问题,所以很容易类比到C++。

问题描述:

class A {
    int x;

    public A(int x) {
        this.x = x;
    }

    @Override
    boolean equals(Object o) {
        if (o instanceof A) {
            return x == (A)(o).x;
        } else {
            return false;
        }
    }
}

class B extends A {
    int y;

    public B(int x, int y) {
        super(x);
        this.y = y;
    }
}

以上代码中B如果想Override equals使得y也能加入判断,应该怎么做?

也许最直接的答案是

    @Override
    boolean equals(Object o) {
        if (o instanceof B) {
            return x == (B)(o).x && y == (B)(o).y;
        } else {
            return false;
        }
    }

然而equals需要的是一种等价关系,需要满足三个条件:

  1. 自反性。即x.equals(x)为真。
  2. 对称性。即x.equals(y) == y.equals(x)
  3. 传递性。即x.equals(y) && y.equals(z),则x.equals(z)

上面这个做法明显对称性会崩盘。

A a = new A(0);
A b = new B(0, 0);
a.equals(b); //true
b.equals(a); //false

那如果加入对父类的特判呢?对称性是没问题的,但是传递性会崩。

A a = new B(0, 0);
A b = new A(0);
A c = new B(0, 1);
a.equals(b); //true
b.equals(c); //true
a.equals(c); //false

实际结论是B根本没有办法重载一个合理的equals。
证明:因为不能更改A类的equals,因此A的实例equals B的实例的时候一定会只判x然后返回true。那么根据对称性,B类的实例equals对应A类的实例的时候,也一定要返回true。所以如果想要在B的equals中判断y,上面传递性的问题一定会出现。至此对称性和传递性不可能同时满足,所以不可能存在科学的重载方法。

这个从本质来讲,父类和子类的相等是一种偏序关系,然而equals要的是等价关系,所以被父类强行equals为true以后,就怎么也救不回来了。

那么我们放松一下条件,允许修改父类呢?
从上面的教训可以知道如果子类和父类之间可以相等的话,一定会GG。那只能做成不相等了。
于是直接getClass判吧,直接看new的时候是什么的类,不同就直接判不等。那么假如A多了一个方法。

    private static final Set <a> luckyA = new HashSet<>()
    static {
        luckyA.add(new A(5));
        luckyA.add(new A(10));
    }

    public boolean isLucky(A a) {
        return luckyA.contains(a);
    }

这个isLucky写得再正常不过了,然而如果我们那么做,那这个isLucky对于所有子类就失效了。这违背了OOP的Liskov substitution principle
Wiki上的定义:Subtype Requirement: Let \phi (x) be a property provable about objects x of type T. Then \phi (y) should be true for objects y of type S where S is a subtype of T.

你也许会想,不加这个isLucky不就没有违反了吗?是的,但是只要A中有依赖A的equals的方法,就会违反这个规则。

然而你觉得因为子类的一个equals问题,给父类定下不能依赖自己的equals实现任何功能的规矩,合理吗?

综上所述,父类与子类equals可以为true是不行的;然而一律为false又会break OOP的原则。于是我们可以推导出即使允许同时修改父类和子类的equals,也没有任何合理的写法。这也是《Effective Java》给出的结论。

形式化描述一下这个结论:

如果父类是可实例化的(非abstract,非interface),子类如果添加了新的域想override equals把这个域放进去,没有任何一种override的方法是合理的。

那么该怎么做呢?答案:不要用继承,用组合。然后加一个fallback的方法。

class B {
    A a;
    int y;

    public asA() {
        return a;
    }
}

2016一季度二级市场投资小结

今天是4月14日,一季度第一个交易日就是1月4号的大阴线,然后就是股灾3.0一路下来。目前基本是触底反弹的阶段。先贴一下一季度的结果(蓝色是我的净值,红色是上证指数,包括了股指期货开的空单,所以开头是反着走的):

Screen Shot 2016-04-14 at 11.21.39 PM

因为没有每天都记录,可能因为有一些日子的缺失导致不太像上证的完整指数,不过每个记录时间点都是真实的数据。可以看到还是跑赢大盘挺多的,但也只赚8个点,中间有两次违背交易规则造成的大回撤。整体做得还不是很好。

对净值做记录是2015年11月6日开始的,从那时到现在的曲线如下:

Screen Shot 2016-04-15 at 12.06.20 AM

下面每个小结讲一个小主题吧。

痛失老板电器

先贴一下老板电器1月4日至今的K线图。

pic

左边第一根大阴线就是1月4日。恰巧上一篇博客就是第一个交易日发的:『增发、增持、减持』,里面唯一提到当时持仓的是老板电器,现在已经创历史新高了,事后诸葛亮一发逻辑还是挺正确的。然而下来的时候到了成本价多一点小赚跑了,涨的时候没买回来,真是可惜了。即使是增持价40拿到现在也25%了。其实看好老板电器的逻辑很多。

  1. 低估值
  2. 40元左右大老板增持,员工持股计划,代理商增持,数量还不少
  3. 270万台产能生产基地马上15年底完成,进入生产阶段
  4. 房地产马上热了起来,整个家电行业增长的预期提升
  5. 公司资产负债率很低,现金流充足,想要扩大投资杠杆,随时都可以搞
  6. 大宗商品价格大跌,生产成本下降
  7. 管理层能力在行业内明显是老大,市场占有率不断提升
  8. 看财报,公司营收大幅增长,但是应收账款等却没有怎么涨,可见公司在市场中(可能是对消费者,也可能是对代理商)处于主动地位,货还是挺抢手的。
  9. 然而我觉得最可怕的是,2、3两点加起来,有了大幅增加的产能,巴结了代理商,那么要做数据非常好看的报表简直易如反掌了。想象一下只要代理商想,随时可以从老板电器这里拿货,只要代理商拿了货,就可以当成卖出去算进利润了。有了大幅增加的产能,又有了出处,加上第8条货还是挺抢手的,然后代理商大量持股,多拿一点货让自己的持股快速增值,何乐而不为。如果把代理商看成老板电器新的仓库,简直是利润想怎么调怎么调。

然而当时其实没有看到这么多,后来看完了唐朝的《手把手教你读财报》,对照看才突然发现这是一个多么强势的公司。现在我们看老板电器最近出的年报,存货是减少的,可见新的生产基地的产能还没有给上来,但是已经超预期增长。可以预见,后面新的产能给上以后,接下来这年的财报如果老板电器想调的话,真的可以炒鸡好看。所以只要估值稍微跌回来一点,我感觉是随便买。

选股到底该怎么选

经过一轮阅读与实践,对选股有了一些新的体会。看了一些文章说只要不是今天进明天出的交易,说来说去都只有一个优势,那就是选股。

那么列一下关注的点,按顺序应该是:

  1. 资本运作(增减持等)
  2. 行业、题材(次新股等也算)
  3. 筹码(比如碧水源虽然公司不错,但是谁都知道它好,随便拿个软件看都知道高位套牢的筹码不肯割肉,这样就很难涨)
  4. 行业地位(就是竞争力)
  5. 经营状况(看自己看财报的功力了)
  6. 市值(越小越好)

赚到不少钱的中科金财就是根据1、2、3选出来,不过当时行情不太明朗,没怎么上重仓。当时是看了版块,看上它从底部拉了一个涨停,看了一下筹码交换完毕,行业互联网金融,底部实际控制人的配偶定增。于是直接第二天高开5个点也进了,然后就是连续两个几乎涨停的涨幅。

当然,即使选好股,也还是按买卖规则来买卖的(买卖规则详见之前的文章:『做股票的一些基本思路总结』)。所以最起码的要求是…在买点上。

目前观测的股票

  • 碧水源(公司来讲别的都很好,就是现金流有点烂,应收账款持续大幅增加,被国家开发银行定增奶了一口,年报还不错,主要看点是定增后的业绩释放(定增前基本要调节利润的))
  • 老板电器
  • 奥瑞金(做易拉罐的。低估值,实际控制人增持——虽然是迎合救市的,聊胜于无。开始不太想当红牛小弟,扩大投资,举牌永新股份(也是做包装的),整合包装行业和下游快消品产业链,进军体育行业,目的是为客户提供宣传渠道。感觉布局和视野都还是行的。这些投资都还有理有据,不是在瞎搞。最大的风险是负债率已经很高了,年报60%+,但是公司已经向证监会提了定向增发,还没有答复。等定增弄下来,负债降一降,还是有点意思的)
  • 博敏电子(次新股,走势好看)
  • 凯龙股份(同上)
  • 读者传媒(同上,这个行业很好)

目前持有

  • 奥瑞金
  • 博敏电子

碎碎念

在伦敦有时差做A股真是各种不方便啊…幸好夏令时,早上7点半起来还可以看半小时尾盘。

买了个阿里云windows server跑同花顺来挂买卖策略。这样就可以淡定出行了。

接下来重心还是转向次新股投机吧,资金不太多的,次新股是性质最好的交易标的之一了。

增发、增持、减持

最常见的对投资股票有参考意义的三种行为就是增发、增持、减持。

增发

增发有分定向增发和非定向增发,区别在于定向增发是面向少数的既定投资者,而非定向增发又叫配股,面向全体投资者。

非定向增发的意义并没有那么大,只是表示公司需要资金,向二级市场拿钱发展。好坏不好说。

定向增发就有意思了,关键是定向增发的对象。如果是自己公司的老板以及高管,那七八成是要涨了。首先老板高管对公司的了解比外面的人多的不是一星半点,对自己公司的发展有信心才会增发。除此以外,财报怎么做做账,或者发点什么利好对他们这些实际控制人来说,根本就是随随便便的事情,可以期待他们会尽力不让自己亏本。那么在增发价上下的时候,就可以试着买了。一般这种增发会伴随着财务费用,20%左右,把增发的人算进公司共同体的话,那么你得算到达增发价的120%的时候,这笔增发才算划算,否则这个共同体的这次增发是亏本的。当然不排除一些不管公司死活的无良奸商把这个东西当做利好消息放出来,然后通过别的方式减持。但是无论是什么样的逻辑,增发以后总要有一个上涨的过程,否则对于老板高管来说都是不划算的。而这个过程对我们二级市场投资者来说就足够了。

例子:

  • 仙琚制药,2014年12月29日发布非公开发行预案9块/股,给自己人,可以自行考证一下走势

增持

增发和增持的根本区别在于:

  1. 增持并不改变股本,只是买了本来属于别人的股份。
  2. 增发会使得公司获得新的资金,而增持不会。
  3. 增发公司获得的资金,需要说明这些资金用来干啥,而增持可以就是随便买买。
  4. 增持手续没有增发麻烦。

然后背后什么意思,靠自己琢磨了。这种如果是员工持股计划之类的,一般也是需要20%财务费用。同理对象是一些高管的话就具有重要意义。

例子:

  • 老板电器,前一两个星期才玩的增持,拭目以待,目前重仓- -b。
  • 中国平安,2015年第一季度的持股计划,可以自行看看走势,目前看基本快回到增持价格。

减持

大股东高位减持谁都知道是跑路,低位减持有可能是避税,详细可以参考之前对『龙源技术』的分析。

结语

这些资本动作是投资逻辑的一个重要部分,但是还是要按照操作规则(操作规则见『做股票的一些基本思路总结』),赚到钱了不可能会让自己再亏本的,像中国平安这种如果跟着大老板买完,肯定是赚钱的,然后股灾砸下来,破掉平台和均线还是跑路吧,起码还有钱可以赚。

一句话,投资逻辑只是让自己胜率变高,操作还是要按照基本规则。

做股票的一些基本思路总结

做A股股票做了有一年多了,期间看过一些书,也听过做得很好的老师讲了很多东西。在雪球上也看了很多文章,自己也想了很多。一直想找个时间整理一下思路,但是之前博客变得很慢,以为是被block了,弄了好久才发现是LaTeX插件惹的祸……那么现在搞定以后趁着回家写一下自己作为小散的思路,不敢说有什么大的见解,但是应该对于刚入场的新手还是有一些启发。

本文从做股票(衍生品和债券暂且不列)的三大投资逻辑类别出发,针对每种类别的投资逻辑定下确定的操作思路,最后会总结一下。

在后续的文章中会对我自己积累到的一些常见的小逻辑(或者说叫trick)再进行罗列与分析。

三大投资逻辑类别

投资

本来投资的定义就是为了获取收益权,而放弃资本流动性的一种行为。坚信能赚到企业的盈利,跟随企业一起成长。以基本面分析为主。

投机

投机有很多种,但本质是不包含确定性的走势预测,或者说赌博。以技术分析为主。

套利

包含确定性的带有安全垫的赌博。当然也有无风险套利,但是这种套利机会弄下来,基本不会有太高收益。套利者往往信奉市场是测不准的,并依此去操作。

具体操作思路

首先需要明确,投资逻辑只是让你认定这个标的现在好还是不好,真正选择起细致的买点和卖点,还是要根据技术走势来。那么下面给定我操作的pattern。

技术操作

第一类:20日均线

买点:从20日均线下方上穿20日均线。

卖点:从20日均线上方跌穿20日均线。

第二类:平台低点

买点:股价基本处于20日均线上方或者附近,并且在30分钟或者更高级别K线的前期低点附近,有止跌迹象(比如收十字星、阳线)

卖点:有效跌穿该前期低点,止损;突破平台上沿以后一轮涨势,跌破MA20或明显跌穿某前期低点。

其他原则

  • 买入有一定获利以后,止损价就放在买入价上方(目前市面已经有一些监控自动止损的工具,平时比较忙可以用这种东西挂着。同花顺也有,不过要收费),绝不能让盈利的交易变为亏本。
  • 无论是哪类,在有一定获利以后(这个时机可以是看到一根阴线,或者获利10%之类的),卖掉1/3到1/2,成本被摊低,剩下部分再根据规则交易。

投资

既然是投资,就要想着吃公司的增长。就看最简单也很管用的模型:

股价 = 市盈率(PE) * 每股收益。

那么很简单的思路,假设是每股收益稳定增长的白马股,那么我们可以在他处于市盈率相对低位或者合理的时候买入。

拿海康威视举例子,作出他目前的市盈率(TTM)曲线如下:

hikvision

那么如果你认为他现在是处于一个历史相对比较低的位置,就可以根据上面的操作规则买入了。我的看法是现在处于一个不高不低的位置,是比较合适的,等他再上穿20日线,可以适当参与。

类似的白马股:老板电器,奥瑞金,碧水源,启迪桑德

这类稳定的成长型白马股有一个比较著名的评估指标PEG = PE / 净利润增长百分比。老李说低于0.5基本可以无脑买入。(比如之前15PE的奥瑞金就是活生生的例子)

由于市面上的基本软件并没有市盈率曲线,同花顺上指标平台有一些有的,但是弄出来发现写得都有点问题的,特别是股本有变动的时候。wind有,但是要收费,于是我简单写了一个在线抓取的,还没做储存和cache,比较慢,可以供大家参考:http://120.55.80.116/。这个市盈率算的是TTM,也就是股价除以最后4次财报的盈利总和。目的是尽量客观地衡量一些收入集中在年底的公司。要看准确的PE(TTM)在http://xueqiu.com/上有,我的经过测试和雪球算起来是一样的。

投机

A股市场有很多非理性的机会,比如之前涨疯了的锂电池、新能源汽车题材。这种题材股的炒作,很多时候就是一下火起来了,特别像特力A这种。很难找到什么投资逻辑,但是就是涨上天了。如果要参与,也只能用技术分析的方法参与了。

套利

套利有非常多的内容,一般是某样东西与它的衍生品中间出现了价差。最常见的包括:

期货和现货的价差

比如沪深300股指期货和沪深300指数之间的价差。能做这个的逻辑在于期货在约定的结束日期和现货的价格必定是几乎一样的,否则就会有人借此机会马上套利捞一笔,然后把价差铲平。

升水:期货比现货价格高。这个时候可以做空期货,做多现货来无风险套利。(就是开股指期货的空单,然后买入同等数额的现货)

贴水:期货比现货价格低。由于股票现货并不能做空,那么可以在期货裸多。就在2015年8月25日前后,出现了这种贴水过大的套利机会。我们把数据拉下来可以看到升水的比例历史曲线如下(IC当月合约和中证500从15年4月开始到现在,纵坐标是(期货价格/现货价格-1)*100):

升水

那么假如你相信股价是完全随机的,在这种贴水大幅变大的时候,就可以裸多单买入。因为期货的基本规则(到了日期和现货价格要一样),相当于你现在买了打了折的现货。即使到交割日期跌破了你的成本价,那么你也有本身打折的安全垫在。

基金与实际净值的价差
  • 基金上下折,不过感觉这种可操作性不是很大。
  • 作为类似影子股的标的。比如有些因为重大利好停牌的股票,你是没办法买进的,但是这时候就可以看看哪个基金重仓这个股票。因为股票停牌,基金一般净值是没动的,很多投资者并不会意识到重大利好的股票出来会有若干个涨停板从而带动净值上升。

总结

首先记住你相信的逻辑并不能决定股价,千万不要死守深度套牢的一只股票,到头来感动了自己。

投资逻辑是用来选股的,不是用来操作的。任何的操作都要基于统一的一套系统。比如我上面提到的这套。目前我选的股票以及大盘都在MA20以下,所以我是空仓的。因为对于我个人而言,MA20以下的行情都不叫行情,并不值得参与;如果是真的行情,总要经过MA20的。

我的操作系统的基本假设是上涨行情的持续性,20天线上本质想定义的是向上拐点,但是行情能持续多久是不知道的,随时可能摸到下一个向下的拐点。

如果懒于选股的人可以买大盘,银华锐进对应上证指数,创业板B对应创业板指。都是加了杠杆的大盘,创业板B要是出现快下折的情况(净值低于0.4)稍微回避一下即可。创业板B弹性很大,大行情来临时是很好的标的。

当你空仓的时候,可以都买入银华日利或者华宝添益。这种是场内的货币基金。用土一点的话来讲,叫余额宝。这样行情来的时候可以随时买入。

对于赌大小有一个很经典的方法:假设本金无限,每次买大小,赢了能拿双倍,输了就没有。依次押注:1,2,4,8,16…。只要赢了,就又从1开始押。那么每一次赢,就能得1。原因就是$$2^0 + 2^1 + … + 2^{n-1} = 2^n – 1$$。

既然赌大小这种完全随机的东西在良好的策略下都能有很好的赢利方法,何况是股票呢?

任何的买入都是一种风险与收益的博弈(不好听点叫赌博),没有任何一次买入是一定成功的,但是在这上面赚大钱的却是大有人在。然而什么都不学就想赚钱,在社会上不行,股市里当然也是不行的。