exposure: semi-automatic(shallow)Accu #$valuable contexx

Opening eg — In RTS team, granted I didn’t get deep[2] socket experience or latency /engineering/ experience, but over the years semi-automatically I would get some valuable exposures, by raising good questions about .. sockets; reliable orderbook replication; error recovery; throughput engineering…

eg — in mvea team, I can get some valuable exposures to FIX; large scale and reliable equity OMS; low-latency (caching); order routing; automatic hedging; partial fills; limit orders; order cancels/amends; busts… Even if I don’t get deep experience on this job, my resume could claim genuine experience! Strategic positioning … (shallow) Accumulation

eg — in citi-muni, I got exposure to mkt-making; event-driven limit order repricing; PnL roll-up; mark-to-market; swing; JMS; Gemfire…

Key points about the “pattern”:

  • thanks to the strategic contexx, you get to accumulate (semi)automatically
  • robust commercial value in the skill
  • shallow [2] accumulation — I call it “exposure”, enough to impress some interviewers.
  • [1] small amount of effort — much lower than GTD, getting a job/certificate, losing weight
  • consistent effort ..

However, as the years go by, many developers stop digging with questions and others ignore the opportunities to dig into the difficult codebase because … they don’t have to:(. The automatic learning is a valuable option if you put in some legwork [1]. In contrast, some jobs don’t offer much automatic learning —

  • OC team: not so mainstream. I could still learn some WCF; reliable windows servers;
  • Qz team: poor portability. I could still learn some curve building; ticking risk;

[2] In contrast, here are examples of “deep” experience —

  1. from-scratch (95G) wait/notify solution
  2. from-scratch (95G) sybase stored proc to manage inventory in the face of competing orders
  3. home-prj order book replication in 2 coding interviews — Jump + iRage
  4. home-prj FIX client/server https://github.com/tiger40490/repo1/tree/jProj/java/com/tanbinFIX
  5. home-prj swing GUI to auto-update a table viewer

 

Advertisements

most(new/old)specializations turn out non-strategic

Look at my past vindicative specializations vs 

The Singapore government make technology bets. Venture capitalist make bets. Many organizations also make technology bets.. Every technology bet can lose or win.

In this post, I’m not advocating trySomethingNew. I am advocating specialization, which often requires accumulation and sticking to something not so new, like FIX, threading, SQL.

If you play safe and stay within the comfort zone of java/SQL/Perl, then don’t under-estimate the negative consequences such as

  • reactive
  • doldrums — see post on “y re-enter c++”
  • no deepening your understanding — a zbs
  • remain afraid and /uninitiated/ with the lower-level details below JVM

j4 stick2c++: Score big{losing@quant/c#

See also vindicative specializations , what if I transition to desk quant role but don’t rise up@@ and j4 c#: hind sight

I already give up several “investments”. If I take a java job, I would again forgo so many years of investment in c++. Now after I got more c++ offers, I feel /triumphant/vindicative/.

swing py c# quant 2010~13 quant af 2013 c/c++  (Zoom out …)
 $0 $0  $0 S$70k $ invested
 $0 $0 S$5k/Y  $0 $1k/Y cf
nonQuant job
up to USD20k/Y pretax opportunity cost
6M 2Y since barc 2Y  1Y 3Y 6Y since 1998 nominal effort
3M 4M 1Y  6M 2.5Y 4Y serious effort incl. STS
3M 2M 1M  2M 2Y 2Y spare time sacrificed(STS)
-2 -3 -6  -5 #more than py -15 -16 points invested
Barx passed some IVs OC, Bbg, Reuters 95G/OC Stirt/Mac/CVA ~18 offers job “offers”
Trex,bbg.. DRW; Nomura; Mako; Trex; Pimco analytics too many help interviews
helps my WPF xx value@algo IV deepens java nlg brain teasers; math cfd; contrarian insight into bigData/quantTrading; see y re-enter c++ other ROTI
2 more than
invested
3 #built real
professional xp
more than invested 9 #50%+ more than invested points SCORED
 no loss? no loss -3 no loss -7 no loss net points lost

## past vindicative specializations

Quant and other Unsuccessful diversifications are not the primary focus today, but they are listed below the table.

see also — For the “domains nlg” (first 3 rows), marketable_domain_xp spreadsheet is more comprehensive but not necessarily more updated.

 (scales 0-5)  ⇘ mkt value given my direction robust
demand
entry barrier accu achieved %%expertise among peers i was surprised wage ROI
mktData #socket  4 growing not everyone has xp  2~3  2  4 none
bondMath  3 robust math is not natural
to most dev
 2  3~4  3 none
orderBook, OMS, FIX #Eq/FX  3-4 robust medium 1 #cod`IV 1  3 none
c++  5 ok not
growing
higher than I thought  5  3  2 minimal
Algo practice  5 Growing high 4 #XR disagrees  5  5 none
python  4~3 growing low  2  3 #unknown  3 none
bash scripting + commands  2 robust medium  4  4  5~3 none
threading xLang 5 growing high  5  5 2 minimal
(abstract?) container internals 5 unexpected strength medium  5  5 4 none
RDBMS 3~4 shrinking low  5  4 5 #under-whelming none
MOM 2 robust medium  1  1 4 none

–algo practice for IV
^ good amount of accumulation
^ my confidence is boosted esp. in c++
^ I’m rising to the challenge of coding test growing popular

–Python
^ boosts my IV confidence
▼no critical mass yet
▼low traction
▼don’t know my expertise relative to peers

–option domain knowledge including BS:
▼ much lower demand than bond math

— C# and XAML
^ Microsoft is a major force
▼not aligned to my current direction

–MSVS:
^ was my Achilles heel, now slowly gaining confidence

–C++ GTD and IV
^ I made real progress in 1) GTD and 2) IV but not during Mac days — wrong job nature
^ deepens my java understanding
▼ those high paying domains (HFT, quant) are too hard to break into

–MOM architecture, products…
▼ not as widespread as I perceived

–javascript, php, mysql
▼not aligned to my direction

–gemfire
▼ market too fragmented

–EJB, Spring, Hibernate
▼falling out of favor

##[17]%%agile advantages: b aggressive

  • healthy job market
  • advantage: short commute. Job not too demanding. Plenty of time available for self-study
  • advantage: I can work day and night to get things done
  • advantage: I’m not aiming for a promotion, so I can try many interviews
  • advantage: my quant credentials and zbs is probably top tier among techies
  • advantage: domain nlg
  • advantage: health and stamina
  • advantage? data analysis aptitude
  • advantage: I have Singapore + java as safety net –> risk capacity.
  • advantage: am open to relocation
  • advantage: am open to short term contracts
  • advantage: am open to pay cuts
  • advantage: no family.
  • advantage: c++/c# in addition to java
  • advantage: above-average SQL, Unix, python/perl/bash

If I hit $220k as a contractor, my self-image and self-esteem would improve. I would feel confident, no longer inferior. In fact, I would feel better than the managers since I don’t rely on that one employer.

##[17] 4 tech career growth directions #aggressive

In spite of the threats and pains, I remain hopeful about my technical growth. Ideally, I hope to

  1. maintain competitiveness in java. Consider body-building
  2. selectively build up my c++ IV competitiveness, in terms of QQ/BP/ECT, from 6 to 7, over 2 years
    1. sockets, concurrency, sharedMem, templates ..
  3. try to recover the /sunk cost/ in quant domain
  4. slowly branch out to data analytics or data science

[1 java] feels achievable, based on my recent interviews. [4 data] is secondary and nice to have, not a must at age 43, so [2 cpp] is my main drive.

The interviews are crucial. Without IV, I can improve my GTD or zbs but painfully slow improvement of IV competitiveness.

Q: Suppose we don’t know java. Based on our c++ IV performance, can we survive as a c++ developer?
A: I will survive. My family needs me.

quant^HFT^WestCoast, again

After I felt fairly established on Wall St (around 2011), I looked for greener pastures:

  1. quant dev
  2. HFT
  3. high-end positions in the west coast. Not sure what positions exactly — mobile? machine learning? cloud?
  4. regular Wall St c++  job

In fact my java jobs on Wall St is not that inferior, and has the advantage of reachability. In contrast, those greener pastures still look rather distant. They look closer when I’m in a positive mood. But let’s put on the black hat and be critical and skeptical:

Quant dev is low-churn but demand is kinda shrinking.

HFT is rather niche skillset, possibly less relevant to west coast than java and regular c++.

1) 2) 3) are mostly FTE, not contracts. Regular c++ is contract-friendly and more reachable.

I used to feel the quant domain is hardest. Now I feel it’s shrinking. Now I feel I’m in much better shape. I made the decision to focus on quant early, assuming I could self-study and break into HFT later.

Data science? Math is much easier than quant finance, and I have some training in it.

C++? I now have more hands-on experience

##[18] Algo problem solving as hobby@@

  • how does this compare to board game?
  • how does this compare to jigsaw puzzles
  • how does this compare to small mobile app development as a hobby?
    • small mobile game development
  • how does this compare to photography as a hobby?
  • how does this compare to blogging as a hobby
  • how does this compare with DIY home improvement
    • woodwork
  • how does this compare to auto tuning and bike building
  • how does this compare with hi-fi tuning

Every one of them is better than TV, gaming, sight-seeing or drinking. Each one requires consistent effort, sustained focus. Each one will become more frustrating less exciting before you reach the next level.

personal advantages: trying west coast

See also https://1330152open.wordpress.com/2016/06/27/stickyusa-sgp-5-advantages-each-personal-view-610/

  1. Advantage: no kids with me. Easier to adjust
  2. Advantage: no house yet. Easier to move
  3. strength: algo interviews
  4. strength: I could be good at optimizing, research, scalability — natural not artificial complexities
  5. strength: attention to details — more valued in product companies than on Wall St
  6. Advantage: web technology is probably easier than c++
  7. strength: I’m a calculated risk taker

##high complexity high mkt-value specializations

Opening example 1: Quartz — High complexity. Zero market value as the deep insight gained is decidedly local and won’t make you a stronger developer on another team.

Opening example 2: IDE, Maven, git, Unix + shell scripting — modest complexity; Makes me stronger developer in real projects, but no premium on the labor market.

My best experiences on Wall St — tech skills with high market value + complexity high enough that few developers could master it. On a project involving these I get better lifestyle, lower stress… Examples:

  • threading
  • java collections
  • SQL complex queries + stored proc. Declining demand in high-end jobs?
  • SQL tuning
  • MOM-based, high volume system implementation — reasonable complexity and market value, but not mainstream. Mostly used in trading only 😦
  • pricing math — high market value but too specialized 😦
  • trading algorithms, price distribution, … Specialized 😦

Let’s look at a few other tech skills:

  • c++ build automation — modest complexity; low value
  • c++ low latency — high value;  barrier too high for me 😦
  • java reflection, serialization — high complexity high practical value, but market value is questionable 😦
  • .NET — some part can be high complexity, but demand is a bit lower than 2011 😦
  • Java tuning — high complexity; not high value practically
  • python — modest complexity, growing market value
  • PHP — lower complexity and lower market value than py, IMHO

##most used(GTD+)Generic know-how4Wall St developers

#1 java — the ecosystem
#2 c/c++ — not yet my chosen direction
#3 dotnet including c#, WCF, remoting, windows debugging …
#4 py — purely automation in most places(easy instrumentation); advanced py systems in a few places

# unix power user tools – including scripting, instrumentation… More widespread but depth is seldom required compared to SQL and python. More well-defined as a tech skill than windows dev.

# SQL/stored proc — losing pole position in low latency and big data environments, still dominant in traditional apps

# Excel add-in and automation

# javascript

IV^GTD – grow as techie@WS

I want to grow stronger/broader/versatile as a survivor, not necessarily grow my value-add. Actually I don’t have to grow.
— IV skills – Compared to GTD skills, these skills give me more confidence, more protection, more stress-relief. It works in big job markets like Wall St.

Lots of theory, which is my sweet spot.
Selective on what IV topics to learn!
coding IV + algo — favored by SiV
— (portable) GTD skills
Lots of tools….
Selective on what GTD topics to learn!

Needed for a lead developer, but such a role is stressful. I guess some good lead developers are also good at IV, but I’m not sure and I assume I’ll not be good at both.

Warning – a lot of projects don’t provide real GTD enrichment. Eg: Quartz, tibrv wrappers, Gemfire wrappers, FIX wrappers
——-
Macquarie environment lets me learn lots of GTD skills.
OC gave me IV (c#) and GTD enrichment.
Stirt – none!

A java environment would give me some additional GTD enrichment but less IV enrichment

In SG, I continued my previous strategy, learning IV skills + GTD skills. Not effective so far. I feel my c# IV skills improved a lot but still not there. C++ IV skills didn’t improve much partly due to distractions.

 

coblood – each year you worked

master -> jobjob

 

Each year that you spent on some job,

 

you earn, most important of all, some cash to keep the family financially safe.

** you also earn something to plow back. Look at my UChicago experience…

you earn some experience, insight, and hopefully some zbs, but most of it will not be relevant in future jobs

you earn/build some track record that helps maintain marketability.

you either speed up or slow down brain aging

you incur stress

you incur sacrifice of family time and exercise time

 

positioning yourself for the next tide#Avi, SunLin…

Background: Avichal pointed out ..”knowledge”. To excel in any domain we need mileage, valuable insight, non-trivial experience, and accumulation — non-trivial and doesn’t happen naturally. I have observed it with SQL, Java, Python, threading, trading system design …
Every job change presents an opportunity to reposition yourself. Bear in mind very few jobs put you right at the forefront. Positioning means incremental accu of relevant (often peripheral) knowledge. That’s probably the realistic way to assemble the jigsaw pieces.
You are unlikely to be given an architect role, but look at AOC!

##[13]strategic(5Y+) investment in tech xx

custom wait/notify framework?

Q3: Out of so many tech topics, what can I invest now? In 5 years when I look back, what kind of learning today would prove strategic? What would give me the long-term confidence, the non-trivial long-term competitive edge [1], the sense of long-term employ-ability and long term market value, the long-term buoyant demand. What tech skills are churn-resistant?

[1] “competence” or zbs is less relevant — when competing for a role our potential on-the-job competence is evaluated only through tech quizzes. I have witnessed countless competent developers showing lack of theoretical knowledge in tech quizzes. You can complete 3 WCF projects with barely 1% of WCF knowledge — #1 reality in developer knowledge. Wizards like Venkat and the Swedish hacker in Mansion.com can get many tricky things done in no time, but their theoretical knowledge (not wizardry) is what matters on job market.

Q5: Looking back at my last 7 years (after those 3 years of self-employment), which specific acquired skills have proven strategic?

A key factor is getting into Wall St. Without entering Wall St, my “world view” would be completely different.

Fundamentally, the boat we are in is unstable. Technology Churn. Competition from young Indian guys. Unlike medical doctors, the older guys lose market value. Any in-demand skill may fall out of favor in 10 years. I doubt I can pick some skill to invest, which will provide an iron rice bowl till age 55. Most of my prognosis would be uncertain, but some are less uncertain than others.

Less uncertain — As I age, salary and job security are becoming more important than glamour, buzzwords… but I want to remain relevant.
Less uncertain — better to keep the focus on interview topics not on-the-job GTD skills. Real world problem solving skills (untested in IV) are less market-strategic
Less uncertain — shelf live is longer in the US, so pay attention to US style IV
Less uncertain — diminishing return on additional investment in java or SQL
Less uncertain — c++ xx has paid off in numerous job interviews.
Less uncertain — knowledge of “major” languages offers better shelf-life and value than scripting but python might buck the trend.
Less uncertain — what gives me self-confidence in any tech is not GTD experience, but successful IV experience. Many know SQL for a long time but fail non-trivial IV questions.
Uncertain — better stand ready to accept and embrace relocation
Uncertain — get closer to trading and decision making
Uncertain — c++ will hold its ground for 10Y
uncertain — continue to identify and invest in the non-trivial, somewhat niche technical skills with high market value. Avoid mainstream stuff like ASP or web technology.
Uncertain — java may not maintain its dominance
Uncertain — financial centers may or may not continue outsourcing

A5: (loosely ranked) threading, collections, c#, Xaml, STL, smart pointers, memory management, SQL, swing, sort/search algo
A5: the non-trivial experience applying comp sci constructs to real problems such as my custom wait/notify framework in BAML. This is one of the few successful and innovative designs
A5: big outer-joins experience in GS
A5: dnlg – 3 types
A5: not sure at this moment — socket, linux, other boost libraries, python, ajax, FIX

A3: learning more java high-level components (like frameworks, messaging…) has diminishing returns
A3:  More c#  zbs may not help, but more interviews will.
A3: More c++ zbs may not help, but more interviews will.

moving a bit up the pyramid in a trading desk

In each trading desk, there are very few decision-making roles and a large number of supporting roles, including IT[1]. Pyramid — The closer to the top, the more valuable you become. For an IT guy, the route to those valuable roles is sometimes non-obvious. For this discussion, i will assume you don't want to become trader. If you also don't want to become an IT manager, then consider a quant role.

There are several factors …

The field must have sufficient profit to fund large “valuation” systems (VaR, quote pricing, marking…). If it's a small desk, then system is less likely to be complex.

In terms of inherent complexity, option > IRS > futures and cash; FI > others.

Risk is more quantitative than pre-trade pricing. Risk includes marking and real-time risk, but the most complex is simulation-based VaR. Business allocate enough time and resources to prepare an elaborate risk risk analysis.

When you first enter a field that's 60% (on an arbitrary scale) quantitative compared to an earlier 40%, you may not notice you are slowly shifting up on the pyramid. But when you develop your quantitative track record over the years you might move further away from IT and closer to business i.e. profit center. Your value-add may increases slowly or signficantly. When you are still very much in IT, you may still feel you are a replaceable supporting staff but someday, without warning, you become part of the “inner circle”.

[1] Decision-making roles including market-risk. If desk head has enough confidence in the market-risk analysis, then risk managers can significantly affect (intervene/curtail/rein-in) trader actions. In some buy-side/sell-side trading desks, the chief does pretty much nothing except watching risk numbers.

who moved my cheese

I read it 5 years ago. A powerful metaphor for our long term survival as individuals, as a profession (say software engineers), as a company, or as a nation…

When our cheese disappears, too often we try so hard to understand the “who” but (as the book author hinted) maybe we need not… Instead, we could focus on how to better identify long term trends and threats, how to strengthen our long term competitiveness, how to adapt ourselves to changing (and challenging) landscapes…

Some of the cheese-disappearances I perceive —
* Wall St big bonuses — disappearing
* Wall St big base salaries — investment banking business decline, or seismic changes eroding their profitability. High profit margin is (IMO) the key reason for the high salary.
* inequality of Wall St vs Main St, and the unfair advantage of “high finance” over other communities
* non-threaded programming — multi-processor machines and slow displacement of traditional programming
* sybase, weblogic/websphere, solaris  — more open source solutions adopted in finance such as mysql, jboss ..
* IT contractor as a profession — will they disappear?
* Aged-55 or older programmers — will they disappear as in Asia?
* comfortable retirement at age 60 — I fear more people will be forced to work till older age, because the traditional source of retirement income is under threat and becoming unreliable.
* onshore IT jobs in finance — even more of these jobs moving offshore?
* dominance of US dollar
* Singapore's geographical advantage as a transit port
* java as a language — in some areas, java is losing pole position
* SQL as a language — I see more alternatives like SecDB, google BigTable, NoSQL, gemfire/tangosol. They don't completely replace SQL but eclipse its dominance. In one of my projects, a in-house xml document store is the main data store. SQL was not selected as a solution.

If we think hard about cheese-disappearances, we may realize some things somehow won't disappear. Perhaps the WHY isn't the only thing important. I do think it's good to seek patterns.
= option mathematics — still underlying the pricing, risk-management and trading of most derivative instruments
= derivatives — some people predict derivatives trading will decline and shrink
= c/c++
= SQL — yes SQL again. This language has withstood so much competition and criticsm but remains dominant so far.

marathon – strengthen your(GTD+)lead in the pack#sg high-end

Y Lin pointed out those high-end jobs tend require specialized skills. I now feel concurrency is an example, in addition to —

latency – c++ is the default for extreme latency
latency – sockets
latency – market data
latency – java?
dnlg – math — better entry barrier, closer to business.
dnlg – jargons in FX, Rates…
dnlg – arch
FIX
MOM


real projects are completed in lowly tools like sql, java, C, scripts, but interviewers need to see much much more than those.

portable value-adding xp]financial systems

Q: Suppose a developer X works shorter hours and on the peripheral, and Developer Y works longer hours, and in the core modules of a complex financial system, and they join another finance company after 2 years. Does Y bring more value to the new team? Suppose both are smart, ambitious developers.
A1: Yes for a hands-off architect role. The intimate knowledge of the previous system are relevant and somehow “portable”.

(For the rest of this email, let’s assume it’s a developer role.)

A2: Yes if X’s projects are really, really peripheral, like database clean-up, wrapper scripts, high-level testing without touching java/c#/SQL source code.

Now suppose X does touch source code. Many trading systems have core components as non-web components, so if X only works on the web layer, then I would be worried. Similarly, if X only works on some nice-to-have reporting module, without any exposure to the core business logic in the system, I’d be worried too.

Actually a business intelligence module can have complex SQL logic and also technically challenging if data volume is huge. A complex SQL join often defines relationships between tables, so whoever writing the join knows that business logic. Now suppose the tables joined are the important tables (like positions, trades, prices, risk, volatility, model parameters) in a financial system, then that business logic is rather critical. In short, there are important value-adding work as well as a ton of unimportant work in the BI space.
Another role to avoid (for a hardcore developer like me) is non-developer roles like trading floor support or BA. I feel they know quite a bit about trader’s world, and also the IT world, but they don’t see the link between the 2 i.e. the implementation.

A3: the level of value-add depends on asset class. For equities (including eq-derivative) front-office trading, volume and latency are a real challenge, so pure generic technical experience might be valuable even without domain knowledge. I was told FX and Treasuries trading are similar. Note middle office and back office equities trading is said to be less demanding, so technical expertise is probably less valued. If our original question is about a high speed eq trading system, Y probably gets more exposure to the technical challenges.

##extend lead over non-trading developers

(context — IV, not performance) When you compete for trading jobs in SG, you must show convincing value-add otherwise why should they pick you rather than some regular java guy in SG with 15 years xp?

— ranked in terms of entry barrier

  1. * c++
  2. * WPF? i think in a growing number of cases, a java guy can help out on the front end
  3. * socket, TCP/IP, FIX
  4. * analytics
  5. * low latency
  6. * distributed cache
  7. * swing — few java guys do swing but swing is fading
  8. * db tuning
  9. * threading,
  10. * java memory management
  11. * MOM — RV, MQ
  12. * biz jargons — they buy it
  13. * serialization
  14. * CEP??

##differentiation ] a commodity skill market

Problem: java used in finance is becoming a commodity skill. In fact, any software skill tends to spread very quickly (esp. to the very young developers). What are the exceptions and what are the differentiations we can build up, differentiations that are recognizable by hiring managers?

  • Differentiation: c++, c#, python, perl
  • Differentiation: DB tuning. Most developers don’t face this challenge.
  • Differentiation: jvm tuning including GC
  • Differentiation: practical java performance problem-solving. Compare — I had the opportunity to deal with large DB.
  • differentiation: low latency
  • Differentiation: swing – has unique paradigm and  challenges liks EDT, models, layout … that the regular java developer won’t face

Exception: googlers and facebook developers are probably used to deal with large volume and higher performance. Outside developers face no such challenge.

Exception: Oracle employees probably know their own db much better so few developers can match their skill.

hard-to-replace talent in financial IT: tech^dnlg^mgmt@@ #GS

What’s valuable and hard to replace in financial IT? Is it

1) technical know-how or
2) management skill or
3) domain knowledge?

I feel managers usually earn more salary. The more hands-off, the more salary. Problem is the political skill required, which I don’t have. Leadership is a combination of technical, domain knowledge and ….what I call people skill.

Technical and domain knowledge is real “knowledge”. These are like history or geography knowledge — if you know it, then everyone agrees you know it. If you don’t know it, you can’t pretend for too long (like Emperor’s new dress). As you can sense, I’m a big fan of tech and domain knowledge.

In GS, tech know-how is considered easily replaced. Find a fast learner. Throw him into the water and he becomes an expert in 6 – 12 months. I took 1.5 years. In other I-banks, tech know-how helps you keep your job. If you are the only system expert then employer won’t touch you.

In GS (my department) , 2) and 3) make a valuable combination. They feel such a person is hard to find. If necessary they would keep such a “manager” and replace all the hands-on developers under him. They believe this manager can then train up a new crop of developers.

financial jargon would set you apart from someone new

XR,

You once “said” something like — the domain knowledge is a thin layer of additional knowledge between a finance and a non-finance app developer. Here are some jargon terms I recently came across. They can take a lot of learning effort.

* interest rate swap
* fund of funds vs direct hedge funds
* private equity
* market making
* secondary market vs primary market
* loan syndicate
* side pockets
* broker vs dealer
* dark pools
* ECN
* how market data is distributed (RV)
* how traders hedge using different bonds
* haircut
* execution fee
* revenue transfer
* General Ledger posting
* acrual

* mark to market
* daily P/L roll-up across trading accounts, across trading desks, across divisions
* bid/ask spread
* commission and bid/ask spread
* floating coupon
* yield curve (technically aka “term structure”) — how is it constructed
* the trio relationship among yield, price and coupon rate
* how yield and price are closely linked
* spot rate and forward rate
* time value of money
* bond duration, dv01, convexity
* libor rate and fed fund rate
* taxable vs non taxable bonds
* why is muni more popular compared to treasuries and corporate bonds
* callable and put-able bonds, yield-to-worst, yield-to-best
* sinking fund, prepayment
* settlement and clearing
* swaption on municipal bonds

specialize – to stand out, really@@

In an ever expanding /pool/ of software developers, how do you stand out? Like any technical field (including realtor, dancer, violin-maker and violin-player, photographer…), a proven route is specialization.

Compared to US developers, I feel Singapore young developers generally shun technical specialization. For the Singapore job market, you could specialize in

low-latency
financial math
python, perl, shell scripting,
complex queries and query tuning
threading

See http://bigblog.tanbin.com/2007/07/halo.html

trading domain knowledge — math^jargon

Q: how does a trader decide at what price to buy and sell a security, and at what quantity? How does she hedge?

Note in margin trading, sometimes you have to close out a position at a loss, in order to limit further losses. Also Note an algorithm trading system executes hundreds and hundreds of trades a day.

This is the type of trading domain knowledge a java developer can’t acquire in 6 months. Remember we both felt that most domain knowledge required on a java job is trivial and can be acquired in a few months?
Notice my example is a pricing system. Generally, the more math there is, the deeper the domain knowledge. In general, I feel there are 2 types of financial domain knowledge
* Math
* jargons

Jargons are numerous but not too bad. Perhaps up to 200 jargon terms. Nothing compared to what a medical student has to learn in 6 months.

Quantitative usually means math. Financial bookstores always have shelves for the math and the jargon.

## IV halo across domains #specific=better

See also — relevant55.tech.txt, [[ further improve ]], [[ towards an architect ]]. This halo list is not that rigorous, only a /sideshow/.

If you invest more than enough into …. say, java concurrency, you may grow an invisible little halo in the eyes of peers and interviewers. Other halos: google brank, microsoft brank, GS brank

  1. [a] lock free, CAS, statement reordering, membar, volatile^atomic
  2. conditionVar, spurious wake-up
  3. [a] read/write lock, tryLock, deadlock prevention
  4. [a] tail recursion
  5. sql tun` including EXPLAIN, hints, statistics,
  6. [a] hash table internals, red black tree
  7. [a] O(n) sorts
  8. [a] Morris

C++ specific:

  1. [ah] compile-time template meta-programming
  2. smart pointers used with factory, class field etc
  3. epoll,
  4. [h] reinterpret_cast

Java specific:

  1. jvm tun` including mem, GC, profilers
  2. thread pool usage and internals
  3. callable/future
  4. [h] remote debugging
  5. [h] reflection? not really seen as halo
  6. [h] JMX
  7. [a] concurrent skip list,

also-rans

  • [a] tx isolation levels
  • solaris/linux tun` && capacity plann`@@ Rember the Solaris 10 seminar?
  • serialization

[a=academic, could be considered zbs, never really needed in GTD]
[h=hacky, powerful black magic, rather useful but often frowned upon]

what in addition to java^dotnet

Hi JunLi

A few days ago I said something like “enterprises application development usually choose between java and dotnet”. A few qualifications

* Where stored procedures are required (or clearly superior), then obviously java and dotnet must give way to the stored procedure language, such as pl/sql and Transact-SQL.

* Where shell/perl/python scripts are required (or clearly superior), then obviously java and dotnet must give way. However, most enterprise applications use less scripting languages than compiled languages.

* C++ is probably the third biggest language in enterprise app development. I have personally witnessed the important role of C++ in financial and telecom systems. I believe that in both financial and telecom, C++ offers somewhat better performance.

* Python was adopted by JPMC, BAML and Macquarie.

* PHP is increasingly chosen by enterprises such as facebook, yahoo, NBC-Universal and MTV.

By the way, software vendors and system programmers favor C more than java and dotnet. (JVM and the dotnet compilers were probably written in C), but our focus in this discussion is “enterprise app development” rather than platform/library/tool development.

accumulated domain xp fetching salary premium@@

Update: Sanjay in Stirt felt his domain xp should be protective but no. GTD was key in that team.

DaShan: Prior Domain experience may not translate into higher code quality or productivity on the next job, due to restrictions and important differences between systems.

salary depends on many factors like

– budget and company size
– relationship with the site owner
– urgency
– domain experience

When I first met DaShan, I felt he has some invisible upper hand as a developer with that domain experience. I felt that way because of the ignorance or “lack of domain knowledge”. Now I know that other people also see me with that Halo.

How about the high math of MSFM?