I am sharing this with my experience and this is for retail investors. According to my experience , top 3 stock brokers are :

  1. Zerodha
  2. Upstox
  3. Samco Securities

Zerodha is best due to technical superiority,clean UI, lowest brokrages.

  1. lowest brokrages – zero brokrage for delivery . Huge savings
  2. Easy interface.. Anyone will love it. Clean,organized and beautiful
  3. Good intraday margin for quality stocks
  4. Nice Calculator
  5. Nice Backoffice Admin

Cons :

  1. On volatile days, system slows , login errors and some client report unexpected trade executions
  2. Slower response to customer query.
  3. No margin on cash-n-carry delivery trades

Upstox :

Upstox is replicating zerodha model. Backoffice is not just good as Zerodha. Two noticable advantages on Upstox compared to zerodha is –

  1. Upstox started providing 2x margin on delivery trades at rate of 20/50000 excess margin utilized.
  2. API trading and historical data cost is cheaper than zerodha. API trade through upstox is 850 vs 2000 of zerodha. Similar historical data api is 550 vs 2000 of zerodha.

Both upstox and zerodha calculate same day squareoff trades as intraday. This is saving for both. Trader have to pay less transaction tax(STT) and Brokers earn some brokrages( as their delivery model is zero brokrage). Here brokrage is huge savings .

Samco is for long term quality traders. Samco brokrage is bit higher but with Samco Plus, you get upto 4x margin on selected stocks. You need to pay interest on extra margin utilized but in most cases, it is favor of you. Samco earn interest and more brokrage. You can buy more stocks in multi-legged strategy. With investment of re 50000, buy reliance worth 200000 and upon a simple per stock profit of 50, you can earn 4000 ( simple calculation ) with investment of just 50000 and it is without huge risk . You can buy stocks at 1300 and mamage free fall upto 1100 with any worries. When price will move upward after 15-30 days, still income is good. Samco for long term trading.

Get started with python and postgres

import psycopg2
from psycopg2.extras import RealDictCursor
from datetime import date
connection = psycopg2.connect(user = "root",
                              password = "password",
                              host = "localhost",
                              port = "5432",
                              database = "database")
cursor = connection.cursor(cursor_factory=RealDictCursor)
cursor.execute("""select * from table where date(created_at)=%s order by id desc limit 100""",(date.today(),))

Explanation :

First you need to import required module.For postgres database access,psycopg2 is latest and recommended modue. RealDictCursor is required to get data in proper dictinary form otherwise data will arrive without column name( hard to guess for wide tables).

Create a connection object with defined connection string. Prepare query. Execute it with a cursor and fetch result from cursor . Fetching and selections will be discussed in later series.

You can start with it. Use the data to apply different types of visualization or draw useful conclusions using python,postgres,pandas and python visualization library


increase the amount of inotify watchers
To find count of inotify watcher - cat /proc/sys/fs/inotify/max_user_watches
Set a new limit of inotify watchers - echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
Apply systemwide changes - sudo sysctl -p
Recheck and confirm changes - cat /proc/sys/fs/inotify/max_user_watches

(936) 447-6176

Docker help us to reuse softwares without worrying about its environments and sideaffects. You can not easily run 2 versions of software( 2 different version of redis or mongo or mysql or apache etc ) on same host without making any special arrangment. Docker make it portable and reusable. So, do not install , dock it

Some Common cli flags for dockers

  1. -d = demonised mode
  2. -it = interactive mode
  3. -v = attach volume
  4. -p = port mapping from host to docker
  5. –name = naming an instance for quick reference

Now some popular dockers for us.

  1. Couch db server = docker run -d –name couchdb -p 8091-8094:8091-8094 -p 11210:11210 couchbase
  2. Mongo db = docker run –name some-mongo -d mongo
  3. Postgres = docker run –name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
  4. redis db = docker run –name some-redis -d redis
  5. maria-db = docker run –name some-mariadb -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb

I will keep adding more information about docker, container management in coming post.. Switch to better

“VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path”

If you are facing the same problem as stated above, there may be some issue related to path of docker-machine location and virtualbox location.

When docker installed, its path is like /usr/snap/docker and virtualbox is /usr/bin .

Dockermachine is unable to resolve using absolute path. It is searching in relative path( possibly a bug)

I reinstalled docker.io using ( apt install docker.io ) and did custom setup for docker machine for ubuntu 18. Finally I have all executable in nearly same path

I think, this will help you to resolve problem by some extent.

How to remove password from password protected PDFs

Most of time, you get email attatchments as password protected and whenever you open it, password is prompted and you need to find password scheme ( like dob, contact no + dob , social numbers etc)

Trick 1 :

Open the file in chrome. Put password obtained from mail body or sms etc. Now pdf file opened, just print it ( ctrl + f ) and save as pdf. This new pdf file is password free


If you need small amount of data to work with( like development of a alert system to store alert conditions). Using a full fleged db would be painful.

Most of Programming system have sqlite drivers inbuilt, therefore no need to install any other driver.

First you need to install R package for sqlite database


Basic usage of RSQLite package ( code snippet)

> library(DBI) 
> con <- dbConnect(RSQLite::SQLite(), ":memory:")
> con2 <- dbConnect(RSQLite::SQLite(), "mydb.sqlite")
> dbListTables(con) #list the tables character(0)
> dbWriteTable(con, "mtcars", mtcars)
> dbListTables(con) #list the tables
> res <- dbSendQuery(con, "SELECT * FROM mtcars WHERE cyl = 4")
> dbFetch(res)
> dbClearResult(res)


Why you need to use ggplot?

For EDA. We can analyse and overlook information hidden in large amount of data using visualization. EDA also enable to identify trend and transfer summary of information to anyone.

How to use ggplot2 with R.

In this session, I will describe all of them one by one , so everyone including me(this time) get fine tuned application of ggplot for EDA.