Skip to main content

The library helps analysts to investigate portfolio and stock market.

Project description

WYN-PM 📈💼

Welcome to the wyn-pm library, an official library from W.Y.N. Associates, LLC FinTech branch. This library provides tools for stock analysis, efficient portfolio generation, and training sequential neural networks for financial data.

Check out the videos below for detailed demonstrations:

Video 1: An Introduction Video 2: Momentum Strategy
YouTube Video YouTube Video

Links

Installation 🚀

To install the library, use the following command:

! pip install wyn-pm

Please feel free to use this jupyter notebook as reference.

Stock Analyzer: Plot Buy/Sell Signal 📊

Analyze stocks and plot buy/sell signals using the MACD indicator.

Example Usage:

from wyn_pm.stock_analyzer import *

# Initialize stock analysis for a given ticker
stock_analysis = StockAnalysis(ticker="AAPL")

# Fetch stock data
stock_analysis.fetch_data()

# Calculate MACD
stock_analysis.calculate_macd()

# Find crossovers to generate buy/sell signals
stock_analysis.find_crossovers(bullish_threshold=-2, bearish_threshold=2)

# Create and show the plot
fig = stock_analysis.create_fig()
fig.show()

Efficient Portfolio: Generate Optimal Weights 💹

Create an optimal portfolio by generating efficient weights for a list of stock tickers.

Example Usage:

from wyn_pm.efficient_portfolio import *

# Initialize portfolio with given tickers and date range
portfolio = EfficientPortfolio(tickers=["AAPL", "MSFT", "GOOGL"], start_date="2020-01-01", end_date="2022-01-01", interval="1d")

# Download stock data
stock_data = portfolio.download_stock_data()

# Calculate portfolio returns
portfolio_returns = portfolio.create_portfolio_and_calculate_returns(top_n=5)

# Calculate mean returns and covariance matrix
mean_returns = stock_data.pct_change().mean()
cov_matrix = stock_data.pct_change().cov()

# Define the number of portfolios to simulate and the risk-free rate
num_portfolios = 10000
risk_free_rate = 0.01

# Display the efficient frontier with randomly generated portfolios
fig, details = portfolio.display_simulated_ef_with_random(mean_returns.values, cov_matrix.values, num_portfolios, risk_free_rate)
fig.show()

# Print details of the max Sharpe and min volatility portfolios
print(details)

Momentum Strategy: Generate Portfolio Arbitrage

Create a portfolio based on the famous momentum strateg in asset pricing given a list of stock tickers.

Example Usage:

# Acquire data for the "Momentum Strategy":
portfolio = EfficientPortfolio(tickers=["AAPL", "MSFT", "GOOGL", "NFLX", "IBM"], start_date="2017-01-01", end_date="2024-07-01", interval="1mo")
stock_data = portfolio.download_stock_data()
portfolio_returns = portfolio.create_portfolio_and_calculate_returns(top_n=3)

# Plot
fig = portfolio.plot_portfolio_performance(portfolio_returns, height_of_graph=600)
fig.show()

Training Sequential Neural Networks: Stock Prediction 🤖📈

Train various neural network models on stock data and perform Monte Carlo simulations.

Example Usage:

from wyn_pm.trainer import *

# Example usage:
stock_modeling = StockModeling()

# Training: ~ 9 min on CPU
forecast_results, mc_figure = stock_modeling.forecast_and_plot(stock="AAPL", start_date="2020-01-01", end_date="2023-01-01", look_back=50, num_of_epochs=10, n_futures=365, n_samples=1000, verbose_style=1)

# Results
print(forecast_results)
mc_figure.show()

Technical Discussion of the Momentum Strategy

Monthly Momentum Factor (MOM)

The Monthly Momentum Factor (MOM) can be calculated by subtracting the equal-weighted average of the lowest performing firms from the equal-weighted average of the highest performing firms, lagged one month (Carhart, 1997). A stock exhibits momentum if its prior 12-month average of returns is positive. Similar to the three-factor model, the momentum factor is defined by a self-financing portfolio of (long positive momentum) + (short negative momentum). Momentum strategies remain popular in financial markets, and financial analysts often incorporate the 52-week price high/low in their Buy/Sell recommendations.

  • Carhart, M. M. (1997). On persistence in mutual fund performance. The Journal of finance, 52(1), 57-82. link

Four-Factor Model

The four-factor model is commonly used for active management and mutual fund evaluation. Three commonly used methods to adjust a mutual fund's returns for risk are:

1. Market Model:

$$ EXR_t = \alpha^J + \beta_{mkt} * EXMKT_t + \epsilon_t $$ The intercept in this model is referred to as "Jensen's alpha".

  • The Valuation of Risk Assets and the Selection of Risky Investments in Stock Portfolios and Capital Budgets, link
  • Capital Asset Prices: A Theory of Market Equilibrium under Conditions of Risk, link

2. Fama–French Three-Factor Model:

$$ EXR_t = \alpha^{FF} + \beta_{mkt} * EXMKT_t + \beta_{HML} * HML_t + \beta_{SMB} * SMB_t + \epsilon_t $$ The intercept in this model is referred to as the "three-factor alpha".

  • Common risk factors in the returns on stocks and bonds, link
  • The Capital Asset Pricing Model: Theory and Evidence, link
  • The other side of value: The gross profitability premium, link
  • A five-factor asset pricing model, link

3. Carhart Four-Factor Model:

$$ EXR_t = \alpha^c + \beta_{mkt} * EXMKT_t + \beta_{HML} * HML_t + \beta_{SMB} * SMB_t + \beta_{UMD} * UMD_t + \epsilon_t $$

The intercept in this model is referred to as the "four-factor alpha". EXR_t is the monthly return to the asset of concern in excess of the monthly t-bill rate. These models are used to adjust for risk by regressing the excess returns of the asset on an intercept (the alpha) and some factors on the right-hand side of the equation that attempt to control for market-wide risk factors. The right-hand side risk factors include the monthly return of the CRSP value-weighted index less the risk-free rate (EXMKT_t), monthly premium of the book-to-market factor (HML_t), monthly premium of the size factor (SMB_t), and the monthly premium on winners minus losers (UMD_t) from Fama-French (1993) and Carhart (1997).

A fund manager demonstrates forecasting ability when their fund has a positive and statistically significant alpha.

SMB is a zero-investment portfolio that is long on small capitalization (cap) stocks and short on big-cap stocks. Similarly, HML is a zero-investment portfolio that is long on high book-to-market (B/M) stocks and short on low B/M stocks, and UMD is a zero-cost portfolio that is long previous 12-month return winners and short previous 12-month loser stocks.


Enjoy analyzing stocks, creating efficient portfolios, and training neural networks with wyn-pm! If you have any questions, feel free to reach out.

Happy coding! 🖥️✨

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wyn_pm-0.2.10.tar.gz (15.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wyn_pm-0.2.10-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

Details for the file wyn_pm-0.2.10.tar.gz.

File metadata

  • Download URL: wyn_pm-0.2.10.tar.gz
  • Upload date:
  • Size: 15.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.9.13 Windows/10

File hashes

Hashes for wyn_pm-0.2.10.tar.gz
Algorithm Hash digest
SHA256 70db6a914291d55fd791c829e6278cc2fab4ed118da9df565f278c4539d9dbc2
MD5 4e0780360c0be645220d7d06e2c82877
BLAKE2b-256 056a94cffa3f5c2922fd00e1f6bfa4f5e3ab2370b0196f20bf3cd7d3589045dc

See more details on using hashes here.

File details

Details for the file wyn_pm-0.2.10-py3-none-any.whl.

File metadata

  • Download URL: wyn_pm-0.2.10-py3-none-any.whl
  • Upload date:
  • Size: 14.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.9.13 Windows/10

File hashes

Hashes for wyn_pm-0.2.10-py3-none-any.whl
Algorithm Hash digest
SHA256 3fffb88982aec4e1f2edd5d7d9bb92d4c306fe6229500157add91fa32bc6194f
MD5 f51e96aed3732776a926ebbedabfab5a
BLAKE2b-256 848042a3b6c0b016c36da54c6326a05f386852d70b5e85a798eac685d0497982

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page