Skip to content

Instantly share code, notes, and snippets.

@catslovedata
Created April 10, 2023 15:11
Show Gist options
  • Save catslovedata/5f6f9c2fa2b60696e589c757230ebd8b to your computer and use it in GitHub Desktop.
Save catslovedata/5f6f9c2fa2b60696e589c757230ebd8b to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 440,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.font_manager as fm\n",
"from datetime import datetime, timedelta\n",
"\n",
"# Set the seed for reproducibility\n",
"np.random.seed(300)\n",
"\n",
"# Dates\n",
"start_date = datetime(2023, 1, 1)\n",
"end_date = datetime(2023, 1, 31)\n",
"num_days = (end_date - start_date).days + 1\n",
"\n",
"# Starting stock price\n",
"start_price = 100\n",
"\n",
"# Generate 31 random percentage changes in price\n",
"daily_changes = np.random.normal(0, 0.03, size=num_days+1)\n",
"high_values = np.random.normal(0, 0.5, size=num_days)\n",
"low_values = np.random.normal(0, 0.5, size=num_days)\n",
"\n",
"# Calculate the daily prices\n",
"daily_prices = start_price * np.cumprod(1 + daily_changes)\n",
"\n",
"open_prices = daily_prices[:-1]\n",
"close_prices = daily_prices[1:]\n",
"high_prices = np.maximum(open_prices, close_prices) + abs(high_values)\n",
"low_prices = np.minimum(open_prices, close_prices) - abs(low_values)\n",
"volume = np.random.normal(1000000, 500000, 31)\n",
"\n",
"# Create a DataFrame to store the simulated data\n",
"data = pd.DataFrame({\n",
" 'Open': open_prices,\n",
" 'High': high_prices,\n",
" 'Low': low_prices,\n",
" 'Close': close_prices,\n",
" 'Volume': volume\n",
"})\n",
"\n",
"data[\"python_date\"] = [start_date.date() + timedelta(days=x) for x in range(num_days)]"
]
},
{
"cell_type": "code",
"execution_count": 436,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 800x600 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Set some color constants\n",
"\n",
"COLOR_RED = '#dc322f'\n",
"COLOR_GREEN = '#2aa198'\n",
"COLOR_VLINES = '#073642'\n",
"COLOR_VOLUME = '#268bd2'\n",
"\n",
"COLOR_AXES = '#657b83'\n",
"COLOR_TITLE = '#002b36'\n",
"COLOR_BACKGROUND = '#f6f6f6'\n",
"\n",
"fig = plt.figure(figsize=(8, 6), facecolor = COLOR_BACKGROUND)\n",
"gs = fig.add_gridspec(2, 1, height_ratios=(3, 1),\n",
" bottom=0.1, top=0.9,\n",
" hspace=0.05\n",
" )\n",
"\n",
"# Add the prices plot\n",
"\n",
"ax = fig.add_subplot(gs[0, 0])\n",
"ax.bar(data['python_date'],\n",
" bottom=data['Open'],\n",
" height=data['Close']-data['Open'],\n",
" color=[COLOR_RED if c < o else COLOR_GREEN for c, o in zip(data['Close'], data['Open'])],\n",
" alpha=0.9,\n",
" zorder=3,\n",
" width=0.85\n",
" )\n",
"for i in range(len(data)):\n",
" ax.vlines(x=data['python_date'][i], ymin=data['Low'][i], ymax=data['High'][i], color=COLOR_VLINES, zorder=2, linewidth=0.7)\n",
"ax.grid(axis='y', color='#eee', zorder=-1)\n",
"ax.set_facecolor(COLOR_BACKGROUND)\n",
"\n",
"# Add the volumes plot\n",
"\n",
"ax2 = fig.add_subplot(gs[1, 0], sharex=ax)\n",
"ax2.bar(data['python_date'], data['Volume'], width=1.00, color=COLOR_VOLUME, alpha=0.5)\n",
"ax2.set_facecolor(COLOR_BACKGROUND)\n",
"\n",
"# Formatting\n",
"\n",
"# Remove borders\n",
"for s in (ax.spines['top'], ax.spines['right'], ax.spines['bottom'], ax.spines['left'], ax2.spines['top'], ax2.spines['right'], ax2.spines['bottom'], ax2.spines['left']):\n",
" s.set_visible(False)\n",
"\n",
"# Force all the dates to show on the x axis\n",
"ax2.set_xticks(data['python_date'])\n",
"\n",
"# Remove x ticks and labels from the prices chart, remove ticks from the y axes\n",
"ax.tick_params(axis='x', labelbottom=False, bottom=False)\n",
"ax2.tick_params(axis='x', bottom=True, rotation=90, colors='#eee')\n",
"ax.tick_params(axis='y', left=False)\n",
"ax2.tick_params(axis='y', left=False)\n",
"\n",
"\n",
"# Don't use \"scientific\" notation (1e6) for the labels\n",
"ax2.ticklabel_format(style='plain', axis='y')\n",
"\n",
"# Format the ticks and values\n",
"\n",
"for tick in (ax.get_yticklabels() + ax2.get_yticklabels() + ax2.get_xticklabels()):\n",
" tick.set_fontname('Consolas')\n",
" tick.set_fontsize(10)\n",
" tick.set_color(COLOR_AXES)\n",
"ax.set_ylabel('Price', font='Consolas', fontsize=12, color=COLOR_AXES)\n",
"ax2.set_ylabel ('Volume', font='Consolas', fontsize=12, color=COLOR_AXES)\n",
"\n",
"# Set titles\n",
"\n",
"# Read a font file from disk\n",
"font=fm.FontProperties(fname=\"D:\\Downloads\\Playfair_Display\\static\\PlayfairDisplay-Medium.ttf\")\n",
"plt.suptitle('Price and Volume for\\nFictitious Stock or Crypto Token', fontproperties=font, fontsize=24, color=COLOR_TITLE, y=1.05)\n",
"\n",
"\n",
"\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "newenv2",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.4"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment