Hot off the Press!

The Little Book of Fundamental Market Indicators

My New Book: "The Little Book of Fundamental Analysis: Hands-On Market Analysis with Python" is Out!

Grow Your Web Brand, Visibility & Traffic Organically

The Little Book of Fundamental Market Indicators

5 Years of amunategui.github.Io and the Lessons I Learned from Growing My Online Community from the Ground Up

Do You Know How Often The Markets Go Up? Hands-On Market Analysis with Python


Lets get back to the basics of market analysis and quantify how many times the markets go up, down and for how much. Its not always intuitive, and whether you are a trader or not, you need to know this. Casino math:


In [218]:
from IPython.display import Image

Fundamental and Technical Indicators - Hands-On Market Analysis

Get the book "The Little Book of Fundamental Market Indicators":

More at:

So, How Often Does the Market Go Up?

Download the S&P500 index (^GSPC):

Download the Russell 2000 (^RUT) - The Russell 2000 index is an index measuring the performance of approximately 2,000 smallest-cap American companies in the Russell 3000:^RUT

In [180]:
%matplotlib inline
import matplotlib
import matplotlib.pyplot as plt
import io, base64, os, json, re 
import pandas as pd
import numpy as np
import datetime
import warnings

Load Historical Data

In [182]:
sp500_df = pd.read_csv('^GSPC.csv')
sp500_df['Date'] = pd.to_datetime(sp500_df['Date'])
sp500_df = sp500_df[['Date', 'Adj Close']]
sp500_df.columns = ['Date', 'SP500_close']
Date SP500_close
17463 2019-05-30 2788.860107
17464 2019-05-31 2752.060059
17465 2019-06-03 2744.449951
17466 2019-06-04 2803.270020
17467 2019-06-05 2826.149902
In [183]:
Date SP500_close
0 1950-01-03 16.66
1 1950-01-04 16.85
2 1950-01-05 16.93
3 1950-01-06 16.98
4 1950-01-09 17.08
In [184]:
rus2000_df = pd.read_csv('^RUT.csv')
rus2000_df['Date'] = pd.to_datetime(rus2000_df['Date'])
rus2000_df = rus2000_df[['Date', 'Adj Close']]
rus2000_df.columns = ['Date', 'RUS2000_close']
Date RUS2000_close
7993 2019-05-30 1485.530029
7994 2019-05-31 1465.489990
7995 2019-06-03 1469.979980
7996 2019-06-04 1508.560059
7997 2019-06-05 1506.790039
In [185]:
Date RUS2000_close
0 1987-09-10 168.970001
1 1987-09-11 170.539993
2 1987-09-14 170.429993
3 1987-09-15 169.199997
4 1987-09-16 168.919998

Simple Visualization using the Adjusted Close

In [186]:
fig, ax = plt.subplots(figsize=(16, 8))
plt.plot(sp500_df['Date'], sp500_df['SP500_close'], color='blue')
plt.title('S&P 500')
In [187]:
fig, ax = plt.subplots(figsize=(16, 8))
plt.plot(rus2000_df['Date'], rus2000_df['RUS2000_close'], color='blue')
plt.title('Russell 2000')

Let's count up days

In [189]:
sp500_df['Previous_Close'] = sp500_df['SP500_close'].shift(1) 
Date SP500_close Previous_Close
0 1950-01-03 16.66 NaN
1 1950-01-04 16.85 16.66
2 1950-01-05 16.93 16.85
3 1950-01-06 16.98 16.93
4 1950-01-09 17.08 16.98
In [190]:
# drop NAs
sp500_df = sp500_df.dropna(axis=0)
Date SP500_close Previous_Close
1 1950-01-04 16.850000 16.66
2 1950-01-05 16.930000 16.85
3 1950-01-06 16.980000 16.93
4 1950-01-09 17.080000 16.98
5 1950-01-10 17.030001 17.08
In [191]:
sp500_df['Price_Diff'] = sp500_df['SP500_close'] - sp500_df['Previous_Close']
sp500_df['Is_Up_Day'] = np.where(sp500_df['SP500_close'] > sp500_df['Previous_Close'], 1, 0)
Date SP500_close Previous_Close Price_Diff Is_Up_Day
1 1950-01-04 16.850000 16.66 0.190000 1
2 1950-01-05 16.930000 16.85 0.080000 1
3 1950-01-06 16.980000 16.93 0.050000 1
4 1950-01-09 17.080000 16.98 0.100000 1
5 1950-01-10 17.030001 17.08 -0.049999 0
In [192]:
print('Up days:', np.sum(sp500_df['Is_Up_Day']), 'out of:', len(sp500_df))
Up days: 9253 out of: 17467
In [64]:
print(np.sum(sp500_df['Is_Up_Day']==1) / len(sp500_df))
In [65]:
print(np.sum(sp500_df['Is_Up_Day']==0) / len(sp500_df))

Track up versus down dollar moves

In [193]:
np.sum(sp500_df[sp500_df['Is_Up_Day']== 1]['Price_Diff'])
In [70]:
np.sum(sp500_df[sp500_df['Is_Up_Day']== 0]['Price_Diff'])
In [102]:
# let's check our math
37646.364575 -  34836.874673

Let's create our own simulation

Casino Mathematics

University of Nevada, Las Vegas

In [214]:
from random import randint

up_down_days = []
for x in range(0,1000000):
    up_down_days.append(1 if randint(1, 100) <= 52 else -1)
[-1, 1, 1, -1, -1, 1, -1, -1, 1, -1]
In [215]:
In [216]:
array([   -1,     0,     1, ..., 39838, 39839, 39840])
In [217]:
plt.plot(np.array(up_down_days).cumsum() )
[<matplotlib.lines.Line2D at 0x13b47c710>]

Show Notes

(pardon typos and formatting -
these are the notes I use to make the videos)

Lets get back to the basics of market analysis and quantify how many times the markets go up, down and for how much. Its not always intuitive, and whether you are a trader or not, you need to know this. Casino math: MORE: Blog or code: Signup for my newsletter and more: Connect on Twitter: My books on Amazon: The Little Book of Fundamental Indicators: Hands-On Market Analysis with Python: Find Your Market Bearings with Python, Jupyter Notebooks, and Freely Available Data: Monetizing Machine Learning: Quickly Turn Python ML Ideas into Web Applications on the Serverless Cloud: Grow Your Web Brand, Visibility & Traffic Organically: 5 Years of amunategui.github.Io and the Lessons I Learned from Growing My Online Community from the Ground Up: Fringe Tactics - Finding Motivation in Unusual Places: Alternative Ways of Coaxing Motivation Using Raw Inspiration, Fear, and In-Your-Face Logic Create Income Streams with Online Classes: Design Classes That Generate Long-Term Revenue: Defense Against The Dark Digital Attacks: How to Protect Your Identity and Workflow in 2019: Transcript Hello Youtube friends, If you had to trade blindfolded? Would you know what to do? Well, if you look at any chart of a big market index, what do you see? Lets get back to the basics, quantify how many time the markets go up, down and for how much. Its not always intuitive, and whether you are a trader or not, you need to know this. Welcome to the ViralML show and another hands-on, market analysis with Python. My name is Manuel Amunategui and this talk will be filed under finance. please subscribe to the channel and to the newsletter. Pause Imagine that Invited you on a journey through time and I asked you to place a trade, long or short on this chart, the caveat being you will be blindfolded, so what would you do? if you had no clue about anything, going long would be the safe strategy. But what about this harder question, what is the percentage or ratio that the markets go up? Yes, not so easy. By simply looking at this S&P500 chart, Id say 2/3s of the time. I can practically hear the statisticians and seasoned traders calling me an idiot and dead wrong. 2/3s would be like 66% percent of the time - boy am I off!!! Lets quantify how many times the S&P 500 had up-days versus down-days and for how much. This is a critical market foundation we all need to have. Its basic probabilities, it the basis of our financial markets, the financial system, the edge market----makers and casion have over regular traders and why thinking in the long term is a safer bet. As always, I like to plug my book at the end of the show - if you like this raw, no-nonsense look at the markets through fundamental indicators, this book is for you. I published it recently on Amazon. put my first and last name in the Amazon search bar you will find it there. In it, I cover my favorite market indicators, like the S&P500, the CPI, the Case-Shiller index, the VIX, unemployment and a whole lot more. dont forget to give this video some thumbs up! CATEGORY:Finance HASCODE:ViralML-How-Often-Do-Markets-Go-Up.html