├── output.png ├── Sequence diagram.PNG ├── README.md └── Hypothesis_Hub.ipynb /output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bhaskatripathi/HypothesisHub/HEAD/output.png -------------------------------------------------------------------------------- /Sequence diagram.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bhaskatripathi/HypothesisHub/HEAD/Sequence diagram.PNG -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # HypothesisHub 2 | HypothesisHub is an AI Tool for the Automated Generation of Research Questions and Hypotheses from Scientific Literature. It applies a chain of reasoning to scientific literature to generate questions and hypotheses. OpenAI and Langchain serve as the underlying technologies for the tool. 3 | 4 | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/bhaskatripathi/HypothesisHub/blob/main/Hypothesis_Hub.ipynb) 5 | 6 | 7 | ## Features 8 | - Generates research questions from a given scientific literature 9 | - Generates a null hypothesis (H0) and an alternate hypothesis (H1) for each research question 10 | - Handles cases where either H0 or H1 is not present 11 | - Automatically generates missing H1 using the LLMChain if needed 12 | - Negates hypothesis statement if H0 is missing 13 | 14 | ## Sequence Diagram 15 | ``` mermaid 16 | sequenceDiagram 17 | participant User 18 | participant OpenAI 19 | participant ResearchAndHypothesisGenerator 20 | 21 | User->>+ResearchAndHypothesisGenerator: provide scientific literature 22 | ResearchAndHypothesisGenerator->>+research_question_template: instantiate prompt template 23 | research_question_template->>+ResearchAndHypothesisGenerator: return prompt template 24 | ResearchAndHypothesisGenerator->>+research_question_chain: instantiate LLMChain 25 | research_question_chain->>+ResearchAndHypothesisGenerator: return LLMChain 26 | ResearchAndHypothesisGenerator->>+OpenAI: generate research questions 27 | OpenAI->>+research_question_chain: generate research questions 28 | research_question_chain->>+OpenAI: return research questions 29 | OpenAI->>-ResearchAndHypothesisGenerator: return research questions 30 | ResearchAndHypothesisGenerator->>+hypothesis_prompt_template: instantiate prompt template 31 | hypothesis_prompt_template->>+ResearchAndHypothesisGenerator: return prompt template 32 | ResearchAndHypothesisGenerator->>+hypothesis_chain: instantiate LLMChain 33 | hypothesis_chain->>+ResearchAndHypothesisGenerator: return LLMChain 34 | ResearchAndHypothesisGenerator->>+OpenAI: generate hypotheses 35 | OpenAI->>+hypothesis_chain: generate hypotheses 36 | hypothesis_chain->>+OpenAI: return hypotheses 37 | OpenAI->>-ResearchAndHypothesisGenerator: return hypotheses 38 | ResearchAndHypothesisGenerator->>-User: return research questions and hypotheses 39 | ``` 40 | ## Output 41 | [![Output image](output.png)](https://github.com/bhaskatripathi/HypothesisHub/blob/main/output.png) 42 | 43 | ## NOTE 44 | Please give a star if you like this project and find it useful. 45 | ## Star History 46 | 47 | [![Star History Chart](https://api.star-history.com/svg?repos=bhaskatripathi/HypothesisHub&type=Date)](https://star-history.com/#bhaskatripathi/HypothesisHub&Date) 48 | 49 | -------------------------------------------------------------------------------- /Hypothesis_Hub.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "provenance": [], 7 | "authorship_tag": "ABX9TyNme6zJcGVXYUd9HHiTb08M", 8 | "include_colab_link": true 9 | }, 10 | "kernelspec": { 11 | "name": "python3", 12 | "display_name": "Python 3" 13 | }, 14 | "language_info": { 15 | "name": "python" 16 | } 17 | }, 18 | "cells": [ 19 | { 20 | "cell_type": "markdown", 21 | "metadata": { 22 | "id": "view-in-github", 23 | "colab_type": "text" 24 | }, 25 | "source": [ 26 | "\"Open" 27 | ] 28 | }, 29 | { 30 | "cell_type": "markdown", 31 | "source": [ 32 | "## **Hypothesis Hub**: *An AI Tool for Automated Research Question and Hypothesis Generation from a given Scientific Literature*" 33 | ], 34 | "metadata": { 35 | "id": "CiJGS2kfWEhN" 36 | } 37 | }, 38 | { 39 | "cell_type": "code", 40 | "execution_count": 1, 41 | "metadata": { 42 | "colab": { 43 | "base_uri": "https://localhost:8080/" 44 | }, 45 | "id": "3m1H_uP4zi5M", 46 | "outputId": "48a8f19e-91b8-4a1e-bfb7-a3fada3e0b45" 47 | }, 48 | "outputs": [ 49 | { 50 | "output_type": "stream", 51 | "name": "stdout", 52 | "text": [ 53 | "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n", 54 | "Collecting OpenAI\n", 55 | " Downloading openai-0.27.4-py3-none-any.whl (70 kB)\n", 56 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m70.3/70.3 kB\u001b[0m \u001b[31m1.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 57 | "\u001b[?25hCollecting langchain\n", 58 | " Downloading langchain-0.0.138-py3-none-any.whl (520 kB)\n", 59 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m520.7/520.7 kB\u001b[0m \u001b[31m9.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 60 | "\u001b[?25hRequirement already satisfied: tqdm in /usr/local/lib/python3.9/dist-packages (from OpenAI) (4.65.0)\n", 61 | "Requirement already satisfied: requests>=2.20 in /usr/local/lib/python3.9/dist-packages (from OpenAI) (2.27.1)\n", 62 | "Collecting aiohttp\n", 63 | " Downloading aiohttp-3.8.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB)\n", 64 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.0/1.0 MB\u001b[0m \u001b[31m18.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 65 | "\u001b[?25hRequirement already satisfied: PyYAML>=5.4.1 in /usr/local/lib/python3.9/dist-packages (from langchain) (6.0)\n", 66 | "Collecting async-timeout<5.0.0,>=4.0.0\n", 67 | " Downloading async_timeout-4.0.2-py3-none-any.whl (5.8 kB)\n", 68 | "Requirement already satisfied: pydantic<2,>=1 in /usr/local/lib/python3.9/dist-packages (from langchain) (1.10.7)\n", 69 | "Collecting SQLAlchemy<2,>=1\n", 70 | " Downloading SQLAlchemy-1.4.47-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB)\n", 71 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m23.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 72 | "\u001b[?25hRequirement already satisfied: numpy<2,>=1 in /usr/local/lib/python3.9/dist-packages (from langchain) (1.22.4)\n", 73 | "Collecting openapi-schema-pydantic<2.0,>=1.2\n", 74 | " Downloading openapi_schema_pydantic-1.2.4-py3-none-any.whl (90 kB)\n", 75 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m90.0/90.0 kB\u001b[0m \u001b[31m2.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 76 | "\u001b[?25hRequirement already satisfied: tenacity<9.0.0,>=8.1.0 in /usr/local/lib/python3.9/dist-packages (from langchain) (8.2.2)\n", 77 | "Collecting dataclasses-json<0.6.0,>=0.5.7\n", 78 | " Downloading dataclasses_json-0.5.7-py3-none-any.whl (25 kB)\n", 79 | "Requirement already satisfied: charset-normalizer<4.0,>=2.0 in /usr/local/lib/python3.9/dist-packages (from aiohttp->OpenAI) (2.0.12)\n", 80 | "Collecting frozenlist>=1.1.1\n", 81 | " Downloading frozenlist-1.3.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (158 kB)\n", 82 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m158.8/158.8 kB\u001b[0m \u001b[31m1.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 83 | "\u001b[?25hCollecting multidict<7.0,>=4.5\n", 84 | " Downloading multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (114 kB)\n", 85 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m114.2/114.2 kB\u001b[0m \u001b[31m3.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 86 | "\u001b[?25hCollecting yarl<2.0,>=1.0\n", 87 | " Downloading yarl-1.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (264 kB)\n", 88 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m264.6/264.6 kB\u001b[0m \u001b[31m8.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 89 | "\u001b[?25hCollecting aiosignal>=1.1.2\n", 90 | " Downloading aiosignal-1.3.1-py3-none-any.whl (7.6 kB)\n", 91 | "Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.9/dist-packages (from aiohttp->OpenAI) (22.2.0)\n", 92 | "Collecting marshmallow<4.0.0,>=3.3.0\n", 93 | " Downloading marshmallow-3.19.0-py3-none-any.whl (49 kB)\n", 94 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.1/49.1 kB\u001b[0m \u001b[31m2.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 95 | "\u001b[?25hCollecting typing-inspect>=0.4.0\n", 96 | " Downloading typing_inspect-0.8.0-py3-none-any.whl (8.7 kB)\n", 97 | "Collecting marshmallow-enum<2.0.0,>=1.5.1\n", 98 | " Downloading marshmallow_enum-1.5.1-py2.py3-none-any.whl (4.2 kB)\n", 99 | "Requirement already satisfied: typing-extensions>=4.2.0 in /usr/local/lib/python3.9/dist-packages (from pydantic<2,>=1->langchain) (4.5.0)\n", 100 | "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.9/dist-packages (from requests>=2.20->OpenAI) (2022.12.7)\n", 101 | "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.9/dist-packages (from requests>=2.20->OpenAI) (1.26.15)\n", 102 | "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/dist-packages (from requests>=2.20->OpenAI) (3.4)\n", 103 | "Requirement already satisfied: greenlet!=0.4.17 in /usr/local/lib/python3.9/dist-packages (from SQLAlchemy<2,>=1->langchain) (2.0.2)\n", 104 | "Requirement already satisfied: packaging>=17.0 in /usr/local/lib/python3.9/dist-packages (from marshmallow<4.0.0,>=3.3.0->dataclasses-json<0.6.0,>=0.5.7->langchain) (23.0)\n", 105 | "Collecting mypy-extensions>=0.3.0\n", 106 | " Downloading mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB)\n", 107 | "Installing collected packages: SQLAlchemy, mypy-extensions, multidict, marshmallow, frozenlist, async-timeout, yarl, typing-inspect, openapi-schema-pydantic, marshmallow-enum, aiosignal, dataclasses-json, aiohttp, OpenAI, langchain\n", 108 | " Attempting uninstall: SQLAlchemy\n", 109 | " Found existing installation: SQLAlchemy 2.0.9\n", 110 | " Uninstalling SQLAlchemy-2.0.9:\n", 111 | " Successfully uninstalled SQLAlchemy-2.0.9\n", 112 | "Successfully installed OpenAI-0.27.4 SQLAlchemy-1.4.47 aiohttp-3.8.4 aiosignal-1.3.1 async-timeout-4.0.2 dataclasses-json-0.5.7 frozenlist-1.3.3 langchain-0.0.138 marshmallow-3.19.0 marshmallow-enum-1.5.1 multidict-6.0.4 mypy-extensions-1.0.0 openapi-schema-pydantic-1.2.4 typing-inspect-0.8.0 yarl-1.8.2\n" 113 | ] 114 | } 115 | ], 116 | "source": [ 117 | "pip install OpenAI langchain\n" 118 | ] 119 | }, 120 | { 121 | "cell_type": "code", 122 | "source": [ 123 | "from langchain.llms import OpenAI\n", 124 | "from langchain.chains import LLMChain, SequentialChain\n", 125 | "from langchain.prompts import PromptTemplate\n", 126 | "from langchain.memory import SimpleMemory\n", 127 | "import os" 128 | ], 129 | "metadata": { 130 | "id": "VwyIL17MVE0t" 131 | }, 132 | "execution_count": 2, 133 | "outputs": [] 134 | }, 135 | { 136 | "cell_type": "markdown", 137 | "source": [ 138 | "## **The following code generates three research questions and hypothesis (Ho,H1) for each of the research questions.**\n", 139 | "The code can be modified to address more research questions based on individual needs" 140 | ], 141 | "metadata": { 142 | "id": "euCjPxxhVDZn" 143 | } 144 | }, 145 | { 146 | "cell_type": "markdown", 147 | "source": [ 148 | "# **Sequence Diagram**" 149 | ], 150 | "metadata": { 151 | "id": "uDjBumR7Xf-M" 152 | } 153 | }, 154 | { 155 | "cell_type": "code", 156 | "source": [ 157 | "from IPython.display import Image\n", 158 | "Image(url='https://raw.githubusercontent.com/bhaskatripathi/HypothesisHub/main/Sequence%20diagram.PNG')\n" 159 | ], 160 | "metadata": { 161 | "id": "xO5IJiUXVinn", 162 | "colab": { 163 | "base_uri": "https://localhost:8080/", 164 | "height": 905 165 | }, 166 | "outputId": "009d209e-8b39-4e5f-e2bd-1e525319c8e2" 167 | }, 168 | "execution_count": 3, 169 | "outputs": [ 170 | { 171 | "output_type": "execute_result", 172 | "data": { 173 | "text/html": [ 174 | "" 175 | ], 176 | "text/plain": [ 177 | "" 178 | ] 179 | }, 180 | "metadata": {}, 181 | "execution_count": 3 182 | } 183 | ] 184 | }, 185 | { 186 | "cell_type": "code", 187 | "source": [ 188 | "class ResearchAndHypothesisGenerator:\n", 189 | " def __init__(self, openai_api_key):\n", 190 | " self.llm = OpenAI(temperature=0.7, openai_api_key=openai_api_key,model_name=\"text-davinci-003\")\n", 191 | "\n", 192 | " research_question_template = \"\"\"Given the following text, generate three research questions related to the topic. Ensure that the research questions are clear, focused, and can be investigated using a scientific method. Each research question should ideally involve one or more variables that can be measured or manipulated. \n", 193 | "Text: {text}\n", 194 | "Examples of good research questions:\n", 195 | "- How does variable A affect variable B?\n", 196 | "- What is the relationship between variable X and variable Y?\n", 197 | "- To what extent does factor M influence outcome N?\n", 198 | "Research Question 1: \n", 199 | "Research Question 2: \n", 200 | "Research Question 3: \"\"\"\n", 201 | " self.rq_prompt_template = PromptTemplate(input_variables=[\"text\"], template=research_question_template)\n", 202 | " self.research_question_chain = LLMChain(\n", 203 | " llm=self.llm, prompt=self.rq_prompt_template, output_key=\"research_questions\"\n", 204 | " )\n", 205 | "\n", 206 | " hypothesis_template = \"\"\"Given the research question \"{research_question}\", generate a null hypothesis (H0) and an alternate hypothesis (H1). The null hypothesis should represent the absence of an effect, relationship, or difference, while the alternate hypothesis should represent the presence of an effect, relationship, or difference. Ensure that hypotheses H0 and H1 are never the same for the research question \"{research_question}\". \n", 207 | "Null Hypothesis (H0):\n", 208 | "Alternate Hypothesis (H1):\"\"\"\n", 209 | "\n", 210 | " self.hypothesis_prompt_template = PromptTemplate(input_variables=[\"research_question\"], template=hypothesis_template)\n", 211 | " self.hypothesis_chain = LLMChain(\n", 212 | " llm=self.llm, prompt=self.hypothesis_prompt_template, output_key=\"hypotheses\"\n", 213 | " )\n", 214 | "\n", 215 | " def generate_research_questions(self, user_text):\n", 216 | " result = self.research_question_chain({\"text\": user_text})\n", 217 | " research_questions = [rq.strip() for rq in result[\"research_questions\"].split('\\n') if rq.startswith('Research Question')]\n", 218 | " return research_questions\n", 219 | "\n", 220 | " def generate_hypotheses(self, research_questions):\n", 221 | " hypotheses = []\n", 222 | "\n", 223 | " for question in research_questions:\n", 224 | " # Generate null hypothesis (H0)\n", 225 | " h0_result = self.hypothesis_chain({\"research_question\": question, \"hypothesis_type\": \"null\"})\n", 226 | " h0_lines = [line.strip() for line in h0_result[\"hypotheses\"].split('\\n') if line.strip()]\n", 227 | " if len(h0_lines) > 0:\n", 228 | " h0 = h0_lines[0]\n", 229 | " else:\n", 230 | " h0 = \"N/A\"\n", 231 | "\n", 232 | " # Generate alternate hypothesis (H1)\n", 233 | " h1_result = self.hypothesis_chain({\"research_question\": question, \"hypothesis_type\": \"alternate\"})\n", 234 | " h1_lines = [line.strip() for line in h1_result[\"hypotheses\"].split('\\n') if line.strip()]\n", 235 | " if len(h1_lines) > 0:\n", 236 | " h1 = h1_lines[0]\n", 237 | " else:\n", 238 | " h1 = \"N/A\"\n", 239 | "\n", 240 | " # Ensure H0 and H1 are different, generate new H1 if needed\n", 241 | " while h1 == h0 or h1 == \"N/A\":\n", 242 | " h1_result = self.hypothesis_chain({\"research_question\": question, \"hypothesis_type\": \"alternate\"})\n", 243 | " h1_lines = [line.strip() for line in h1_result[\"hypotheses\"].split('\\n') if line.strip()]\n", 244 | " if len(h1_lines) > 0:\n", 245 | " h1 = h1_lines[0]\n", 246 | " else:\n", 247 | " h1 = \"N/A\"\n", 248 | "\n", 249 | " hypotheses.append((h0, h1))\n", 250 | "\n", 251 | " return hypotheses\n", 252 | "\n", 253 | " def create_hypotheses(self, research_questions):\n", 254 | " hypotheses = []\n", 255 | "\n", 256 | " for question in research_questions:\n", 257 | " result = self.hypothesis_chain({\"research_question\": question})\n", 258 | " hypothesis_lines = [line.strip() for line in result[\"hypotheses\"].split('\\n') if line.strip()]\n", 259 | "\n", 260 | " if len(hypothesis_lines) < 2:\n", 261 | " # If we don't have two hypotheses, generate new hypotheses until we have both H0 and H1\n", 262 | " while len(hypothesis_lines) < 2:\n", 263 | " result = self.hypothesis_chain({\"research_question\": question})\n", 264 | " hypothesis_lines = [line.strip() for line in result[\"hypotheses\"].split('\\n') if line.strip()]\n", 265 | "\n", 266 | " h0 = hypothesis_lines[0]\n", 267 | " h1 = hypothesis_lines[1]\n", 268 | "\n", 269 | " # Ensure H0 and H1 are different, generate new hypotheses if needed\n", 270 | " while h1 == h0:\n", 271 | " result = self.hypothesis_chain({\"research_question\": question})\n", 272 | " hypothesis_lines = [line.strip() for line in result[\"hypotheses\"].split('\\n') if line.strip()]\n", 273 | " if len(hypothesis_lines) >= 2:\n", 274 | " h0 = hypothesis_lines[0]\n", 275 | " h1 = hypothesis_lines[1]\n", 276 | "\n", 277 | " hypotheses.append((h0, h1))\n", 278 | "\n", 279 | " return hypotheses\n", 280 | "\n", 281 | "\n", 282 | "if __name__ == \"__main__\":\n", 283 | " user_text = \"\"\"Objective: To identify the factors responsible for price inconsistencies across different major cryptocurrency exchanges .\n", 284 | "Our third objective is to determine the factors responsible for price inconsistencies across different major Bitcoin exchanges. \n", 285 | "To examine the pricing inconsistencies across various exchanges, the Spread (Bid/Ask difference) in the top 3 volume traded Crypto exchanges will be studied. \n", 286 | "Factors such as Exchange volume, exchange market size, transaction fee cost of exchange, Anti Money Laundering (AML) or Know Your Customer (KYC) requirement will also be considered among others. \n", 287 | "It is also expected that higher transaction volumes lead to a lower difference between the prices at which a Cryptocurrencies are traded across different exchanges. \n", 288 | "Comparative prices of one exchange to another by using regression and other appropriate techniques will be analyzed. \n", 289 | " \"\"\"\n", 290 | " os.environ[\"OPENAI_API_KEY\"] = #\"you_openai_api_key\"\n", 291 | " api_key=os.environ[\"OPENAI_API_KEY\"]\n", 292 | " generator = ResearchAndHypothesisGenerator(api_key)\n", 293 | " print(\"RUNNING CHAIN OF THOUGHTS...:\")\n", 294 | " research_questions = generator.generate_research_questions(user_text)\n", 295 | " print(\"ORIGINAL TEXT:\")\n", 296 | " print(user_text)\n", 297 | " print(\"\\n\")\n", 298 | " \n", 299 | " print(\"LIST OF REQSEARCH QUESTIONS:\")\n", 300 | " for i, question in enumerate(research_questions):\n", 301 | " print(f\"{i + 1}: {question}\")\n", 302 | "\n", 303 | " hypotheses = generator.create_hypotheses(research_questions)\n", 304 | " print(\"\\nLIST OF HYPOTHESIS:\")\n", 305 | " for i, hypothesis_pair in enumerate(hypotheses):\n", 306 | " print(f\"\\nRESEARCH QUESTION {i + 1}:\")\n", 307 | " print(f\"NULL HYPOTHESIS (H0): {hypothesis_pair[0]}\")\n", 308 | " print(f\"ALTERNATE HYPOTHESIS (H1): {hypothesis_pair[1]}\")\n" 309 | ], 310 | "metadata": { 311 | "colab": { 312 | "base_uri": "https://localhost:8080/" 313 | }, 314 | "id": "qsbXdyQ_5JYk", 315 | "outputId": "1b8c474b-85cb-4929-8e8c-5c8b07a1694a" 316 | }, 317 | "execution_count": 7, 318 | "outputs": [ 319 | { 320 | "output_type": "stream", 321 | "name": "stdout", 322 | "text": [ 323 | "RUNNING CHAIN OF THOUGHTS...:\n", 324 | "ORIGINAL TEXT:\n", 325 | "Objective: To identify the factors responsible for price inconsistencies across different major cryptocurrency exchanges .\n", 326 | "Our third objective is to determine the factors responsible for price inconsistencies across different major Bitcoin exchanges. \n", 327 | "To examine the pricing inconsistencies across various exchanges, the Spread (Bid/Ask difference) in the top 3 volume traded Crypto exchanges will be studied. \n", 328 | "Factors such as Exchange volume, exchange market size, transaction fee cost of exchange, Anti Money Laundering (AML) or Know Your Customer (KYC) requirement will also be considered among others. \n", 329 | "It is also expected that higher transaction volumes lead to a lower difference between the prices at which a Cryptocurrencies are traded across different exchanges. \n", 330 | "Comparative prices of one exchange to another by using regression and other appropriate techniques will be analyzed. \n", 331 | " \n", 332 | "\n", 333 | "\n", 334 | "LIST OF REQSEARCH QUESTIONS:\n", 335 | "1: Research Question 1: How does exchange volume affect the spread (Bid/Ask difference) of the top 3 volume traded crypto exchanges?\n", 336 | "2: Research Question 2: What is the relationship between exchange market size and the spread (Bid/Ask difference) of the top 3 volume traded crypto exchanges?\n", 337 | "3: Research Question 3: To what extent does the transaction fee cost of exchange influence the comparative prices of one exchange to another?\n", 338 | "\n", 339 | "LIST OF HYPOTHESIS:\n", 340 | "\n", 341 | "RESEARCH QUESTION 1:\n", 342 | "NULL HYPOTHESIS (H0): Null Hypothesis (H0): Exchange volume has no effect on the spread (Bid/Ask difference) of the top 3 volume traded crypto exchanges.\n", 343 | "ALTERNATE HYPOTHESIS (H1): Alternate Hypothesis (H1): Exchange volume has an effect on the spread (Bid/Ask difference) of the top 3 volume traded crypto exchanges.\n", 344 | "\n", 345 | "RESEARCH QUESTION 2:\n", 346 | "NULL HYPOTHESIS (H0): Null Hypothesis (H0): There is no relationship between exchange market size and the spread (Bid/Ask difference) of the top 3 volume traded crypto exchanges.\n", 347 | "ALTERNATE HYPOTHESIS (H1): Alternate Hypothesis (H1): There is a relationship between exchange market size and the spread (Bid/Ask difference) of the top 3 volume traded crypto exchanges.\n", 348 | "\n", 349 | "RESEARCH QUESTION 3:\n", 350 | "NULL HYPOTHESIS (H0): The transaction fee cost of exchange has no effect on the comparative prices of one exchange to another.\n", 351 | "ALTERNATE HYPOTHESIS (H1): The transaction fee cost of exchange has an effect on the comparative prices of one exchange to another.\n" 352 | ] 353 | } 354 | ] 355 | } 356 | ] 357 | } --------------------------------------------------------------------------------