Posts

Martingale Strategy In this post, I will simulate a martingale strategy in Roulette’s context to highlight the potential risks associated with this strategy. Double down! That’s essentially the essence of it. Here’s a simple explanation of the strategy, The croupier spins the ball. If it’s red you win the amount you bet, black you lose the same amount If you win, you continue to bet the same amount (same as your 1st bet amount) If you lose, you double your bet amount And if your accumulated winnings hits a certain amount, you stop and leave the casino So how would the strategy fare?

CONTINUE READING

Often, certain projects or classes involving python require a set of modules/packages for the code to work. 1 solution is to create a Python Environment dedicated to that project. First set up a folder, and include a .yml file with the specific modules and environment that you wish to install. Here is an example (env.yml), name: env channels: !!python/tuple - !!python/unicode 'defaults' dependencies: - nb_conda=2.2.0=py27_0 - python=2.7.13=0 - cycler=0.10.0 - functools32=3.

CONTINUE READING

Translating Ernest Chan Kalman Filter Strategy Matlab and Python Code Into R I’m really intrigued by Ernest Chan’s approach in Quant Trading. Often in the retail trading space, what ‘gurus’ preach often sounds really dubious. But Ernest Chan is different. He’s sincere, down-to-earth and earnest (meant to be a pun here). In my first month of deploying algo trading strategies, I focus mainly on mean-reversion strategies - paricularly amongst pairs.

CONTINUE READING

How I Find Country Pairs for Mean Reversion Strategy As mentioned in my previous post here, the first step for a mean reversion strategy is to conduct some background quantitative research. Step 1 First, I use a pair trading function to loop across 800+ country pairs (created from combination function), pair_trading = function(stock1, stock2, trade_amount, finance_rates, start_date, end_date, prop_train, enter_z_score, exit_z_score){ ## More codes here ## Return this key_info = list( ticker = c(stock1, stock2), start_date = start_date, trade_table = data_trade, sharpe = c(sharpeRatioTrainset, sharpeRatioTestset), half_life = half_life, profits = data_trade_stats, max_drawdown = c(table.

CONTINUE READING

Research to Production Pipeline for Mean Reversion

Here is a high level overview of something that I’m working on.

I’ve been grappling with the finite state automata Event Driven Computing transitions and I kinda sorted it out for production use.

/post/img/research_to_production.png

CONTINUE READING

In these 2 weeks, I’ll deploy my pair trading algo strategy into my server. I modified the code below from a renowned quant trader, Ernest Chan. The basic idea is to find z-scores through moving average & moving SD of spread. If it’s more than absolute of z-score, I will either short or long the spread depending on the polarity. In the backtesting below (using a pair of silver ETFs as an example), I assumed a hypothetical amount of 10,000 dollars per trade.

CONTINUE READING

For what’s worth, here is a summary of what I went through for my Georgia Tech Computer Science Msc Computational Photography module.

And it’s really painful but rewarding!

/post/img/CP_1.png /post/img/CP_2.png /post/img/CP_3.png /post/img/CP_4.png /post/img/CP_5.png /post/img/CP_6.png /post/img/CP_7.png /post/img/CP_8.png /post/img/CP_9.png

CONTINUE READING

Colorization The following is a high level project pipeline of my Computational Photography Colorization report. The project scope involves minimizing a quadratic cost function. An artist would only need to make a few colour scribble on a grey photograph and the algorithm will automatically populate the entire photograph with the associated colours. 1.Input: I first read in the image using imread function. 2.Find the difference: Next I compute the difference between the marked and grey scale image.

CONTINUE READING

Project that I will be working in 2018-2019

/post/img/mvp_algo_trading.png

CONTINUE READING

Snippet of my Seam Carving Report from my Msc Computer Science Georgia Tech’s Computational Photography module Besides removing of streams, we can also add streams. We identify k streams for removal and duplicate by averaging the left and right neighbours. The computation of these averages is done by convolving the following matrix with the images’ colour channels. kernel = np.array([[0, 0, 0], [0.5, 0, 0.5], [0, 0, 0]]) In the implementation of my scaling_up algorithm, I first remove k streams (depending on ratio set by user) and recorded the coordinates and cumulative energy values of the original picture in each removal.

CONTINUE READING