Investment Theory #16: Performance Appraisal

This is the last post in a three-part series on investment performance evaluation. The series explores: 1) Performance Measurement, 2) Performance Attribution, and 3) Performance Appraisal. In other words, how much we made, how much we made compared to a benchmark, and how much we made adjusted for the amount of risk we took on.

Performance evaluation allows us to examine the effectiveness of our investment process. It provides us with a systematic way of judging our decision-making process and improving on it, which is what investment theory is all about.

Today’s post deals with performance appraisal, which is a technique used to compare returns with an account’s corresponding risk. Risk is a hard thing to pin down, but for our purposes we will stick with two typical measures: systemic risk, measured by beta, and total risk, measured by the standard deviation of returns.

Continue reading “Investment Theory #16: Performance Appraisal”

Advertisements

Investment Theory #15: Performance Attribution

This is the second in a three-part series on investment performance evaluation. The series explores: 1) Performance Measurement, 2) Performance Attribution, and 3) Performance Appraisal. In other words, how much we made, how much we made compared to a benchmark, and how much we made adjusted for the amount of risk we took on.

Performance evaluation allows us to examine the effectiveness of our investment process. It provides us with a systematic way of judging our decision-making process and improving on it, which is what investment theory is all about.

Today’s post deals with performance attribution, which is a technique used to explain why a portfolio’s performance differed from a benchmark. That difference is known as active return. For example, if our portfolio returned 10% while the S&P500 returned 20%. Our active return would be -10%.

Continue reading “Investment Theory #15: Performance Attribution”

Programming #8: Knapsack Problem

In computer science, complexity classes help us talk about the difficulty of a problem. If there is a fast way to the find the solution of a problem (search), the problem is said to be Polynomial-time (P). If there is a fast way to check the solution of a problem (verification), the problem is said to be Nondeterministic Polynomial-time (NP).

For example, there exists a fast way to solve the sorting problem and a fast way to verify that the sort is correct. The sorting problem is thus both P and NP. For a problem like finding the solution in Sudoku, it is easy to check if a solution is correct, just see if the numbers add up, but hard to search for the solution in the first place, try every combination? The Sudoku problem NP, until it can otherwise be proved that a quick solution exists.

NP-hard is another class of problems that may or may not be in NP, but if solved would give us the answer to every NP problem. NP-complete is another class of problems that consist of problems that are both NP and NP-hard. Solving an NP-complete problem in a reasonable amount of time would be world-changing. The Knapsack problem is an NP-complete problem.

Continue reading “Programming #8: Knapsack Problem”

Human Nature #18: Reactive Devaluation

Back in 2013, the Washington Post ran a poll asking if people were in favor or opposed to certain policy positions. For example, one question was “Do you favor or oppose creating a way for illegal immigrants already here to become citizens if they meet certain requirements?” About 60% of republicans polled responded in favor.

A different group was asked a similar but slightly different question: “Obama has proposed creating a way for illegal immigrants already here to become citizens if they meet certain requirements. Do you favor or oppose this?” This time, only 39% of republicans polled responded in favor.

Reactive devaluation is a cognitive bias that occurs when a proposal is devalued simply because it comes from another party, especially if it comes from an adversary. In the above example, the value of the proposal depended more on the source of the idea, rather than the idea itself.

Continue reading “Human Nature #18: Reactive Devaluation”

Programming #7: Dynamic Connectivity Problem

To illustrate the basic approach to developing and analyzing algorithms, let’s consider a simple case of the dynamic connectivity problem. Basically, if we are given a list of connections between elements, and then given two elements, we want to return whether or not they are connected. More formally:

Continue reading “Programming #7: Dynamic Connectivity Problem”

Analysis: 2016 Reflections

Another new year is upon us, and it’s that time again to reflect on what went wrong since the last time we reflected on what went wrong. The goal is to relearn the same lesson we relearn every year: Nobody, including myself, has any idea how macroeconomic and sociopolitical events will play out, nor how they will affect the markets.

Continue reading “Analysis: 2016 Reflections”