- 🔭 Ready to learn any technology to solve real life problems
- 🔭 Worked as a quantitative research analyst and proprietary trader in Hong Kong
- 🔭 Former freelance financial writer of Apple Daily Hong Kong
- 🌱 My scope of interest includes:
- ⚡web3, blockchain, web dev, cloud
- ⚡quantitative finance, algorithmic trading, machine learning
- ⚡basically anything about programming or investment
- 📫 How to reach me: quantum.snowball@gmail.com
A brief description about some of my work done in the past. Currently this repo contains everything I've ever developed, but in the future I may manage them into different repos.
Apps • Web Dev • Apple Daily • Research • Data Science • dotfiles
When I need a software but I can't find one really suitable, choose one which is pretty close to my needs, then fork it and modify it. Well, if none of them are even close, I will build it from scratch.
-
btbox - a simple and easy to use trading strategy backtesting library written in Python
When you have a trading idea in your mind, but you are not sure if it is going to work? Most of the time you want to backtest your idea first using historical market data before risking your real money. Usually this can be done using a spreadsheet, but soon you find that spreadsheet only works for simple strategies. Also you will need a robust way to measure 'how-good' a strategy by calculate its performance metrics, such as
Sharpe Ratio
orMax Drawdown
. Well, you have come to the right place!btbox
is here to provide a robust solution for strategy backtesting. It is most suitable to use in a Jupyter notebook. Most usage cases and results can be found in trading-lab. Or go to the tests folder of the dev branch for more reference. This library is still under active development and the API may subject to changes. -
Tabman - a telescope.nvim plugin
If you use Neovim as an IDE, and mainly use telescope.nvim as a file picker, then you may find my plugin to be the long wanted missing tabpages picker.
-
link-finder - a Chrome extension that can help you capture web traffic urls
Normally, you use the Chrome DevTool to monitor network traffic. But some website may stop running when the DevTool is opened, so I write a chrome extension to query the chorme API for all network traffic, avoiding the DevTool altogether.
-
waylandmap - a key mapping app for Linux that works under X11 or Wayland
This project is distributed as waylandmap on PyPI.org. The best use case I found for myself is to map
RightAlt
+hjkl
to be the arrow keys by makingRightAlt
to be a 3rd-level shift key. -
opensubtitles-dl - you can search opensubtitle.org directly in the terminal
This project is distributed as opensubtitles-dl on PyPI.org.
-
wide-lihkg-userscript - sideload custom CSS into lihkg
This project is distributed as Wide LIHKG on greasyfork.org.
Web dev is easy but also can be difficult. It is easy when you have a boilerplate to start with, but can be difficult when you need to build everything from scratch. I have built some starter projects, while trying to include some most common web dev technologies into them.
-
Furigana - a handy Japanese learning and translation app, featuring Furigana, Romaji and English/Chinese translation in a single interface
Furigana is an easy to use interactive web app aims to help you learn Japanese. It is currently hosting at furigana.quantumsnowball.vercel.app as a PWA. When you copy and paste a Japanese text, the app should show the most essential parts to read, pronounce and understand the language. When you edit the source, the app will show the updated Furigana, Romaji together with English/Chinese translation. You can also save the source and translation into favorites, then you can restore to view them later. Feel free to build your own Japanese learning notebook by saving common phrases and sentences to favorite, and backup/restore your notebook by the import/export feature. Happy learning Japanese!
-
Bayes - a probability playground showcasing the Bayes Theorem
Bayes is a simple interactive web app aim to provide a playground for easy understanding of the Bayes Theorem. It is now hosting on bayes.quantumsnowball.vercel.app as a progressive web app. You can edit, save and restore variety of different hypothesis and evidence combinations to come up to a posterior probability. Please feel free to install it on your phone as a handy assistant for solving probability problem.
-
Quotes - a beautiful mobile-friendly react app, fetching famous quotes by celebrities
This project has been built and hosting at quotes.quantumsnowball.vercel.app. It is mobile-friendly, can be installed as a PWA using mobile Chrome browser.
-
Todos - a todos-list app with login and OAuth2 authentication based on JWT
This project is a rewrite serverless version of the former MERN boilerplate project todos-domain--serverful. Now the project is in production and deployed as todos.quantumsnowball.vercel.app. The main reason to rewrite this app is to convert the backend to serverless functions. Instead of relying on centralized servers, being serverless means distributing the backend api endpoints into pieces and run them as stateless functions, providing much bigger scaling potential for any apps. The rewrite version also make use of
Next.js
implementing server-side rendering (SSR), further enhancing the app experience.Todos is a todo-list app with a authentication system using React and JWT. User can register an account, login to his account, and then add todo checklist items. The state should be saved into a database and user should be able to authenticate using JWT token and get back the checklist. You can also login using a Google account through OAuth2.0.
Currently only the serverless version of this app is in production. Both serverless and serverful version of this app are ready-to-use boilerplates for starter login app. The serverless version can be easily deployed to cloud platforms like
Vercel
, while the serverful version needs a dedicated Node server to host the express app or its docker container. -
github.io - github user page repo, holding the source code of the current website
This project is the source code for my github user page. The production version is currently hosting at quantumsnowball.github.io. The content of this website is based on the git submodule github-profile-data, which is also the content generator of my github profile page.
-
js_todo_list_app - a pure javascript todos starter
Sometimes you just want to code something using pure js, just to learn the basics.
These are all my source code covering my reserach when writing for Apple Daily Hong Kong.
I write code to research the financial market all the time.
-
A Jupyter notebook collection of strategy backtest results using btbox. View these notebooks using nbviewer.org. Or visit the repository for source code.
-
Test out common trading indicators for moving-average, relative-strength, vwap.
-
Try strategies relying on market sentiment level in pnl-ratio.
-
-
Do you think the USD-HKD peg is gonna hold? Here is an indicator you need to pay attention to.
-
A valuation model for Terra 2.0 before the launch of the new LUNA token.
-
When you provide liquidity to a liquidity pool to earn fees and incentives, you capital will face impermanent loss, but by how much? Here is a simulation.
-
How does a DEX like Uniswap works? It is built on automaatic market makers, which is very different from the traditional stock market. This jupyter notebook simulates the Constant Product Invariant Curve to better understand how it works.
I have done some data science and machine learning research projects in the past. Some interesting project are listed here as well.
-
toy-openai-gym-collections - all about deep reinforcement learning
Try to use use deep reinforcement learning models to play computer games! It was not easy at all.
-
These are very common machine learning and deep learning datasets.
-
To solve any probability problems, you can either use maths to solve it by first principal, or use programming to solve it by simulation.
I am using these configs on Linux or Mac terminal.