# Manipulating Financial Data in Python

## Lesson 1: Reading, slicing and plotting stock data

• Overview of the data we’ll be working with (from Yahoo!)
• Introduction to our primary library: Pandas
• Reading CSV data into Pandas
• Filtering to specific dates
• Plotting

Reading: “Python for Finance”, Chapter 6: Financial time series

## Lesson 2: Working with many stocks at once

• Our target data frame structure
• Reading data for multiple stocks into the structure
• Date slicing
• Symbol slicing
• Plotting
• Normalizing

## Lesson 3: The power of Numpy

• What is Numpy and how it relates to Pandas
• Why is Numpy powerful/important?
• Creating Numpy arrays
• Indexing and slicing Numpy arrays
• Important data processing on Numpy arrays
• Example use with pandas too

Reading: “Python for Finance”, Chapter 4: Data types and structures

## Lesson 4: Statistical analysis of time series

• Gross statistics on dataframes
• Rolling statistics on dataframes
• Plotting a technical indicator (Bollinger Bands)

Reading: “Python for Finance”, Chapter 6: Financial time series

## Lesson 5: Incomplete data

• How incomplete data arises in financial data
• Different approaches to dealing with it

## Lesson 6: Histograms and scatter plots

• Histogram of daily returns
• Compare SPY with XOM
• Scatter plots
• Correlation is not slope!
• Compare SPY vs XOM, with SPY vs GLD scatter plots

Reading: “Python for Finance”, Chapter 5: Data Visualization

## Lesson 7: Sharpe ratio & other portfolio statistics

• Speed up reading data by memoizing
• Average daily return
• Volatility: stddev of daily return (don’t count first day)
• Cumulative return
• Relationship between cumulative and daily
• Sharpe Ratio
• How to model a buy and hold portfolio

## Lesson 8: Optimizers: Building a parameterized model

• What does an optimizer do?
• Syntax of optimizer use
• Problem statement for an optimizer (inputs, outputs, assumptions)
• How to find X that minimizes f(X) with a minimizer
• How to build a parameterized polynomial model from real data using an optimizer

## Lesson 9: Optimizers: How to optimize a portfolio

• What does it mean to “optimize” a portfolio
• Framing the problem for an optimizer
• Constraints on X for an optimizer
• Ranges on X for an optimizer

Reading: “Python for Finance”, Chapter 11: Statistics-Portfolio Optimization