top 22 surprises since Apr 2017 #work+family

  1. regained self-esteem in tech IV/GTD, after bleeding self-confidence for 5 years
  2. coding test continues to spread. I improved progressively, gained traction — I even find it enjoyable.
  3. my c++ competence finally gained traction, thanks to the interviews.
  4. [c] my peers didn’t “leave me in the slow track”. Most of them are still regular developers.
  5. [c] concentration window —- proved to be extremely important to my learning, career planning and reflections. Parenting and household chores are real drags.
  6. “strategic technology bet” —- is thoroughly discredited, through repeated introspection
  7. [c] java is robust and dominant in ibanks. c++ is robust too. There are still many c++ roles in U.S.
  8. quant career and math aptitude —- broken dream. Disillusioned. deepest pain
  9. I have decided to retire in Singapore not U.S. I see my Singapore citizenship as a huge strategic advantage over my Chinese/Indian peers.
  10. Tristate housing — school-district housing is more expensive than I thought, but Edison/Bayonne can be quite affordable

–Next 20

  1. [c] I didn’t lose all of my java strength…
  2. U.S. contract rate has grown from $90 to $100
  3. [c] ibanks interviews continue to play to my advantage, after 5 years
  4. aging developers —- I see good examples in Shubin, Paul, Shanyou, Alan, Daniel etc
  5. [c] U.S. job market —- didn’t lose steam. I think it is growing. U.S. economy continues to grow
  6. [c] wife was competent at her job and continues to keep the kids in the current condition without deterioration
  7. kids —- my daughter didn’t become alienated; my son didn’t get out of control.
  8. [c] I continue to take unpaid leaves to learn from interviews
  9. There are many interesting start-ups both in U.S. and Singapore
  10. mkt data —- enjoys growing demand and I gained traction more than I gained a new defensible territory.
  11. U.S. investment yield is typically 6%, higher than what I observe in Singapore.
  12. [c] ibanks didn’t reduce IT budget as some predicted
  13. [c] HFT —- is robust
  14. rise of west coast
  15. [c = continuation, but unexpected]

job4accu@20Y: which past job was closest2ideal

Q: do I want to deepen and specialize in one single area, rather than diversify? skill: deepen^diversify^stack up provides a context

A: let’s assume answer is yes deepen.

Q: which area?

A: programmatic data analysis in finance … with two entry barriers in math and coding, with reasonable “moneyness” but market depth is poor.
A: financial enterprise app with multi-threading …?
A: high speed market data engine in TCP/multicast?
A: orderbook replication with retransmission?
A: bond math including IRS?
A: option math? Poor market depth

Once we figure out which domain is good enough (very few), then we need a good boss…

So which past job is most likely to offer me that professional growth prospect?

  • Barcap, but market depth is poor for that skill
  • citi?
  • RTS? but I get NO exposure to the raw sockets and I’m not allowed to ask!

Truly algorithmic trading on autopilot

Bulk of the software is written by “infrastructure engineers” using STL, sockets, system calls(yes)  and C tricks — all low-level stuff to optimize speed, and a small chunk is written by the algorithm researchers.

At SOD, operations start the trading engine and it runs on autopilot. The human control is provided not by a human trader but by the operations team. In a sense, the ops team are the traders.

pricing^mktData: my #1 domain xp

See also marketable_tech_xp spreadsheet.

In terms of absolute length, pricing would be my #1 domain

  1. Citi pre-trade bond pricing
  2. Barcap
  3. Stirt risk bucketing
  4. MSFM + self-study

In terms of depth, I’m very comfortable with the (limited) math, which is an entry barrier to many.

  • 😦 However, this domain has relatively few jobs and poor accumulation
  • 😦 Mostly in ibanks
  • 🙂 has contract roles
  • 🙂 salary premium? occasionally
  • 🙂 entry barrier? reasonable

fixation@ROI…dampens job satisfaction+joy@learning

fixation@ROI/payoff/success/result/accu … dampens job satisfaction+joy@learning.

This affects my “engagement”. We should not ignore these ROI factors, or those “smells” … instead we should evaluate our direction and take stock, but let’s not overdo it.

  • +ve Eg: Barcap option math
  • +ve Eg: Barcap swing learning
  • +ve Eg: RTS socket programming
  • -ve Eg: git
  • -ve Eg: curve building
  • -ve Eg: WCF

Consider a tour guide aiming for the tip.

Consider Grandpa in his research career.

Consider a singer like 王杰 or the last few years of 邓丽君。

Risk analytics dev, hopefully not another broken dream #Ashish

Hi Ashish,

Thanks for your input. I feel bad about repeated failed attempts to break into a few quantitative domains (listed below) so I need to consider some negative what-ifs. What if the risk system is similarly "underwhelming" like:

* volatility surface fitter in Barclays
* curve building and real time "ticking" risk sensitivity in Baml
* quant library integration at Macquarie

* equity and FX volatility product pricing in OCBC
* (I guess your Barclays mortgage system could be another quant domain?)

Armed with my formal education and analytical competence, I have tried valiantly to find a foothold in a quant dev domain. I was unable to dig in my heels.

I will not go into details on these "broken dreams". Suffice to say that I had enough of these … that recently I decided to walk away from a higher-paying ($120/hr) contract because it looks like another system with some complicated financial math.

I don’t want to give up completely on my (large) investment in quant study. This is the source of one of the biggest pains in my career. As I said, I am also cautious about throwing good money after bad money…

Thanks for pointing out the "infrastructure" part — I can imagine that like your friends, most tech guys in risk systems are only responsible for the infrastructure. In some banks, there’s an army of developers supporting the risk systems, so the infrastructure is presumably quite complex and large scale. Presumably, if a developer can understand a sizable infrastructure or the complex "plumbing" in a risk system, he would be considered competent, valuable, and strong even though he doesn’t understand the math.

Across domains, math is not the only domain knowledge — I believe 1) system architecture and 2) jargon are important domain knowledge too, esp. in risk systems.

Among the millions of java/c++ developers in risk systems, I guess 2% to 10% need some quant knowledge? In such a case, the market depth would be rather poor, because risk quant developer roles would be few and far between, just like the pricing quant developer market.

MSOutlook q(Received): space-sav`custom format

–based on

IIf(Date()=int([Received]),Format([Received],”hh:mm”),IIf(Date()-[Received]<7,format([Received],”ddd m/d”),format([Received],”mmm d, yy”)))

I name it “-myDT3” — 3 types of values

Q: can I share this custom column between Inbox/Deleted/Sent?
A: Unsuccessful try in 2010

Problem — unsortable
Solution — add the original Received field, but keep it razor thin

python usage + risk system ] a big buy-side #ChaoJen

Government Investment Corporation is a large buy-side. IT heads are keen about python as a first-class language, used for data analysis, in post-trade risk systems etc. Pandas is the most common module.

Python salary is not always lower than java/c++. My friend Chao Jen said python salary could be high if the team is demanding and deep-pocketed.

Is the GIC risk system mostly written in python? Chao Jen doesn’t know for sure, but he feels c++ may not be widely used in the GIC risk system. Might be a vendor product.

Hackerrank python tests can be hard to get 100% right, but Chao Jen said many get close to 100%.

tech specialization=illusion #codingIV

My dad is a real specialist. There are new comers who publish books to challenge the established theories, but it always takes a new comer many years of accumulation to make a name.

Tech specialization is not so practical. It suffers from the hazards of 1) churn (+volatility), 2) low entry-barrier,

3) market depth — (similar to my dad’s situation) after one job in this specialization, can you easily find another?

Last but not least — screening interviews are the real watershed just like 高考. The screening used in job interviews are often coding tests. Your specialization is marginally relevant at best. So even if you specialize in, say, cryptocurrency, FunctionalProg, Containers, SOA, .. the hardest interview challenge you face is probably a generic algorithm coding test! Your specialization and accumulation could help you do a better job, but not getting the job. I feel this is like an actress auditioning. You don’t need such strong experience acting; you just need to wow them at audition.

(de)serialize binary tree(!!BST)using funptr #BFS bbg

struct Node{
  Node * left, right;
  int data;

… If you simply output as “data,leftId,rightId | data,leftId,rightId | …” then the graph structure i.e. link is lost. Therefore, I feel the stream need to identify each node: “Id,data,leftId,rightId|…
Next question is how to assign the id values. Easiest — use node address as a string id!

Suppose there’s a treewalk algo walk(Node * root, void ( *callback ) (Node *)), i will call it like

walk(root, serialize1node); // where serialize1node is the callback.

Note the position of the asterisk:

  • It’s on the right of type name Type1 — read left to right .. pointer to Type1
  • It’s on the left of variable name var2 — read left to right .. var2 is a pointer to … is my tested solution

—-idea from my friend Deepak: pre-order tree walk and output one line per node {payload, direction from root, direction from Level 1 ancestor, direction from Level 2 ancestor..}

  • first node in the file is always the root
  • the output file always includes the higher level nodes before the lower-level nodes
  • delimiter needed between nodes

—-If the tree is a BSTree, then this idea is based on the fact that a reading a series of unsorted nodes can construct a BSTree. For this solution, we have no requirement on the payload values. They can be booleans.

first pass — in-order walk to build a hash table of {node address -> integer id}. If we treat the Id’s as payload, then the tree is a BST.

2nd pass — BFT the original tree. For each node, we write original payload, id to the file, without writing the links or addresses. File looks like T,5|T,4|T,6|T,2|…

When we reconstruct the tree, we read each node from the file, and insert that node into our new tree, using the id value to decide where.