{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Portfolio optimization on Dirac\n", "#### Device: Dirac-1\n", "\n", "\n", "## Introduction\n", "\n", "This approach seeks to identify a sub-portfolio of stocks that have superior risk-return profiles compared to the full portfolio. This identifies opportunities for an investor to simplify their investment strategy without sacrificing (and potentially enhancing) the risk-adjusted return. \n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Methodology\n", "\n", "Let K be the total number of available stocks to choose from (here $K = 253$), that is the size of the stock pool. We want to choose a subset of $K^\\prime$ ($K^\\prime < K$) stocks such that the portfolio risk is minimized, while the portfolio expected return is maximized, that is\n", "\n", "$\\min_{\\{x_{i}\\}_{i \\in \\{1, 2,..., K\\}}} [-E(R)^2 + \\xi VAR(R)]$\n", "\n", "where $R$ is the daily returns of the portfolio over some period of time, $VAR(R)$ and $E(R)$ are the variance and expectation of daily returns, $\\xi$ is a hyper-parameter, and $\\{x_{i}\\}$ are binary variables representing inclusion or exclusion of a stock. A large value means the focus of optimization is to increase return, whereas a small value indicates the reduction of risk is more important. As we can take both long and short positions on stocks, we assume that $x_1, x_2, ..., x_K$ corresponds to long positions on stocks 1 to $K$. \n", "\n", "As we are choosing a subset of $K^\\prime$ stocks, we also need the following constraint,\n", "\n", "$\\sum_{i=1}^{K} x_i = K^\\prime$\n", "\n", "Assuming that the same amount is invested on each of the K' selected stocks, the portfolio daily return at time t over a time period denoted by m can be expanded as follows,\n", "\n", "$R^{(m)}(t) =\\frac{1}{K^\\prime} \\sum_{i=1}^{K} x_i r^{(m)}_i(t)$\n", "\n", "where $r^{(m)}_i(t)$ is the daily return of stock i at time $t$ in time period $m$. The expectation of portfolio daily return over time period $m$ can thus be expanded as,\n", "\n", "$E(R^{(m)}) = \\frac{1}{K^\\prime} \\sum_{i=1}^{K} x_i E(r^{(m)}_i)$\n", "\n", "and the variance portfolio daily return over time period m is expanded as,\n", "\n", "$VAR(R^{(m)}) = \\frac{1}{K^{\\prime 2}} \\sum_{i=1}^{K} \\sum_{j=1}^{K} x_i x_j COV(r^{(m)}_i, r^{(m)}_j)$\n", "\n", "where $COV$ is the covariant function. \n", "\n", "The problem then reduces to\n", "\n", "$\\min_{\\{x_i\\}} {\\bf{x}^T} \\frac{1}{K^{\\prime 2}} [ Q^{(m)} - \\xi P^{(m)}] {\\bf{x}}$\n", "\n", "where\n", "\n", "$Q^{(m)}_{ij} = COV(r^{(m)}_{i}, r^{(m)}_{j})$\n", "\n", "$P^{(m)}_{ij}= E(r_i^{(m)}) \\delta_{ij}$\n", "\n", "To avoid an over-fit on the portfolio data, we can minimize the average of the cost function over $M$ overlapping time periods, that is $m=1,2,...,M$. The problem becomes,\n", "\n", "$\\min_{\\{x_i\\}} {\\bf{x}^T} \\frac{1}{MK^{\\prime 2}} \\sum_{m=1}^{M}[ Q^{(m)} - \\xi P^{(m)}] {\\bf{x}}$\n", "\n", "subject to,\n", "\n", "$\\sum_{i=1}^{K} x_i = K^\\prime$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Implementation\n", "\n", "The above-mentioned approach was used to construct an optimal portfolio based on the constituents of the Nasdaq-100 index. The following constituents were used," ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CompanySymbol
0Microsoft CorpMSFT
1Apple IncAAPL
2Amazon.com IncAMZN
3Alphabet IncGOOG
4Alphabet IncGOOGL
5NVIDIA CorpNVDA
6Tesla IncTSLA
7Meta Platforms IncMETA
8PepsiCo IncPEP
9Broadcom IncAVGO
10Costco Wholesale CorpCOST
11Cisco Systems IncCSCO
12T-Mobile US IncTMUS
13Adobe IncADBE
14Texas Instruments IncTXN
15Comcast CorpCMCSA
16Honeywell International IncHON
17Amgen IncAMGN
18Netflix IncNFLX
19QUALCOMM IncQCOM
20Starbucks CorpSBUX
21Intel CorpINTC
22Intuit IncINTU
23Gilead Sciences IncGILD
24Advanced Micro Devices IncAMD
25Automatic Data Processing IncADP
26Intuitive Surgical IncISRG
27Mondelez International IncMDLZ
28Applied Materials IncAMAT
29Analog Devices IncADI
30Regeneron Pharmaceuticals IncREGN
31PayPal Holdings IncPYPL
32Moderna IncMRNA
33Booking Holdings IncBKNG
34Vertex Pharmaceuticals IncVRTX
35CSX CorpCSX
36Fiserv IncFISV
37Lam Research CorpLRCX
38Activision Blizzard IncATVI
39Micron Technology IncMU
40KLA CorpKLAC
41Monster Beverage CorpMNST
42O'Reilly Automotive IncORLY
43Keurig Dr Pepper IncKDP
44ASML Holding NVASML
45Synopsys IncSNPS
46Kraft Heinz Co/TheKHC
47Charter Communications IncCHTR
48American Electric Power Co IncAEP
49Marriott International Inc/MDMAR
50Palo Alto Networks IncPANW
51Cintas CorpCTAS
52Cadence Design Systems IncCDNS
53MercadoLibre IncMELI
54Dexcom IncDXCM
55Exelon CorpEXC
56Biogen IncBIIB
57AstraZeneca PLC ADRAZN
58NXP Semiconductors NVNXPI
59Paychex IncPAYX
60Enphase Energy IncENPH
61Autodesk IncADSK
62Pinduoduo Inc ADRPDD
63Ross Stores IncROST
64Fortinet IncFTNT
65Microchip Technology IncMCHP
66Xcel Energy IncXEL
67Lululemon Athletica IncLULU
68Airbnb IncABNB
69Workday IncWDAY
70PACCAR IncPCAR
71Walgreens Boots Alliance IncWBA
72IDEXX Laboratories IncIDXX
73Electronic Arts IncEA
74Marvell Technology IncMRVL
75Old Dominion Freight Line IncODFL
76GLOBALFOUNDRIES IncGFS
77CoStar Group IncCSGP
78Dollar Tree IncDLTR
79Illumina IncILMN
80Baker Hughes CoBKR
81Copart IncCPRT
82Constellation Energy CorpCEG
83Cognizant Technology Solutions CorpCTSH
84JD.com Inc ADRJD
85Fastenal CoFAST
86Verisk Analytics IncVRSK
87Seagen IncSGEN
88Crowdstrike Holdings IncCRWD
89Diamondback Energy IncFANG
90Sirius XM Holdings IncSIRI
91eBay IncEBAY
92Datadog IncDDOG
93Warner Bros Discovery IncWBD
94ANSYS IncANSS
95Atlassian CorpTEAM
96Rivian Automotive IncRIVN
97Zoom Video Communications IncZM
98Zscaler IncZS
99Align Technology IncALGN
100Lucid Group IncLCID
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import pandas as pd\n", "from IPython.display import display, HTML\n", "\n", "df = pd.read_csv(\"nasdaq100_stocks.csv\")\n", "\n", "display(HTML(df[[\"Company\", \"Symbol\"]].to_html()))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We got the historical prices of the constituent stocks, as well as those of Nasdaq-100 (NDX) and equal-weighted Nasdaq-100 (QQQE) using the Yahoo Finance Python library," ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "- ATVI: No data found, symbol may be delisted\n", "- SGEN: No data found, symbol may be delisted\n" ] } ], "source": [ "# Import libs \n", "import os\n", "import pandas as pd\n", "import yfinance as yf\n", "\n", "# Define some parameters \n", "OUT_DIR = \"data\"\n", "DROP_STOCKS = []\n", "\n", "# Get the list of all existing stocks \n", "stocks = list(df[\"Symbol\"].unique()) + [\"NDX\", \"QQQE\"] \n", "\n", "for stock in stocks:\n", " try:\n", " tmp_df = yf.Ticker(stock).history(\n", " period=\"max\", interval=\"1d\",\n", " )[[\"Close\"]].rename(\n", " columns={\n", " \"Close\": stock,\n", " }\n", " )\n", " tmp_df[\"Date\"] = tmp_df.index\n", " tmp_df.to_csv(\n", " os.path.join(OUT_DIR, \"%s.csv\" % stock),\n", " index=False,\n", " )\n", " except Exception as exc:\n", " print(\"Could not get price for %s\" % stock)\n", " print(exc)\n", " DROP_STOCKS.append(stock)\n", "\n", " if tmp_df.shape[0] == 0:\n", " DROP_STOCKS.append(stock)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us import some libraries and set some parameters," ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Import libs \n", "import os\n", "import sys\n", "import time\n", "import datetime\n", "import json\n", "import warnings\n", "from functools import wraps\n", "import numpy as np\n", "import pandas as pd\n", "\n", "from qci_client import QciClient\n", "\n", "warnings.filterwarnings(\"ignore\")\n", "\n", "ALPHA = 1.0 # The coefficient for penalty term (for linear constraint)\n", "N_SAMPLES = 20 # Number of solution samples\n", "XI = 5.0 # The xi variable as defined in Methodology\n", "K_PRIME = 30 # Number of selected stocks\n", "WINDOW_DAYS = 30 # Size of each sliding window in days\n", "WINDOW_OVERLAP_DAYS = 15 # Overlap between sliding windows in days\n", "IN_SAMPLE_DAYS = 180 # Size of the lookback period in days\n", "OUT_OF_SAMPLE_DAYS = 30 # Size of the horizon window in days" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now define a function that calculates daily returns of all constituent stocks," ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def get_stock_returns(stocks, min_date, max_date):\n", "\n", " min_date = pd.to_datetime(min_date)\n", " max_date = pd.to_datetime(max_date)\n", " return_df = None\n", "\n", " for stock in stocks:\n", " stock_df = pd.read_csv(\"data/%s.csv\" % stock)\n", " #stock_df[\"Date\"] = stock_df[\"Date\"].astype(\"datetime64[ns]\") # change to fix timezone issue\n", " stock_df[\"Date\"] = pd.to_datetime([pd.Timestamp(timestamp).date() for timestamp in stock_df[\"Date\"]]) \n", " stock_df = stock_df.fillna(method=\"ffill\").fillna(method=\"bfill\")\n", " stock_df[stock] = stock_df[stock].pct_change()\n", " stock_df = stock_df.dropna()\n", "\n", " stock_df = stock_df[\n", " (stock_df[\"Date\"] >= min_date) & (stock_df[\"Date\"] <= max_date)\n", " ]\n", " \n", " if return_df is None:\n", " return_df = stock_df\n", " else:\n", " return_df = return_df.merge(stock_df, how=\"outer\", on=\"Date\",)\n", "\n", " return_df = return_df.fillna(method=\"ffill\").fillna(method=\"bfill\")\n", "\n", " return return_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And a function that calculates the hamiltonian matrix," ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "def get_hamiltonian(\n", " return_df, stocks, min_date, max_date,\n", "):\n", "\n", " K = len(stocks)\n", "\n", " # Calculate P and Q \n", " Q = np.zeros(shape=(K, K), dtype=\"d\")\n", " P = np.zeros(shape=(K, K), dtype=\"d\")\n", " m = 0\n", " min_date = pd.to_datetime(min_date)\n", " max_date = pd.to_datetime(max_date)\n", " tmp_date = min_date\n", " while tmp_date <= max_date:\n", " tmp_min_date = tmp_date\n", " tmp_max_date = tmp_date + datetime.timedelta(days=WINDOW_DAYS)\n", " tmp_df = return_df[\n", " (return_df[\"Date\"] >= tmp_min_date)\n", " & (return_df[\"Date\"] <= tmp_max_date)\n", " ]\n", " r_list = []\n", " for i in range(K):\n", " r_list.append(np.array(tmp_df[stocks[i]]))\n", "\n", " Q += np.cov(r_list)\n", "\n", " for i in range(K):\n", " for j in range(K):\n", " P[i][j] += np.mean(r_list[i]) * np.mean(r_list[j])\n", "\n", " tmp_date += datetime.timedelta(\n", " days=WINDOW_DAYS - WINDOW_OVERLAP_DAYS,\n", " )\n", " m += 1\n", "\n", " fct = m\n", " if fct > 0:\n", " fct = 1.0 / fct\n", "\n", " P = fct * P\n", " Q = fct * Q\n", "\n", " # Calculate the Hamiltonian \n", " H = -P + XI * Q\n", "\n", " # make sure H is symmetric up to machine precision \n", " H = 0.5 * (H + H.transpose())\n", "\n", " return H" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And, we define a function that yields an optimal portfolio given a hamiltonian $H$," ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "def optimize_portfolio(H, stocks, curr_date):\n", "\n", " beg_time = time.time()\n", "\n", " K = len(stocks)\n", "\n", " assert H.shape[0] == K\n", " assert H.shape[1] == K\n", "\n", " # Generate the constraint \n", " cons_lhs = np.ones(shape=(K), dtype=np.float32)\n", " cons_rhs = np.array([-K_PRIME])\n", "\n", " constraints = np.hstack([cons_lhs, cons_rhs])\n", "\n", " # Create json objects \n", " objective_json = {\n", " \"file_name\": \"objective_tutorial_eq_wt_port_opt.json\",\n", " \"file_config\": {\n", " \"objective\": {\"data\": H, \"num_variables\": K},\n", " } \n", " }\n", " \n", " constraint_json = {\n", " \"file_name\": \"constraints_tutorial_eq_wt_port_opt.json\",\n", " \"file_config\": {\n", " \"constraints\": {\n", " \"data\": constraints, \n", " \"num_variables\": K,\n", " \"num_constraints\": 1,\n", " }\n", " }\n", " }\n", "\n", " job_json = {\n", " \"job_name\": \"moodys_eqc1_equal_weights\",\n", " \"job_tags\": [\"moody_nasda100_eqc1_equal_weights\",],\n", " \"params\": {\n", " \"device_type\": \"csample\", #\"eqc1\", \n", " \"num_samples\": N_SAMPLES,\n", " \"alpha\": ALPHA,\n", " },\n", " }\n", "\n", " # Solve the optimization problem\n", " token = \"your_token\"\n", " api_url = \"https://api.qci-prod.com\"\n", " qci = QciClient(api_token=token, url=api_url)\n", "\n", " response_json = qci.upload_file(file=objective_json)\n", " objective_file_id = response_json[\"file_id\"]\n", "\n", " response_json = qci.upload_file(file=constraint_json)\n", " constraint_file_id = response_json[\"file_id\"]\n", "\n", " job_params = {\n", " \"device_type\": \"dirac-1\", \n", " \"alpha\": ALPHA, \n", " \"num_samples\": N_SAMPLES,\n", " }\n", " \n", " job_json = qci.build_job_body(\n", " job_type=\"sample-constraint\", \n", " job_params=job_params,\n", " constraints_file_id=constraint_file_id, \n", " objective_file_id=objective_file_id,\n", " job_name=f\"tutorial_eqc1\",\n", " job_tags=[\"tutorial_eqc1\"],\n", " )\n", " print(job_json)\n", " \n", " job_response_json = qci.process_job(\n", " job_body=job_json\n", " )\n", "\n", " print(job_response_json)\n", "\n", " results = job_response_json[\"results\"]\n", " energies = results[\"energies\"]\n", " samples = results[\"solutions\"]\n", " is_feasibles = results[\"feasibilities\"]\n", "\n", " # The sample solutions are sorted by energy \n", " sol = None\n", " for i, item in enumerate(samples):\n", " sol = item\n", " is_feasible = is_feasibles[i]\n", "\n", " if is_feasible:\n", " break\n", "\n", " if not is_feasible:\n", " print(\"Solution is not feasible!\")\n", "\n", " assert len(sol) == K, \"Inconsistent solution size!\"\n", "\n", " if sum(sol) != K_PRIME:\n", " print(\n", " \"Expected to select %d stocks, but selected %d!\"\n", " % (K_PRIME, sum(sol))\n", "\t)\n", "\n", " sel_stocks = []\n", " for i in range(K):\n", " if sol[i] > 0:\n", " sel_stocks.append(stocks[i])\n", "\n", " print(\n", " \"In optimize_portfolio; done with checking constraints; %0.2f seconds!\"\n", " % (time.time() - beg_time)\n", " )\n", "\n", " return sol, sel_stocks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Results\n", "\n", "We can now test the approach over a period of time, for example, between 2020-01-15 to 2023-12-30. We define," ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "def run(curr_date):\n", "\n", " print(\"Processing curr date:\", curr_date)\n", "\n", " curr_date = pd.to_datetime(curr_date)\n", " min_ins_date = curr_date - datetime.timedelta(days=IN_SAMPLE_DAYS)\n", " max_ins_date = curr_date - datetime.timedelta(days=1)\n", " min_oos_date = curr_date\n", " max_oos_date = curr_date + datetime.timedelta(days=OUT_OF_SAMPLE_DAYS)\n", "\n", " df = pd.read_csv(\"nasdaq100_stocks.csv\", low_memory=False)\n", "\n", " stocks = list(set(df[\"Symbol\"]) - set(DROP_STOCKS))\n", "\n", " ins_return_df = get_stock_returns(stocks, min_ins_date, max_ins_date)\n", " oos_return_df = get_stock_returns(stocks, min_oos_date, max_oos_date)\n", "\n", " ins_return_df = ins_return_df.sort_values(\"Date\")\n", " ins_return_df = ins_return_df.fillna(method=\"ffill\").fillna(0)\n", "\n", " oos_return_df = oos_return_df.sort_values(\"Date\")\n", " oos_return_df = oos_return_df.fillna(method=\"ffill\").fillna(0)\n", "\n", " H = get_hamiltonian(ins_return_df, stocks, min_ins_date, max_ins_date)\n", "\n", " sol, sel_stocks = optimize_portfolio(H, stocks, curr_date)\n", "\n", " sel_stock_df = pd.DataFrame()\n", " sel_stock_df[\"Date\"] = [curr_date] * len(sel_stocks)\n", " sel_stock_df[\"Stock\"] = sel_stocks\n", "\n", " return sel_stock_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can then run a backtest," ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Processing curr date: 2022-01-13 00:00:00\n", "{'job_submission': {'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c2e2f98263204a36575fe', 'objective_file_id': '663c2e2f98263204a36575fc', 'alpha': 1.0}}, 'device_config': {'dirac-1': {'num_samples': 20}}, 'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1']}}\n", "2024-05-08 19:00:16 - Dirac allocation balance = 0 s (unmetered)\n", "2024-05-08 19:00:16 - Job submitted: job_id='663c2e30d448b017e54f94d3'\n", "2024-05-08 19:00:16 - QUEUED\n", "2024-05-08 19:00:18 - RUNNING\n", "2024-05-08 19:06:20 - COMPLETED\n", "2024-05-08 19:06:23 - Dirac allocation balance = 0 s (unmetered)\n", "{'job_info': {'job_id': '663c2e30d448b017e54f94d3', 'job_submission': {'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1'], 'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c2e2f98263204a36575fe', 'objective_file_id': '663c2e2f98263204a36575fc', 'alpha': 1, 'atol': 1e-10}}, 'device_config': {'dirac-1': {'num_samples': 20}}}, 'job_status': {'submitted_at_rfc3339nano': '2024-05-09T02:00:16.175Z', 'queued_at_rfc3339nano': '2024-05-09T02:00:16.177Z', 'running_at_rfc3339nano': '2024-05-09T02:00:17.157Z', 'completed_at_rfc3339nano': '2024-05-09T02:06:19.26Z'}, 'job_result': {'file_id': '663c2f9b98263204a365760c', 'device_usage_s': 289}}, 'status': 'COMPLETED', 'results': {'counts': [1, 5, 3, 2, 3, 1, 2, 1, 1, 1], 'energies': [-899.8930419210621, -899.8929198507496, -899.8929198507496, -899.8927977804371, -899.8927977804371, -899.8926757101246, -899.8926757101246, -899.8926757101246, -899.8924315694996, -899.8919432882496], 'feasibilities': [True, True, True, True, True, True, True, True, True, True], 'objective_values': [0.10694210024122522, 0.10711688613375814, 0.10713816757050866, 0.10715433158390524, 0.10722590058230652, 0.10727914274376713, 0.10737808437841369, 0.10738215101439265, 0.10759349012139721, 0.1080272879179783], 'solutions': [[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1], [0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1], [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1], [0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1], [0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1], [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1], [0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1], [0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1], [0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1], [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1]]}}\n", "In optimize_portfolio; done with checking constraints; 404.23 seconds!\n", "Processing curr date: 2022-02-13 00:00:00\n", "{'job_submission': {'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c2fc798263204a3657610', 'objective_file_id': '663c2fc698263204a365760e', 'alpha': 1.0}}, 'device_config': {'dirac-1': {'num_samples': 20}}, 'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1']}}\n", "2024-05-08 19:07:03 - Dirac allocation balance = 0 s (unmetered)\n", "2024-05-08 19:07:03 - Job submitted: job_id='663c2fc7d448b017e54f94d5'\n", "2024-05-08 19:07:03 - QUEUED\n", "2024-05-08 19:09:31 - RUNNING\n", "2024-05-08 19:15:30 - COMPLETED\n", "2024-05-08 19:15:33 - Dirac allocation balance = 0 s (unmetered)\n", "{'job_info': {'job_id': '663c2fc7d448b017e54f94d5', 'job_submission': {'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1'], 'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c2fc798263204a3657610', 'objective_file_id': '663c2fc698263204a365760e', 'alpha': 1, 'atol': 1e-10}}, 'device_config': {'dirac-1': {'num_samples': 20}}}, 'job_status': {'submitted_at_rfc3339nano': '2024-05-09T02:07:03.586Z', 'queued_at_rfc3339nano': '2024-05-09T02:07:03.587Z', 'running_at_rfc3339nano': '2024-05-09T02:09:31.682Z', 'completed_at_rfc3339nano': '2024-05-09T02:15:28.938Z'}, 'job_result': {'file_id': '663c31c098263204a3657620', 'device_usage_s': 289}}, 'status': 'COMPLETED', 'results': {'counts': [1, 2, 2, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1], 'energies': [-899.8142022729097, -899.8142022729097, -899.8142022729097, -899.8142022729097, -899.8140802025972, -899.8139581322847, -899.8137139916597, -899.8137139916597, -899.8135919213472, -899.8135919213472, -899.8135919213472, -899.8133477807222, -899.8129815697847, -899.8126153588472, -899.8121270775972], 'feasibilities': [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True], 'objective_values': [0.18575788376372931, 0.18577369701798177, 0.18584034664480104, 0.1858414619654213, 0.18586864781128645, 0.1859958674393441, 0.1862380560364733, 0.18630508648825628, 0.18635666649934488, 0.18637383714788805, 0.18639694913966914, 0.18660693516442706, 0.18699109848206405, 0.1874137015211155, 0.18791293544574308], 'solutions': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1]]}}\n", "In optimize_portfolio; done with checking constraints; 547.71 seconds!\n", "Processing curr date: 2022-03-16 00:00:00\n", "{'job_submission': {'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c31ed98263204a3657624', 'objective_file_id': '663c31ec98263204a3657622', 'alpha': 1.0}}, 'device_config': {'dirac-1': {'num_samples': 20}}, 'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1']}}\n", "2024-05-08 19:16:13 - Dirac allocation balance = 0 s (unmetered)\n", "2024-05-08 19:16:13 - Job submitted: job_id='663c31edd448b017e54f94d7'\n", "2024-05-08 19:16:13 - QUEUED\n", "2024-05-08 19:18:43 - RUNNING\n", "2024-05-08 19:24:46 - COMPLETED\n", "2024-05-08 19:24:48 - Dirac allocation balance = 0 s (unmetered)\n", "{'job_info': {'job_id': '663c31edd448b017e54f94d7', 'job_submission': {'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1'], 'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c31ed98263204a3657624', 'objective_file_id': '663c31ec98263204a3657622', 'alpha': 1, 'atol': 1e-10}}, 'device_config': {'dirac-1': {'num_samples': 20}}}, 'job_status': {'submitted_at_rfc3339nano': '2024-05-09T02:16:13.54Z', 'queued_at_rfc3339nano': '2024-05-09T02:16:13.541Z', 'running_at_rfc3339nano': '2024-05-09T02:18:42.201Z', 'completed_at_rfc3339nano': '2024-05-09T02:24:44.626Z'}, 'job_result': {'file_id': '663c33ec98263204a3657634', 'device_usage_s': 290}}, 'status': 'COMPLETED', 'results': {'counts': [9, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'energies': [-899.7795925257781, -899.7794704554656, -899.7793483851531, -899.7792263148406, -899.7791042445281, -899.7791042445281, -899.7791042445281, -899.7788601039031, -899.7787380335906, -899.7783718226531, -899.7781276820281], 'feasibilities': [True, True, True, True, True, True, True, True, True, True, True], 'objective_values': [0.22038417108175065, 0.22050534780381642, 0.22068812899164647, 0.22073629780553047, 0.22085410560002844, 0.22087060789000373, 0.2209441019202913, 0.22114139951653097, 0.22128187550407075, 0.22169026435936345, 0.2218611331127795], 'solutions': [[1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1], [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1], [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1], [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1], [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1], [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1]]}}\n", "In optimize_portfolio; done with checking constraints; 552.33 seconds!\n", "Processing curr date: 2022-04-16 00:00:00\n", "{'job_submission': {'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c341898263204a3657638', 'objective_file_id': '663c341798263204a3657636', 'alpha': 1.0}}, 'device_config': {'dirac-1': {'num_samples': 20}}, 'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1']}}\n", "2024-05-08 19:25:28 - Dirac allocation balance = 0 s (unmetered)\n", "2024-05-08 19:25:28 - Job submitted: job_id='663c3418d448b017e54f94d9'\n", "2024-05-08 19:25:28 - QUEUED\n", "2024-05-08 19:27:58 - RUNNING\n", "2024-05-08 19:34:00 - COMPLETED\n", "2024-05-08 19:34:03 - Dirac allocation balance = 0 s (unmetered)\n", "{'job_info': {'job_id': '663c3418d448b017e54f94d9', 'job_submission': {'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1'], 'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c341898263204a3657638', 'objective_file_id': '663c341798263204a3657636', 'alpha': 1, 'atol': 1e-10}}, 'device_config': {'dirac-1': {'num_samples': 20}}}, 'job_status': {'submitted_at_rfc3339nano': '2024-05-09T02:25:28.74Z', 'queued_at_rfc3339nano': '2024-05-09T02:25:28.74Z', 'running_at_rfc3339nano': '2024-05-09T02:27:57.449Z', 'completed_at_rfc3339nano': '2024-05-09T02:33:59.371Z'}, 'job_result': {'file_id': '663c361798263204a365763c', 'device_usage_s': 288}}, 'status': 'COMPLETED', 'results': {'counts': [14, 2, 3, 1], 'energies': [-899.7645461102991, -899.7643019696741, -899.7640578290491, -899.7640578290491], 'feasibilities': [True, True, True, True], 'objective_values': [0.23549922321350378, 0.2357466216737999, 0.23590463775784443, 0.23598854569161704], 'solutions': [[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1]]}}\n", "In optimize_portfolio; done with checking constraints; 555.70 seconds!\n", "Processing curr date: 2022-05-17 00:00:00\n", "{'job_submission': {'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c364798263204a3657640', 'objective_file_id': '663c364698263204a365763e', 'alpha': 1.0}}, 'device_config': {'dirac-1': {'num_samples': 20}}, 'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1']}}\n", "2024-05-08 19:34:47 - Dirac allocation balance = 0 s (unmetered)\n", "2024-05-08 19:34:47 - Job submitted: job_id='663c3647d448b017e54f94da'\n", "2024-05-08 19:34:47 - QUEUED\n", "2024-05-08 19:34:50 - RUNNING\n", "2024-05-08 19:40:50 - COMPLETED\n", "2024-05-08 19:40:52 - Dirac allocation balance = 0 s (unmetered)\n", "{'job_info': {'job_id': '663c3647d448b017e54f94da', 'job_submission': {'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1'], 'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c364798263204a3657640', 'objective_file_id': '663c364698263204a365763e', 'alpha': 1, 'atol': 1e-10}}, 'device_config': {'dirac-1': {'num_samples': 20}}}, 'job_status': {'submitted_at_rfc3339nano': '2024-05-09T02:34:47.396Z', 'queued_at_rfc3339nano': '2024-05-09T02:34:47.397Z', 'running_at_rfc3339nano': '2024-05-09T02:34:47.656Z', 'completed_at_rfc3339nano': '2024-05-09T02:40:49.716Z'}, 'job_result': {'file_id': '663c37b198263204a3657642', 'device_usage_s': 288}}, 'status': 'COMPLETED', 'results': {'counts': [13, 2, 2, 1, 1, 1], 'energies': [-899.6566471402217, -899.6566471402217, -899.6560367886592, -899.6559147183467, -899.6555485074092, -899.6554264370967], 'feasibilities': [True, True, True, True, True, True], 'objective_values': [0.3433354284001967, 0.3434022979360825, 0.34393717423579084, 0.3441305781822098, 0.3444755036528773, 0.3445996855621417], 'solutions': [[0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1]]}}\n", "In optimize_portfolio; done with checking constraints; 406.72 seconds!\n", "Processing curr date: 2022-06-17 00:00:00\n", "{'job_submission': {'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c37e098263204a3657646', 'objective_file_id': '663c37df98263204a3657644', 'alpha': 1.0}}, 'device_config': {'dirac-1': {'num_samples': 20}}, 'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1']}}\n", "2024-05-08 19:41:36 - Dirac allocation balance = 0 s (unmetered)\n", "2024-05-08 19:41:37 - Job submitted: job_id='663c37e1d448b017e54f94db'\n", "2024-05-08 19:41:37 - QUEUED\n", "2024-05-08 19:41:39 - RUNNING\n", "2024-05-08 19:47:39 - COMPLETED\n", "2024-05-08 19:47:42 - Dirac allocation balance = 0 s (unmetered)\n", "{'job_info': {'job_id': '663c37e1d448b017e54f94db', 'job_submission': {'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1'], 'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c37e098263204a3657646', 'objective_file_id': '663c37df98263204a3657644', 'alpha': 1, 'atol': 1e-10}}, 'device_config': {'dirac-1': {'num_samples': 20}}}, 'job_status': {'submitted_at_rfc3339nano': '2024-05-09T02:41:37.12Z', 'queued_at_rfc3339nano': '2024-05-09T02:41:37.121Z', 'running_at_rfc3339nano': '2024-05-09T02:41:38.001Z', 'completed_at_rfc3339nano': '2024-05-09T02:47:39.955Z'}, 'job_result': {'file_id': '663c394b98263204a3657648', 'device_usage_s': 289}}, 'status': 'COMPLETED', 'results': {'counts': [15, 2, 1, 2], 'energies': [-899.5422470805225, -899.54066016646, -899.5402939555225, -899.539927744585], 'feasibilities': [True, True, True, True], 'objective_values': [0.45772844079634695, 0.45934757314383895, 0.4597307237517659, 0.46003288145735216], 'solutions': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1]]}}\n", "In optimize_portfolio; done with checking constraints; 407.07 seconds!\n", "Processing curr date: 2022-07-18 00:00:00\n", "{'job_submission': {'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c397a98263204a365764c', 'objective_file_id': '663c397998263204a365764a', 'alpha': 1.0}}, 'device_config': {'dirac-1': {'num_samples': 20}}, 'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1']}}\n", "2024-05-08 19:48:26 - Dirac allocation balance = 0 s (unmetered)\n", "2024-05-08 19:48:26 - Job submitted: job_id='663c397ad448b017e54f94dc'\n", "2024-05-08 19:48:26 - QUEUED\n", "2024-05-08 19:48:29 - RUNNING\n", "2024-05-08 19:54:31 - COMPLETED\n", "2024-05-08 19:54:34 - Dirac allocation balance = 0 s (unmetered)\n", "{'job_info': {'job_id': '663c397ad448b017e54f94dc', 'job_submission': {'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1'], 'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c397a98263204a365764c', 'objective_file_id': '663c397998263204a365764a', 'alpha': 1, 'atol': 1e-10}}, 'device_config': {'dirac-1': {'num_samples': 20}}}, 'job_status': {'submitted_at_rfc3339nano': '2024-05-09T02:48:26.817Z', 'queued_at_rfc3339nano': '2024-05-09T02:48:26.818Z', 'running_at_rfc3339nano': '2024-05-09T02:48:27.189Z', 'completed_at_rfc3339nano': '2024-05-09T02:54:29.438Z'}, 'job_result': {'file_id': '663c3ae598263204a365764e', 'device_usage_s': 290}}, 'status': 'COMPLETED', 'results': {'counts': [10, 4, 2, 2, 1, 1], 'energies': [-899.5207858788376, -899.5206638085251, -899.5200534569626, -899.5193210350876, -899.5182224022751, -899.5182224022751], 'feasibilities': [True, True, True, True, True, True], 'objective_values': [0.4792130044740021, 0.47938333898512087, 0.4799653098185577, 0.4806714981361283, 0.4817260375288466, 0.48179708239155056], 'solutions': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1]]}}\n", "In optimize_portfolio; done with checking constraints; 409.02 seconds!\n", "Processing curr date: 2022-08-18 00:00:00\n", "{'job_submission': {'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c3b1698263204a3657652', 'objective_file_id': '663c3b1598263204a3657650', 'alpha': 1.0}}, 'device_config': {'dirac-1': {'num_samples': 20}}, 'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1']}}\n", "2024-05-08 19:55:18 - Dirac allocation balance = 0 s (unmetered)\n", "2024-05-08 19:55:18 - Job submitted: job_id='663c3b16d448b017e54f94dd'\n", "2024-05-08 19:55:18 - QUEUED\n", "2024-05-08 19:55:21 - RUNNING\n", "2024-05-08 20:01:21 - COMPLETED\n", "2024-05-08 20:01:24 - Dirac allocation balance = 0 s (unmetered)\n", "{'job_info': {'job_id': '663c3b16d448b017e54f94dd', 'job_submission': {'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1'], 'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c3b1698263204a3657652', 'objective_file_id': '663c3b1598263204a3657650', 'alpha': 1, 'atol': 1e-10}}, 'device_config': {'dirac-1': {'num_samples': 20}}}, 'job_status': {'submitted_at_rfc3339nano': '2024-05-09T02:55:18.634Z', 'queued_at_rfc3339nano': '2024-05-09T02:55:18.635Z', 'running_at_rfc3339nano': '2024-05-09T02:55:18.681Z', 'completed_at_rfc3339nano': '2024-05-09T03:01:20.579Z'}, 'job_result': {'file_id': '663c3c8098263204a3657654', 'device_usage_s': 286}}, 'status': 'COMPLETED', 'results': {'counts': [11, 3, 3, 1, 1, 1], 'energies': [-899.5335581859647, -899.5335581859647, -899.5320933422147, -899.5318492015897, -899.5316050609647, -899.5296519359647], 'feasibilities': [True, True, True, True, True, True], 'objective_values': [0.4664017664446538, 0.4664398583727227, 0.4678700803410983, 0.4681682380335351, 0.4683506506663085, 0.47035568899990987], 'solutions': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1]]}}\n", "In optimize_portfolio; done with checking constraints; 407.51 seconds!\n", "Processing curr date: 2022-09-18 00:00:00\n", "{'job_submission': {'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c3cb098263204a3657658', 'objective_file_id': '663c3cb098263204a3657656', 'alpha': 1.0}}, 'device_config': {'dirac-1': {'num_samples': 20}}, 'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1']}}\n", "2024-05-08 20:02:08 - Dirac allocation balance = 0 s (unmetered)\n", "2024-05-08 20:02:08 - Job submitted: job_id='663c3cb0d448b017e54f94de'\n", "2024-05-08 20:02:08 - QUEUED\n", "2024-05-08 20:02:11 - RUNNING\n", "2024-05-08 20:08:13 - COMPLETED\n", "2024-05-08 20:08:16 - Dirac allocation balance = 0 s (unmetered)\n", "{'job_info': {'job_id': '663c3cb0d448b017e54f94de', 'job_submission': {'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1'], 'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c3cb098263204a3657658', 'objective_file_id': '663c3cb098263204a3657656', 'alpha': 1, 'atol': 1e-10}}, 'device_config': {'dirac-1': {'num_samples': 20}}}, 'job_status': {'submitted_at_rfc3339nano': '2024-05-09T03:02:08.963Z', 'queued_at_rfc3339nano': '2024-05-09T03:02:08.964Z', 'running_at_rfc3339nano': '2024-05-09T03:02:09.808Z', 'completed_at_rfc3339nano': '2024-05-09T03:08:11.82Z'}, 'job_result': {'file_id': '663c3e1b98263204a365765a', 'device_usage_s': 291}}, 'status': 'COMPLETED', 'results': {'counts': [8, 3, 4, 1, 2, 1, 1], 'energies': [-899.4227949154381, -899.4224287045006, -899.4221845638756, -899.4221845638756, -899.4215742123131, -899.4209638607506, -899.4196210873131], 'feasibilities': [True, True, True, True, True, True, True], 'objective_values': [0.5772660631608205, 0.5775858384986564, 0.5777806791406422, 0.577840727800031, 0.5784277468822873, 0.5790471550466281, 0.5804146668811597], 'solutions': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1]]}}\n", "In optimize_portfolio; done with checking constraints; 408.86 seconds!\n", "Processing curr date: 2022-10-19 00:00:00\n", "{'job_submission': {'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c3e4c98263204a365765e', 'objective_file_id': '663c3e4b98263204a365765c', 'alpha': 1.0}}, 'device_config': {'dirac-1': {'num_samples': 20}}, 'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1']}}\n", "2024-05-08 20:09:00 - Dirac allocation balance = 0 s (unmetered)\n", "2024-05-08 20:09:00 - Job submitted: job_id='663c3e4cd448b017e54f94df'\n", "2024-05-08 20:09:00 - QUEUED\n", "2024-05-08 20:09:03 - RUNNING\n", "2024-05-08 20:15:06 - COMPLETED\n", "2024-05-08 20:15:08 - Dirac allocation balance = 0 s (unmetered)\n", "{'job_info': {'job_id': '663c3e4cd448b017e54f94df', 'job_submission': {'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1'], 'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c3e4c98263204a365765e', 'objective_file_id': '663c3e4b98263204a365765c', 'alpha': 1, 'atol': 1e-10}}, 'device_config': {'dirac-1': {'num_samples': 20}}}, 'job_status': {'submitted_at_rfc3339nano': '2024-05-09T03:09:00.567Z', 'queued_at_rfc3339nano': '2024-05-09T03:09:00.568Z', 'running_at_rfc3339nano': '2024-05-09T03:09:01.075Z', 'completed_at_rfc3339nano': '2024-05-09T03:15:04.053Z'}, 'job_result': {'file_id': '663c3fb898263204a3657660', 'device_usage_s': 293}}, 'status': 'COMPLETED', 'results': {'counts': [9, 5, 3, 1, 1, 1], 'energies': [-899.3300647028726, -899.3299426325601, -899.3296984919351, -899.3289660700601, -899.3288439997476, -899.3285998591226], 'feasibilities': [True, True, True, True, True, True], 'objective_values': [0.669911826241469, 0.6700147349052503, 0.6702868630702825, 0.671054026013198, 0.6711733120148201, 0.6714170867943335], 'solutions': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1]]}}\n", "In optimize_portfolio; done with checking constraints; 409.66 seconds!\n", "Processing curr date: 2022-11-19 00:00:00\n", "{'job_submission': {'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c3fe898263204a3657664', 'objective_file_id': '663c3fe898263204a3657662', 'alpha': 1.0}}, 'device_config': {'dirac-1': {'num_samples': 20}}, 'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1']}}\n", "2024-05-08 20:15:53 - Dirac allocation balance = 0 s (unmetered)\n", "2024-05-08 20:15:53 - Job submitted: job_id='663c3fe9d448b017e54f94e0'\n", "2024-05-08 20:15:53 - QUEUED\n", "2024-05-08 20:15:55 - RUNNING\n", "2024-05-08 20:21:55 - COMPLETED\n", "2024-05-08 20:21:58 - Dirac allocation balance = 0 s (unmetered)\n", "{'job_info': {'job_id': '663c3fe9d448b017e54f94e0', 'job_submission': {'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1'], 'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c3fe898263204a3657664', 'objective_file_id': '663c3fe898263204a3657662', 'alpha': 1, 'atol': 1e-10}}, 'device_config': {'dirac-1': {'num_samples': 20}}}, 'job_status': {'submitted_at_rfc3339nano': '2024-05-09T03:15:53.145Z', 'queued_at_rfc3339nano': '2024-05-09T03:15:53.148Z', 'running_at_rfc3339nano': '2024-05-09T03:15:53.307Z', 'completed_at_rfc3339nano': '2024-05-09T03:21:55.425Z'}, 'job_result': {'file_id': '663c415398263204a3657666', 'device_usage_s': 289}}, 'status': 'COMPLETED', 'results': {'counts': [11, 6, 1, 1, 1], 'energies': [-899.4116445060379, -899.4116445060379, -899.4116445060379, -899.4114003654129, -899.4088368888504], 'feasibilities': [True, True, True, True, True], 'objective_values': [0.5883300061157691, 0.5883418816354902, 0.5883747574303106, 0.5885856769640764, 0.5911926411056718], 'solutions': [[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1], [0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1]]}}\n", "In optimize_portfolio; done with checking constraints; 407.19 seconds!\n", "Processing curr date: 2022-12-20 00:00:00\n", "{'job_submission': {'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c418298263204a365766a', 'objective_file_id': '663c418298263204a3657668', 'alpha': 1.0}}, 'device_config': {'dirac-1': {'num_samples': 20}}, 'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1']}}\n", "2024-05-08 20:22:43 - Dirac allocation balance = 0 s (unmetered)\n", "2024-05-08 20:22:43 - Job submitted: job_id='663c4183d448b017e54f94e1'\n", "2024-05-08 20:22:43 - QUEUED\n", "2024-05-08 20:22:45 - RUNNING\n", "2024-05-08 20:28:40 - COMPLETED\n", "2024-05-08 20:28:43 - Dirac allocation balance = 0 s (unmetered)\n", "{'job_info': {'job_id': '663c4183d448b017e54f94e1', 'job_submission': {'job_name': 'tutorial_eqc1', 'job_tags': ['tutorial_eqc1'], 'problem_config': {'quadratic_linearly_constrained_binary_optimization': {'constraints_file_id': '663c418298263204a365766a', 'objective_file_id': '663c418298263204a3657668', 'alpha': 1, 'atol': 1e-10}}, 'device_config': {'dirac-1': {'num_samples': 20}}}, 'job_status': {'submitted_at_rfc3339nano': '2024-05-09T03:22:43.197Z', 'queued_at_rfc3339nano': '2024-05-09T03:22:43.198Z', 'running_at_rfc3339nano': '2024-05-09T03:22:43.679Z', 'completed_at_rfc3339nano': '2024-05-09T03:28:38.705Z'}, 'job_result': {'file_id': '663c42e698263204a365766c', 'device_usage_s': 289}}, 'status': 'COMPLETED', 'results': {'counts': [12, 3, 1, 2, 1, 1], 'energies': [-899.4937351811574, -899.4934910405324, -899.4930027592824, -899.4923924077199, -899.4917820561574, -899.4914158452199], 'feasibilities': [True, True, True, True, True, True], 'objective_values': [0.5062719196965939, 0.5065549005563347, 0.5070348082132301, 0.5076232649421137, 0.5082234349465327, 0.50856831364782], 'solutions': [[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1]]}}\n", "In optimize_portfolio; done with checking constraints; 401.66 seconds!\n" ] } ], "source": [ "min_date = pd.to_datetime(\"2022-01-13\") \n", "max_date = pd.to_datetime(\"2022-12-30\")\n", "\n", "SEL_STOCK_OUT_FILE = \"selected_stocks.csv\"\n", "\n", "curr_date = min_date\n", "while curr_date < max_date:\n", " tmp_sel_stock_df = run(curr_date)\n", "\n", " if os.path.exists(SEL_STOCK_OUT_FILE):\n", " tmp_sel_stock_df.to_csv(\n", " SEL_STOCK_OUT_FILE, index=False, mode=\"a\", header=False,\n", " )\n", " else:\n", " tmp_sel_stock_df.to_csv(\n", " SEL_STOCK_OUT_FILE, index=False,\n", " )\n", "\n", " curr_date += datetime.timedelta(days=OUT_OF_SAMPLE_DAYS + 1)\n", "\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now calculate the optimal portfolio values over the period of time it was tested." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Processing adjustment date 2022-01-13\n", "Processing adjustment date 2022-02-13\n", "Processing adjustment date 2022-03-16\n", "Processing adjustment date 2022-04-16\n", "Processing adjustment date 2022-05-17\n", "Processing adjustment date 2022-06-17\n", "Processing adjustment date 2022-07-18\n", "Processing adjustment date 2022-08-18\n", "Processing adjustment date 2022-09-18\n", "Processing adjustment date 2022-10-19\n", "Processing adjustment date 2022-11-19\n", "Processing adjustment date 2022-12-20\n" ] } ], "source": [ "# Import libs \n", "import sys\n", "import datetime\n", "import warnings\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "\n", "warnings.filterwarnings(\"ignore\")\n", "\n", "# Set params \n", "INIT_PORT_VAL = 1000000.0\n", "OUT_OF_SAMPLE_DAYS = 30\n", "K_PRIME = 30\n", "XI = 5.0\n", "IND_SYMBOL_1 = \"QQQE\"\n", "IND_SYMBOL_2 = \"NDX\"\n", "\n", "SEL_STOCK_FILE = \"selected_stocks.csv\"\n", "INDEX_FILE_1 = \"data/%s.csv\" % IND_SYMBOL_1\n", "INDEX_FILE_2 = \"data/%s.csv\" % IND_SYMBOL_2\n", "\n", "MIN_DATE = pd.to_datetime(\"2022-01-01\")\n", "MAX_DATE = pd.to_datetime(\"2022-12-31\")\n", "\n", "# Read allocation file \n", "df = pd.read_csv(SEL_STOCK_FILE)\n", "#df[\"Date\"] = df[\"Date\"].astype(\"datetime64[ns]\")\n", "df[\"Date\"] = pd.to_datetime([pd.Timestamp(timestamp).date() for timestamp in df[\"Date\"]])\n", "df = df[(df[\"Date\"] >= MIN_DATE) & (df[\"Date\"] <= MAX_DATE)]\n", "\n", "# Loop through dates and calculate port value \n", "beg_port_val = INIT_PORT_VAL\n", "df = df.sort_values(\"Date\")\n", "adj_dates = sorted(df[\"Date\"].unique())\n", "num_adj_dates = len(adj_dates)\n", "dates = None\n", "port_vals = None\n", "for i in range(num_adj_dates):\n", "\n", " print(\n", " \"Processing adjustment date %s\"\n", " % pd.to_datetime(adj_dates[i]).strftime(\"%Y-%m-%d\")\n", " )\n", "\n", " beg_date = pd.to_datetime(adj_dates[i])\n", " if i < num_adj_dates - 1:\n", " end_date = pd.to_datetime(adj_dates[i + 1])\n", " else:\n", " end_date = beg_date + datetime.timedelta(days=OUT_OF_SAMPLE_DAYS)\n", "\n", " tmp_df = df[df[\"Date\"] == beg_date]\n", " stocks = tmp_df[\"Stock\"]\n", " stocks = list(set(stocks))\n", "\n", " stocks = list(set(stocks) - set(DROP_STOCKS) - {\"FISV\"})\n", " \n", " if end_date > pd.to_datetime(\"2023-10-20\"):\n", " stocks = list(set(stocks) - {\"ATVI\"})\n", "\n", " all_dates = [beg_date]\n", " date0 = beg_date\n", " while date0 < end_date:\n", " date0 = date0 + datetime.timedelta(days=1)\n", " all_dates.append(date0)\n", "\n", " price_df = pd.DataFrame({\"Date\": all_dates})\n", "\n", " for stock in stocks:\n", " stock_df = pd.read_csv(\"data/%s.csv\" % stock)\n", " #stock_df[\"Date\"] = stock_df[\"Date\"].astype(\"datetime64[ns]\")\n", " stock_df[\"Date\"] = pd.to_datetime([pd.Timestamp(timestamp).date() for timestamp in stock_df[\"Date\"]])\n", " stock_df = stock_df[\n", " (stock_df[\"Date\"] >= beg_date) & (stock_df[\"Date\"] <= end_date)\n", " ]\n", "\n", " if price_df is None:\n", " price_df = stock_df\n", " else:\n", " price_df = price_df.merge(stock_df, on=\"Date\", how=\"outer\")\n", "\n", " price_df = price_df.fillna(method=\"ffill\").fillna(method=\"bfill\")\n", " price_df = price_df.sort_values(\"Date\")\n", "\n", " tmp_dates = np.array(price_df[\"Date\"])\n", " tmp_port_vals = np.zeros(shape=(price_df.shape[0]))\n", "\n", " assert price_df.shape[0] > 0\n", "\n", " for stock in stocks:\n", " prices = np.array(price_df[stock])\n", " beg_price = prices[0]\n", " stock_wt = 1.0 / len(stocks)\n", "\n", " if beg_price <= 0:\n", " print(stock)\n", " print(price_df[[\"Date\", stock]])\n", " \n", " assert beg_price > 0, \"Error in data for %s\" % stock # this assertion was failing, when I comment it out we get all NaN values\n", "\n", " stock_count = stock_wt * beg_port_val / beg_price\n", " tmp_port_vals += stock_count * prices\n", "\n", " if dates is None:\n", " dates = tmp_dates\n", " else:\n", " dates = np.concatenate([dates, tmp_dates])\n", "\n", " if port_vals is None:\n", " port_vals = tmp_port_vals\n", " else:\n", " port_vals = np.concatenate([port_vals, tmp_port_vals])\n", "\n", " beg_port_val = port_vals[-1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can then plot the optimal portfolio values and compare them with those of Nasdaq-100 and equal-weighted Nasdaq-100 indexes." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# note these are the results when the beg price assertion from the previous cell was commented, turn into all NaN values\n", "# Plot \n", "out_df = pd.DataFrame({\"Date\": dates, \"Port_Val\": port_vals})\n", "out_df[\"Date\"] = out_df[\"Date\"].astype(\"datetime64[ns]\")\n", "ind_df_1 = pd.read_csv(INDEX_FILE_1)\n", "#ind_df_1[\"Date\"] = ind_df_1[\"Date\"].astype(\"datetime64[ns]\")\n", "ind_df_1[\"Date\"] = pd.to_datetime([pd.Timestamp(timestamp).date() for timestamp in ind_df_1[\"Date\"]])\n", "min_date = out_df[\"Date\"].min()\n", "max_date = out_df[\"Date\"].max()\n", "ind_df_1 = ind_df_1[\n", " (ind_df_1[\"Date\"] >= min_date) & (ind_df_1[\"Date\"] <= max_date)\n", "]\n", "ind_vals_1 = np.array(ind_df_1[IND_SYMBOL_1])\n", "fct = INIT_PORT_VAL / ind_vals_1[0]\n", "ind_vals_1 *= fct\n", "\n", "ind_df_2 = pd.read_csv(INDEX_FILE_2)\n", "#ind_df_2[\"Date\"] = ind_df_2[\"Date\"].astype(\"datetime64[ns]\")\n", "ind_df_2[\"Date\"] = pd.to_datetime([pd.Timestamp(timestamp).date() for timestamp in ind_df_2[\"Date\"]])\n", "min_date = out_df[\"Date\"].min()\n", "max_date = out_df[\"Date\"].max()\n", "ind_df_2 = ind_df_2[\n", " (ind_df_2[\"Date\"] >= min_date) & (ind_df_2[\"Date\"] <= max_date)\n", "]\n", "ind_vals_2 = np.array(ind_df_2[IND_SYMBOL_2])\n", "fct = INIT_PORT_VAL / ind_vals_2[0]\n", "ind_vals_2 *= fct\n", "\n", "plt.plot(\n", " out_df[\"Date\"], out_df[\"Port_Val\"], \n", " ind_df_1[\"Date\"], ind_vals_1,\n", " ind_df_2[\"Date\"], ind_vals_2,\n", ")\n", "plt.xlabel(\"Date\")\n", "plt.ylabel(\"Portfolio Value\")\n", "\n", "plt.legend(\n", " [\n", " \"Equal weighted optimal portfolio\", \n", " \"Equal weighted Nasdaq 100\",\n", " \"Nasdaq 100\",\n", " ]\n", ") \n", "plt.show()" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.7" } }, "nbformat": 4, "nbformat_minor": 4 }