Archive for the ‘科學園區’ Category

Coding For Dummies II

This is a quick guide to pick up some basics of programming languages. First we go through some concepts, please don’t spend more than 20 minutes on each topic, as you can only learn them once you start coding. And keep in mind this post is a pointer; I skipped all the details as I believe you could certainly Google your ways out.

Components in a Programming Language.

Programming languages all have different syntax and different instructions, but most of them share the following components:

Variables : they are place holders, a facility for storing data. The current value of the variable is the data actually stored in the variable. The data stored in the variable can be changed (through assignment) during the program run.

Data Structure : a data structure is a particular way of storing and organizing data in a computer so that it can be used efficiently. Choosing the right data structure is an important first step to a successful project.

Control FlowStatement & Function Calls. It’s the backbone of your program; it dictates the transfer of control in your code.

Boolean Logic: the basis of all modern digital(binary) world.

Name Spaces: a abstract package or container that groups certain classes and functions together. They are needed for any project beyond sample codes.

Self-Guided Homeworks.

Do the following mini-projects in each programming languages (VBA, Perl, Java or C# or C++) . The estimate time for each project is 2 hours, please spend as much time a you need on all projects and make sure you feel completely comfortable with them:

  • Hello Worlds
  • Create a function to print out Fibonacci series
  • Max, Min, Medium, Average & Print out sorted
  • Store (write and read back) bank accounts in a csv file, using a structure {firstname, lastname, gender,ssn,balance}
  • Input Screen (using command prompt & GUI) to dynamically store bank account information.
  • Parse & display a RSS on the internet
  • Create Course/Student/Teacher tables in a DB. A GUI to Insert Update Delete View records.

For Java (or C++, C#):

Design asset classes (Corporate subclass Bond, which subclass Instrument, Stock subclass Instrument).  Each has functions like currency, issuer, getIntrinsic, getMarketPrice, getYield, stock has getDividend, bond has getCoupon, etc…

For Perl:

Reformat/convert the following CSV files, from

Account, User Name, Creation Date, Balance
BI1234, John Doe, 3/21/98, “2,300,000”
GX4836, Mary Doe, 4/5/01, “360,500”
To
Account, Balance ,User Name, Creation Date
BI1234, 2300000, John Doe, 21/3/1998
GX4836, 360500 ,Mary Doe, 5/4/2001

For VBA:

Try at least 5 examples from this tutorial. Learn important collections/objects/methods/properties on Microsoft Excel Visual Basic Reference, like Window & Worksheet objects.

As a non-programmer, after completing all the homeworks, you should have a very good understanding about what programming languages are about, and when/how to use them.

For a programmer, you can pretty much follow the same guideline when learning a new language, you just need to add few more homeworks, like TCP/IP socket call, more OO topics, more sorting & data structure, web coding (dynamic html generation). Also throw in few more technologies:  javascript (and few frameworks), Python, XML, making a dll, web services,  db tuning.

Coding for Dummies I

This series is for non-tech people who want to get a job in today’s financial market. My primary target audience is for a MBA, economists or even accountants who want to take on a high finance role.


First I want to list all the important technologies used in today’s market. From all the places I worked before, and from all job postings, the following computer skills are what banks and funds are looking for:

Excel: Excel to financial professionals is like chopstick to Asian; you simply cannot claim your ethnicity without knowing it inside out. Among the “tricks”, you need to at least know the followings: Sort/Filter, Pivot table, Formula, Charts, Macros and VBA.

VBA. Thanks to the full Microsoft support. VBA can be run on all the MS Office products (Excel, Outlook, Word, etc) and has become the choice of trading desk support and any front-end development, as it allows you to “program” your desktop applications to become your proprietary trading system.

Perl. This high level scripting language is widely used in the overnight batch to process flat (csv) files, and to kick off 3rd party software. It is a de facto back-end language of the bank. On UNIX/Linux, people also use shell scripts.

Java/C++. For a more quantitative role, an OO (Object-oriented) language is essential, as it allows you to effectively develop a model or production grade system.

Numerical Analysis Software: Matlab, Mathematica, Mathcad they allow you to quickly turn models into code.

SQL Database: Learn to use SQL to design table and learn the ER diagram. Learn the interface from all the above languages (Perl, Java, VBA) and learn to normalize your table design.

Data Format: Use XML for a more structure dataset, CSV for super easy and fast data processing. This and database connectivity is very important. After all, data is what IT (information technology) is about.

Communication: Web Service, TCP/IP Socket. Other than APIs and file hand-shaking, these are ways to talk to 3rd party systems.

Industry Specific APIs : Bloomberg to retrieve market rates, pricing, indicatives, etc… ; Intex to access structured finance waterfall model. Adco(Andrew Davidson) & AFT(Espiel) for prepay and loss model; Tradeweb, Polypaths, etc…

Financial Protocols : FIX. This allows your system to talk to another system, to query, to make an offer, to place a trade, to settle, and to consolidate.

For Math, you need to know the following:

Statistics. The backbone of modern-day finance. Learn as much as you could.

Stochastic Calculus/ Monte Carlo Simulation. It simulate the moves of stocks, community, and interest rates.

Optimization : Curve fitting, Calibration, etc…

Linear Algebra / Numeric Analysis : Study of algorithms that use numerical approximation to turn continuous mathematics into code

In my second post, I will go over some basic programming language concepts.

信噪比

當今世界收入兩極化的原因我覺得有兩個: 一個是科技, 另一個是資訊
科技是槓桿, 讓知道方法的人能夠以一人之力舉起地球.
至於今天的資訊雖然感覺充斥氾濫, 事實上那些都是噪音,資訊本身仍是”稀有財”…
有能力從噪音中快速萃取出資訊, 甚至歸納出或看出趨勢的人正乘著翅膀快速飛去