Skip to content

Instantly share code, notes, and snippets.

@sshojiro
Last active May 9, 2019 17:02
Show Gist options
  • Save sshojiro/7fed028defbb3fc30abd66462aee00c5 to your computer and use it in GitHub Desktop.
Save sshojiro/7fed028defbb3fc30abd66462aee00c5 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Prediction of Stock Price\n",
"\n",
"Pursue better loss function to acquire a plausable predictive model"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pymc as pm\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Stock returns loss if true value = 0.05, -0.02')"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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TZy6ILhyBLwumZQyD/ezl05W/XGUmKNphaTWXBNpR2HvCvt2aP6BfGWNuLg42rVrx6RJkwgKCmL06NG2koKfnx8zZ87kxhtv5KuvvuLgwYMMHDiQLl260KtXL/bt2wdAbGwsYWFhhIaG8uyzz+a6do4zblZWFk888QSBgYEEBQXxzjvv8Pbbb5OUlETfvn3p27evLc8cd97//Oc/BAQEEBAQwJw5c2zXbN++fZGeVi+88AKzZ89m1apVzJkzh3nz5tnyyCGvX1bOtR944AE6d+5MfHx8LkflpUuXMnnyZIACPb0c6d69O7t377Zt9+nTh61bt7J582Z69uxJSEgIPXv2JCYmpkD9OQQEBNhGyH/++ed069aN4OBg7rvvPrKyspz9awslOTmZs2fPEhYWhlKKiRMn8s033+RL9+233zJx4kSUUvTo0YPTp0+TnJzM9ddfz3XXXQdAs2bNaNSoESdOnLhiHdeCDialTMdmtenfvpFt+921etyJy9j6ae6G9yblw2I8JiaGqVOnsmvXLmrVqsX7779vO+bt7c369esZN24cU6dO5Z133mHr1q3Mnj2bBx54AIBHH32U+++/n+joaJo0aeI0j48++ojY2Fi2b9/Orl27GD9+PI888gjNmjVj7dq1rF27Nlf6rVu3Mn/+fH7//Xc2bdrExx9/zPbt2wHYv38/Dz74ILt376ZOnTosW7aswM82ePBgpk2bxuOPP54vj9dee42qVauyY8cO2wDFmJgYJk6cyPbt22nZsqWzS9o+8+OPP050dDTLli1z6gAwbtw4liwxZthMTk4mKSmJLl260K5dOyIjI9m+fTszZ87k6aefLjCfvOzdu5fFixfz22+/sWPHDjw8PGzax44dazPQdFxyqvscSUxMxMfHPh7Nx8eHxMREp+l8fX0LTbd582bS09Np06ZNsT9HSVBcb66rQik1EHgLwxxynoi8lud4ODAHCALGichSh2OTgGfMzZdF5FPchIdvuo7Ve48DsHJXEg/f5M/1jXXHuRIlKwO2OsySUA5KJTn4+vra7D/uuusu3n77bVuHiJwBgefOnWPDhg2MGTPGdt7ly5cB+O2332wP9AkTJuRy981h9erVTJs2DU9P4xHgzE/LkfXr1zNixAiqVzecsEeOHElUVBTDhg1zqadVy5Yt6dGjR5HpCvL0yrFiAbj99tu5+eab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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"def stock_loss(true_return, yhat, alpha=100.):\n",
" if true_return * yhat < 0:\n",
" return alpha * yhat ** 2 \\\n",
" - np.sign(true_return) * yhat + abs(true_return)\n",
" else:\n",
" return abs(true_return - yhat)\n",
"\n",
"pred = np.linspace(-.04, .12, 75)\n",
"for true_value in [.05, -.02]:\n",
" plt.plot(pred, [stock_loss(true_value, _p) for _p in pred],\n",
" lw=3, label='loss associated with\\nprediction '\n",
" 'if true value={:.2f}'.format(true_value))\n",
"\n",
"plt.vlines(0, 0, .25, linestyles='--')\n",
"plt.xlabel('Prediction')\n",
"plt.ylabel('Loss')\n",
"plt.xlim(-.04, .12)\n",
"plt.ylim(0, .25)\n",
"plt.legend()\n",
"plt.title('Stock returns loss if true value = 0.05, -0.02')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Simulation\n",
"\n",
"Fitted simple least-squares model.\n",
"\n",
"$$\n",
" R = \\alpha + \\beta x + \\epsilon,\n",
"$$\n",
"\n",
"where \n",
"\n",
"$$\n",
" \\epsilon ~ Normal(0, 1/\\tau) \n",
"$$"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x1570ec8cfd0>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"N = 100\n",
"X = .025 * np.random.randn(N)\n",
"Y = .5 * X + .01 * np.random.randn(N)\n",
"ls_coef_ = np.cov(X, Y)[0, 1] / np.var(X)\n",
"ls_intercept_ = Y.mean() - ls_coef_ * X.mean()\n",
"\n",
"plt.scatter(X, Y, c='k')\n",
"plt.plot(X, ls_coef_ * X + ls_intercept_,\n",
" label='least-squares line')\n",
"\n",
"plt.xlim(X.min(), X.max())\n",
"plt.ylim(Y.min(), Y.max())\n",
"plt.xlabel('Trading signal')\n",
"plt.ylabel('Returns')\n",
"plt.title('Empirical returns versus trading signal')\n",
"plt.legend(loc='upper left')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" [-----------------100%-----------------] 100000 of 100000 complete in 20.7 sec"
]
}
],
"source": [
"std = pm.Uniform('std', 0, 100, trace=False)\n",
"@pm.deterministic\n",
"def prec(U=std):\n",
" return 1.0 / U ** 2\n",
"\n",
"beta = pm.Normal('beta', 0, 0.0001)\n",
"alpha = pm.Normal('alpha', 0, 0.0001)\n",
"\n",
"@pm.deterministic\n",
"def mean(X=X, alpha=alpha, beta=beta):\n",
" return alpha + beta * X\n",
"\n",
"obs = pm.Normal('obs', mean, prec, value=Y, observed=True)\n",
"mcmc = pm.MCMC([obs, beta, alpha, std, prec])\n",
"\n",
"mcmc.sample(100000, 80000)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Find Bayes Action\n",
"\n",
"Bayes action is a set of parameters that minimize the value of loss function\n",
"after Bayes inference"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x1570fd58400>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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la1bt1KvXr0ky9++fTuvv/46a9asoUSJEpw6dYpixYrRqVMnOnbsmKT6Lioqin79+rF06VKqVq3Kww8/zMcff8yzzz4LQIkSJdi8eTMfffQR48aN44svvrju961USs3feoQnpm+Of/9C66o82ewWWP0OrHgDCtwED38PtzT1YZT/0BJKJhBX5bVz504WLlzIww8/HP+0w5deeong4GBatmwZ30V8UFAQxYsX57fffovv7r548eIJur+vV68eO3fuZPfu3dSuXZslS5YwdOhQVq1aReHChZPEsG3bNu666y5q167NtGnT2L59OwDLli3j8ccfB2xbj7t5Xa1evZo+ffoAUL16dSpWrBifUFq0aEHhwoUJDAykRo0aHjuU7NWrV/z/devWxQ/v3r17/NMZFy9ezNixYwkJCYnvffnAgQOsXLmShx56CIDg4GCCg4OTLH/ZsmXcf//9lChRAoBixa5/BcyuXbuoVKkSVavau4r79u3LypUr48d369YNgPr16ydIrkrdqLDwUwQNmx+fTKqUKsCuMW15sm4AfNUelo2G2zrB42syTTIBLaEklExJIiM0adKEkydPcuLECRYsWOCxi/hHH32UiRMncvToUQYMGAB47v4eYNOmTSxYsIDhw4fTunVrXnvttQTj+/Xrx9y5c6lTpw4TJ05M8ECp1Lhe33Ap7drdtct519eJu6z/9ttvqVat2nXn9xRjctMknv564rZLu6tXaXU1Opaqr/yUYNiS55pSuWR++H0GLHjR9gTc7XOo3f2GewX2Fi2hZDI7d+4kJiaG4sWLX7eL+K5du7Jw4UJ+/fVX2rRpA3ju/v7w4cPky5ePhx56iBdeeCG+m3tX58+fp3Tp0ly7di2+a3awpYqPP/4YsI8cPnfuXIq7dv/rr784cOCA24P+9cS18cycOTO+5+XE2rRpwwcffBB/sP/tt9+SrH/btm3xj+d11aJFC7755hsiIyMB29094HG7qlevTnh4eHx7zpQpU2jaNPOcFarsoe27KxMkkzrlChM+tgOVC1yFWf1g7mAoHWxLJcEPZLpkAlpCyRTi2lDAng1PmjQJPz+/63YRnzt3bpo3b06RIkXiq4E8dX+/Z88eXnzxRXLlykVAQEB8gnA1evRoGjVqRMWKFaldu3b8gfW9995j0KBBfPnll/j5+fHxxx/TpEkT7rjjDmrVqkW7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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"from scipy.optimize import fmin\n",
"\n",
"def stock_loss(price, pred, coef=500):\n",
" sol = np.zeros_like(price)\n",
" ix = price * pred < 0\n",
" sol[ix] = coef * pred ** 2. \\\n",
" - np.sign(price[ix]) * pred + abs(price[ix])\n",
" sol[~ix] = abs(price[~ix] - pred)\n",
" return sol\n",
"\n",
"tau_samples = mcmc.trace('prec')[:]\n",
"alpha_samples = mcmc.trace('alpha')[:]\n",
"beta_samples = mcmc.trace('beta')[:]\n",
"\n",
"N = tau_samples.shape[0]\n",
"\n",
"noise = 1. / np.sqrt(tau_samples) * np.random.randn(N)\n",
"possible_outcomes = lambda signal: \\\n",
" alpha_samples + beta_samples * signal + noise\n",
"\n",
"opt_predictions = np.zeros(50)\n",
"trading_signals = np.linspace(X.min(), X.max(), 50)\n",
"\n",
"for i, _signal in enumerate(trading_signals):\n",
" _possible_outcomes = possible_outcomes(_signal)\n",
" tomin = lambda pred: stock_loss(_possible_outcomes, pred).mean()\n",
" opt_predictions[i] = fmin(tomin, 0, disp=False)\n",
"\n",
"plt.plot(X, ls_coef_ * X + ls_intercept_, \n",
" label='least-squares prediction')\n",
"plt.plot(trading_signals, opt_predictions,\n",
" label='Bayes action prediction')\n",
"\n",
"plt.xlim(X.min(), X.max())\n",
"plt.xlabel('Trading signal')\n",
"plt.ylabel('Prediction')\n",
"plt.title('Least-squares prediction versus Bayes action prediction')\n",
"plt.legend(loc='upper left')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment