Home » Book Review

Category Archives: Book Review

Review of Udacity CS101

One of the main reasons that I’ve been neglecting writing articles is that I had been taking the CS101 Udacity course. Udacity is a MOOC, short for massive open online course. That means that anyone can go online to register and take the course. Most MOOCs, including Udacity are usually free. I am a huge fan of MOOCs and this is the second course that I’ve finished. The first was on Coursera (Introduction to Computational Finance and Financial Econometrics — recommended). Although there are ways to get “credit” for taking a MOOC, my goals have been personal/professional development.

CS101 can be found here. Udacity divides their course catalog into Beginner, Intermediate and Advanced categories. CS101 is listed as a beginner course. CS101 teaches an introduction to Computer Science (CS). The class uses Python as its programming language for examples and assignments. To provide students with a coherent project that illustrates various aspects of CS, the class builds a simple search engine.

This happened to fit my needs quite well. I wanted a platform that could do the work of R but also provide a better framework for putting together small programs that I could use to automate tasks. I am also interested in Quantopian and their Zipline backtesting engine. It is written in Python and it might facilitate my research in short term trading strategies. Finally, I have an idea for an internet security & privacy product. Learning about search engines seemed terrific background. And the price was right:  free.

My background includes a degree in computer engineering and I’ve done some coding professionally. I am not a beginner nor am I a current professional. I looked forward to a review of CS fundamentals.

CS 101

David Evans teaches the course. The course description indicates “no prior programming knowledge needed.” Although perhaps not needed, I’d recommend some prior programming. It need not be extensive but it would be extremely helpful to have done some coding, some thinking about coding and made some mistakes. Udacity recently added another, more basic course, “Intro to Programming in Java” that I believe was added because of similar feedback.  My recommendation for the target audience is someone already coding at the beginner or intermediate level that is looking to add some formality to their effort. Unlike the CS101 course that I took in school, there are no proofs in this class (if you don’t know what I’m referring to, don’t worry).

The course is made up of 11 sections presumably corresponding to week per section. The original course had 7 sections but was subsequently extended. Each lesson is made up of a video lecture, quizzes and problem sets. Professor Evans comes across in a friendly, somewhat purposefully nerdy manner that worked. A key part of the success of the course is the many quizzes and exercises. The quizzes are interspersed inside the lectures and need to be answered, though not correctly, to move on. Professor Evans goes over the answer with an explanation. Properly used, these quizzes keep students’ minds engaged and active rather than passive.

The problem sets come after the lecture. Problem sets include multiple choice questions and/or coding assignments. The course allows for the user to code in an online Python editor that enables a student to avoid having to go through a local Python installation. This takes the sometimes painful step of installation away from the process. There is a computerized grading mechanism for student code. It worked but sometimes could be tricked. I don’t feel this is a terrible shortcoming as my take is that most or all of the students are enrolled for their own benefit. Hence, any “cheating” truly is only cheating yourself. The coding assignments did not involve much typing but instead usually demanded thinking computer science-ly. This is where I felt that having some coding experience helps. This type of thinking involves looking at the world differently and requires a bit of practice.

In addition to the course itself, there is a discussion section where students can post questions, comments or offer help. Frankly, I did not take much advantage of this. Other students would post code that they thought did the job particularly well or cleverly, to figure out what was wrong with their code or even where to begin thinking about something. My recollection is that answers appeared quickly; so there is help available when one gets stuck. Plus, all problem sets have included video answers. It is worth noting that Professor Evans and the other instructors do respond in the forums.

What makes this course particularly good is that it is not teaching a programming language but does teach Computer Science. This is not the same as teaching a programming language although CS is about programming but in a more global, holistic way. The difference may seem small but a reasonable analogy would be the skill of say, steel-working vs. civil engineering. If you are going to design and build a bridge, it will involve a theory of what keeps bridges from falling (the theory or CS) and the actual building of the steel framework (programming). A good designer will understand the programming and be able to choose the correct tools for the job, i.e., the best environment and programming language. But the design or algorithm, should transcend the particular tool. In fact, computer scientists create programming languages for particular (or general) problem types.

Many quizzes involve what appear to be trick questions. These are not meant to be tricky but to point out how some of the details of the Python interpreter influence code behavior. It provides examples for how to think about debugging programs and the types of things that can go wrong. It would be helpful had the course explicitly noted that other programming languages handle things slightly differently and therefore it is useful to understand the details. Ultimately a programmer will find out the details, it is just a question of find out the easy way or the hard way. One section that is very helpful to beginners was the section that covered how to learn new techniques and/or libraries.

Professor Evans gives the three main themes of Computer Science: abstraction, universality and recursion. My CS professor from school would add that CS is about managing complexity. These are discussed in terms of solving actual problems and that makes it extremely relevant to the student. And I think it is important to rise above the details of programming and get an idea of how to think about problems using data structures and algorithms. This manner of thinking is beneficial beyond computer science – it has served me well in thinking about economics and finance.


The stated goal is that the student will “have learned key concepts in computer science and enough programming to be able to write Python programs.” The course does an excellent job of doing this. As I stated before, I recommend at least some coding experience. The video lectures, with the support of the discussion forums, provide a clear exposition of the material in an easy-going manner. Professor Evans covers the key concepts for an introduction to computer science and to the fundamental tools to get programming jobs done. The quizzes and problem sets are what bind the whole experience together. Watching lectures alone cannot teach; learning is about doing. There is plenty of both to be had in Udacity’s CS101 class.

Book Review: Volatility Trading

This is a book about trading volatility professionally. The target audience is those who already have some familiarity with options theory and are ready to use math in their market analysis. One does not need to be a professional options trader but the book instructs a professional attitude toward trading.

It accomplishes two goals very well. First, it delivers a set of knowledge about volatility markets. Second, it delivers the message that trading is hard and demands deliberate focus. So while the actual material is on the volatility markets, the theme of the book is that one should use all of tools at our disposal, use a systematic methodology and target continuous improvement. In short, if you wish to learn about volatility trading or, in general, how to approach trading of any sort as a business, you will benefit greatly from Volatility Trading. This is not idle talk. I ran an options trading desk and purchased a copy for each person working for me.

Despite having a PhD (yes, despite) and including the relevant math, Sinclair is clear and overwhelmingly practical. Even for those that already trade volatility products, as I do, there is much value in the material. He does much work for us, including:

1)      Reading a vast amount of academic and industry research, as well as conducting his own; then highlighting the most valuable nuggets.

2)      He puts into clear prose and practical context those most valuable results. For example, the explanation of why leveraged ETF’s erode in value but are not “destined to go to zero” was illustrated nicely with text that complemented the math. Math is necessary and adds to the explanation.

3)      He puts the theory into the context of practical reality. Although this is most obvious when he discusses the shortcomings but utility of the Black-Scholes framework, it comes through elsewhere such as under what circumstances higher efficiency estimators fail back into the daily close-close estimator.

That said, there is subject matter relevant to volatility trading that is not covered but still important to volatility trading. For example, volatility options (VIX options) or dealing with portfolios of options. The subjects covered are, for the most part, covered well – the section on behavioral finance is, understandably, given only a quick run through. Even in this section, the practical nature of Sinclair’s outlook shows through as he discusses that we should mind our own foibles for mistakes but also look to those same foibles for sources of potential edge.

From the perspective of trading as a professional, Sinclair bangs the drum on:

1)      Quantify what you can.

2)      Remember #1, but using non-quantifiable information is valuable and, often, necessary.

3)      Understanding that trading, particularly options trading that is so path dependent, is about playing the probabilities. Keep the long run in mind.

4)      Trading requires having an edge; to best exploit it, understand it and the tools you use.

5)      Emphasize the practical, particularly developing a process.

I cannot provide a review of the web site as I have not yet used it.

I will conclude with Sinclair’s own words: “Successful trading is about developing a consistent process.” Knowledge is essential but insufficient. I think that is what Euan Sinclair would hope the reader came away with and kept. Everything else can be researched – and much of it can be found in “Volatility Trading.” I find it very valuable and highly recommend it.

If you enter Amazon through my site (the image above), I will get a small commission. I am experimenting with this as a source of revenue for my blog. Hopefully reviewing the book (and my other posts) added some value. If so, great. Incidentally, the commission is already built into Amazon prices and the price stays the same whether you enter from my site or not.