From d9137d71abf74f8622104612cf8e04ee7494a84e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?The=20Vinh=20LUONG=20=28L=C6=AF=C6=A0NG=20Th=E1=BA=BF=20Vi?= =?UTF-8?q?nh=29?= Date: Wed, 2 Oct 2024 11:05:24 -0700 Subject: [PATCH 1/9] remove diagrams --- docs/diagrams/ssm-composability.drawio.png | Bin 120159 -> 0 bytes .../ssm-full-industrial-use-case.drawio.png | Bin 234121 -> 0 bytes .../ssm-industrial-use-case.drawio.png | Bin 132784 -> 0 bytes docs/diagrams/ssm-key-components.drawio.png | Bin 122042 -> 0 bytes ...llama-index-integration-patterns.drawio.png | Bin 182836 -> 0 bytes .../ssm-llama-index-integration.drawio.png | Bin 183686 -> 0 bytes 6 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/diagrams/ssm-composability.drawio.png delete mode 100644 docs/diagrams/ssm-full-industrial-use-case.drawio.png delete mode 100644 docs/diagrams/ssm-industrial-use-case.drawio.png delete mode 100644 docs/diagrams/ssm-key-components.drawio.png delete mode 100644 docs/diagrams/ssm-llama-index-integration-patterns.drawio.png delete mode 100644 docs/diagrams/ssm-llama-index-integration.drawio.png diff --git a/docs/diagrams/ssm-composability.drawio.png b/docs/diagrams/ssm-composability.drawio.png deleted file mode 100644 index b7264556590e6e7b2e56773ba0949bc2ef89d666..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120159 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 z%0A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⪙Be#3}#e%G5 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 diff --git a/docs/diagrams/ssm-industrial-use-case.drawio.png b/docs/diagrams/ssm-industrial-use-case.drawio.png deleted file mode 100644 index 343182cb4c4efe6947c16b374aff9b0f876905fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132784 zcmeEP2_TeP8=fIMAry)vYa)iRrR-bweJuuq$uP1L8MIJIB!w(VT975QkfoGXrA1On zrHGV-BJ`hc7EN()-P?bQd;Pb+X3qD`x1INU-{*ba=bRH~YOKq`$jbdnhzYG3>`^% zu&kCa0-=pXy9W5-e85N0?u~Q9xMR?6#BB&^gsh~ryd*-=5^R-KN63P|WMrgdloafV z`=dP2KBNN~;leOjEJ_%mgOrj6hY~YFxng_*aQ>dcvKrvKzE1!e3;qSo;BONP@Ru$4 zzl^k#4AMzK9DG#w^~IuX&@Kj;0O%;P3R1H2pjpg7&(g?H7@-M1V=-Q6@Q*Iq)e8sx z#LW*CEQP^=-4QZU#Pe!;`r*96PC7C&2q|ePq`VAL3Lz~AcK&j!ItV$iw+v{rK)Iv* zFchbQo&q`myMv?jfEQo>&wPXBBKKX|w@c8?;Xl+Rq;Y9vk5yl1~n82nh8> z6IAL0Qz!gB(=N3wAk&#m(90Vcl;YU6ZMS}$851rvWyXrk;R;)5hVPCpzD9FC$3DL0dM z@($5NVu45K1y1RA2xOG#yKQfU&e~4e45k-fRj)+7c ziKij?epzYK_uwy%6ro6RGoBPa6hV#})5i!DC-pC->-yr6w7)pCpYv0okG^=RFHY+Z z{M4VjAqs_@&yAh>H7WBnxemstaU;-$@82AQ7 zF+vyspT8If^o1P5{!O+4@cO?o#E@PMiU?!shjT^ygQy~{?c;&*L8JXJJ|5tkg@w^1 zI|3*WpkWZ2G`tu;A~!^knc#gnIxqK`;FmusSt#{l{K=^xyD7M4SD;gb@;k_-+{a zm%0kl?Nhi4vp^IU6955eb$|arKa>x|3H&DsP9x_8h#vy?^Ci|ybm~N(qJ8{vejxk!wzJ7CfMatZ?@Vs{ViJ~U zZ@`J60s{R25`oGprhXuonfRs)9tN=)5S$p-K*0V1hM#az6dv;ne+D7l?_@UrAb<8N z?CV>m3`w>(ii~GUrc9p1o=qe3BE13_^*e59?OEmNUZ15vL0E*~0 z;n&EHPTe&i5Ebwfe$g5Qsz4;)XO45h0p|y0ZGPUQHa#@(gpk`M_{>0WP~x2Rir@*6 zqAr4*?#)22_~-S5*^B_HKg#~q;>15*`ux$9fUw`cuVf)JMM{A7#(>JaTc9g&gcBZe zA{m&Vt-l41WEOjpLnD{_1HG}pzY?nbh~D@c+gtw~TOeQQu;+k=ol*y#)0 zl;02tiDwA13Q2#0o(K{`$;kNvo*dM@$=fHQIta4T0Tcy&G`XNJjRC4PX`nch_W#=I zrM*!;f$k^(2S`;JAfN(!5hYZ_3k3-h@yduv@+7nWzh^g~5Kqv~5G6)XrN9G{jF75> z#Pk2NNivy-BS&j;6^Ft;<;VpQ${hJu7^o~jR62j4sv>OrO29_x$q8G@`nj(+kXyef zu#7CsLTv+l!t6H~n8^ev$oMMxgb*M77u}r~I#kjX=j{vBPCi802<1^J^c1s#I)W%^ zR!|2CxQyH-*BA!aBIP~g6j8ornnrF~T2naEsmQo5t_Jc7-yu?dGDymUGyGBMc-$vI~lE^+&20X;C z=T|^4{{?Zog5E{QGxPrNNZ1_xSKxOrzvl1GUBr^1Ui;) zF`bx&H;SNWHbnV&1VX}WAm@i9vubC$(ldk>AaUO!+F4I_{)L{5a9^`V z3tZ*&9K-NaMmzI0V^iM#v>13Ziy29SXGma(a^TIBz4oJ?cIK1MQ{KMJbSNax8tp%1 zw1j%tzYreGD*vYU5XUK9&5wFo!VsQ+q0y4ce3a?+Y$7&|#^wH$(Gp88|30fFy|fg9 z9d$R9FVN3S!7HJqJfw)K8bd6~8wHAt=#a^r61f!ZAAt4+fgea1F<^)?IH0T+)MWbQ z`}bIM!uTq3egqEnldL+#+keBV|5DBgNfzGx3FjmOv6G-rq^CFOL`vT&ti}=@0t(0k z#g�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 diff --git a/docs/diagrams/ssm-key-components.drawio.png b/docs/diagrams/ssm-key-components.drawio.png deleted file mode 100644 index 13770ee7d95ff2adf8242b1d0d5de1e9e1644f09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122042 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≫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 J7Ng7q{|_*Z1=s)p diff --git a/docs/diagrams/ssm-llama-index-integration-patterns.drawio.png b/docs/diagrams/ssm-llama-index-integration-patterns.drawio.png deleted file mode 100644 index 00a93dfb03b470e9f68add4158b79e9806a42b18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 182836 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 P0e_mRx+>)etKk0tz_A}X diff --git a/docs/diagrams/ssm-llama-index-integration.drawio.png b/docs/diagrams/ssm-llama-index-integration.drawio.png deleted file mode 100644 index 557106f466ef4e716ea4493a9e1777e927b64239..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 183686 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 Date: Wed, 2 Oct 2024 14:10:06 -0700 Subject: [PATCH 2/9] update GETTING_STARTED --- docs/GETTING_STARTED.md | 4 ++-- docs/diagrams/ssm-QA-vs-PS.drawio.png | Bin 359467 -> 0 bytes docs/diagrams/ssm-class-diagram.drawio.png | Bin 216033 -> 0 bytes docs/diagrams/ssm-team-of-experts.drawio.png | Bin 166151 -> 0 bytes 4 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 docs/diagrams/ssm-QA-vs-PS.drawio.png delete mode 100644 docs/diagrams/ssm-class-diagram.drawio.png delete mode 100644 docs/diagrams/ssm-team-of-experts.drawio.png diff --git a/docs/GETTING_STARTED.md b/docs/GETTING_STARTED.md index 79277276f..96e5025de 100644 --- a/docs/GETTING_STARTED.md +++ b/docs/GETTING_STARTED.md @@ -16,10 +16,10 @@ Go straight to [OpenSSA Streamlit app](https://openssa.streamlit.app/) and start ## Getting Started as a Developer -See some example user programs in the [examples/notebooks](./examples/notebooks) directory. For example, to see the sample use case on ALD semiconductor knowledge, do: +See some example user programs in the [examples](./examples) directory. For example, to see the sample use case on semiconductor knowledge, do: ```bash -% cd examples/notebooks +% cd examples/semiconductor ``` ### Common `make` targets for OpenSSA developers diff --git a/docs/diagrams/ssm-QA-vs-PS.drawio.png b/docs/diagrams/ssm-QA-vs-PS.drawio.png deleted file mode 100644 index b7258c66dba60039d70516a8d9d640739c5d11ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 359467 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 diff --git a/docs/diagrams/ssm-class-diagram.drawio.png b/docs/diagrams/ssm-class-diagram.drawio.png deleted file mode 100644 index 6825e32c12e57679d89b1eef95e64b69151849ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 216033 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 @(Ed*)k{S~MjQ@H`$3I|ar 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 A`~Uy| diff --git a/docs/diagrams/ssm-team-of-experts.drawio.png b/docs/diagrams/ssm-team-of-experts.drawio.png deleted file mode 100644 index dc21e7437e06f56a001422a4a189fa98f343af9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166151 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 From 5b8e25a298e25ca1a038ef58b60178afefee7033 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?The=20Vinh=20LUONG=20=28L=C6=AF=C6=A0NG=20Th=E1=BA=BF=20Vi?= =?UTF-8?q?nh=29?= Date: Wed, 2 Oct 2024 14:11:09 -0700 Subject: [PATCH 3/9] remove old notebook tutorials --- examples/Planning-and-Reasoning.ipynb | 257 --------- examples/Tutorial.ipynb | 783 -------------------------- 2 files changed, 1040 deletions(-) delete mode 100644 examples/Planning-and-Reasoning.ipynb delete mode 100644 examples/Tutorial.ipynb diff --git a/examples/Planning-and-Reasoning.ipynb b/examples/Planning-and-Reasoning.ipynb deleted file mode 100644 index f85d915e9..000000000 --- a/examples/Planning-and-Reasoning.ipynb +++ /dev/null @@ -1,257 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Problem-Solving Agent with Planning, Reasoning & Domain Knowledge: illustrative example using `FinanceBench` financial-analysis dataset\n", - "\n", - "This notebook illustrates the use of `OpenSSA`'s `Agent` and its planning, reasoning & domain knowledge integration capabilities to solve a problem in the financial-analysis domain." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Setups" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from pprint import pprint\n", - "from IPython.display import display, Markdown" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import sys\n", - "\n", - "if cwd_is_root := ('examples' in os.listdir()):\n", - " sys.path.append('examples')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from pathlib import Path\n", - "from dotenv import load_dotenv\n", - "\n", - "load_dotenv(dotenv_path=Path('examples' if cwd_is_root else '.') / '.env')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Imports of Agent, Planning, Reasoning & Resource classes from `OpenSSA`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from openssa import (Agent,\n", - " HTP, AutoHTPlanner,\n", - " OodaReasoner,\n", - " FileResource)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Problem to Solve and Knowledge & Resource available for use" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# problem to solve\n", - "PROBLEM = 'Does AMD have a healthy liquidity profile based on FY22 Quick Ratio?'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# available domain knowledge (stored as string)\n", - "from FinanceBench.data_and_knowledge import EXPERT_KNOWLEDGE as FINANCIAL_KNOWLEDGE" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# available informational resource: AMD's 2022 10K filing\n", - "\n", - "from FinanceBench.data_and_knowledge import Doc as FinancialDoc\n", - "\n", - "AMD_2022_10K = FileResource(path=FinancialDoc('AMD_2022_10K').dir_path)\n", - "\n", - "display(Markdown(AMD_2022_10K.overview))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Problem-Solving by Agent with Hierarchical Task Planning (HTP) & OODA Reasoning (OODAR)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "agent = Agent(planner=AutoHTPlanner(max_depth=2, max_subtasks_per_decomp=3),\n", - " reasoner=OodaReasoner(),\n", - " resources={AMD_2022_10K})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Problem-Solving with Automated Dynamic Planning (default)\n", - "\n", - "Without additional domain knowledge and expert inputs, the `agent` can attempt to solve the stated problem by using its Planner to decompose the problem into a 1-level-deep sub-task plan and execute that plan using its OODA Reasoner.\n", - "\n", - "At any point during the OODA reasoning execution, if a confident answer cannot be established for the concerned sub-task, the `agent` would use the Planner again to decompose that sub-task 1 level further. This recursive decomposition can be done up to the `agent`'s maximum allowed planning depth.\n", - "\n", - "This default solving mechanism provides a baseline that is often acceptable for domains that are popularly known/understood." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "solution_from_auto_plan_dynamically_executed = agent.solve(PROBLEM)\n", - "\n", - "display(Markdown(solution_from_auto_plan_dynamically_executed))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Problem-Solving with Expert-Guided Planning\n", - "\n", - "One way to make the solution highly accurate and reliable is to provide the `agent` with plan from a knowledgeable expert:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "expert_plan = HTP.from_dict(\n", - " {\n", - " 'task': PROBLEM,\n", - " 'sub-plans': [\n", - " {\n", - " 'task': 'calculate Quick Ratio conservatively as (`Cash & Cash Equivalents` + `Accounts Receivable`) / Current Liabilities',\n", - " 'sub-plans': [\n", - " {\n", - " 'task': 'retrieve `Cash & Cash Equivalents`, `Accounts Receivable` & `Current Liabilities` from Balance Sheet'\n", - " },\n", - " ]\n", - " },\n", - " {\n", - " 'task': 'see whether Quick Ratio is healthy, i.e. greater than 1'\n", - " },\n", - " ]\n", - " }\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "expert_guided_solution = agent.solve(PROBLEM, plan=expert_plan)\n", - "\n", - "display(Markdown(expert_guided_solution))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Problem-Solving with Domain Knowledge Injection\n", - "\n", - "If expert-guided solution plans are not readily available in your use case, another and sometimes lighter-weight way to achieve consistently good problem-solving outcomes is to give the `agent` access to domain-specific knowledge, so that such knowledge can be used for constructing effective solution plans for problems in the concerned domain, and for reasoning accurately during the execution process:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "agent_with_knowledge = Agent(planner=AutoHTPlanner(max_depth=2, max_subtasks_per_decomp=3),\n", - " reasoner=OodaReasoner(),\n", - " knowledge={FINANCIAL_KNOWLEDGE},\n", - " resources={AMD_2022_10K})" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "solution_from_auto_plan_dynamically_executed_with_knowledge = agent_with_knowledge.solve(PROBLEM, dynamic=False)\n", - "\n", - "display(Markdown(solution_from_auto_plan_dynamically_executed_with_knowledge))" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "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.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/examples/Tutorial.ipynb b/examples/Tutorial.ipynb deleted file mode 100644 index 04d9e4a85..000000000 --- a/examples/Tutorial.ipynb +++ /dev/null @@ -1,783 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Build an AI Agent with SEC Filing Insights in Just 10 Minutes Using OpenSSA\n", - "--------------" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### In this tutorial, you will learn how to:\n", - "\n", - "1. Build an AI Agent from scratch with Hierachichy Task Planing (HTP) using openSSA\n", - "2. Improve agent's performance by:\n", - " - Incorporating external knowledge source\n", - " - Providing customized plan from the expert\n", - " - Enabling dynamic solving capability\n", - "\n", - "### By the end of this tutorial, you will understand:\n", - "- What is HTP and how it works?\n", - "- How to customize OpenSSA components to solve your complex problem?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Setups" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's start by impporting the neccessary dependencies." - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The autoreload extension is already loaded. To reload it, use:\n", - " %reload_ext autoreload\n" - ] - } - ], - "source": [ - "%load_ext autoreload\n", - "%autoreload" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "metadata": {}, - "outputs": [], - "source": [ - "from pathlib import Path\n", - "from pprint import pprint\n", - "import os\n", - "import sys\n", - "\n", - "from IPython.display import display, Markdown\n", - "from dotenv import load_dotenv\n", - "import yaml\n", - "\n", - "from openssa import Agent, HTP, AutoHTPlanner, OodaReasoner, FileResource\n", - "from openssa.utils.llms import OpenAILLM\n", - "from openssa.l2.task import Task" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Make sure you plave your OpenAI API key in `example/.env`\n", - "\n", - "```\n", - "OPENAI_API_KEY=...\n", - "```\n", - "\n", - "[Where do I find my OpenAI API Key?](https://help.openai.com/en/articles/4936850-where-do-i-find-my-openai-api-key)" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "metadata": {}, - "outputs": [], - "source": [ - "# make sure we're in the right folder\n", - "if cwd_is_root := ('examples' in os.listdir()):\n", - " sys.path.append('examples')" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Sanity check if we have the OpenAI API setup: True\n" - ] - } - ], - "source": [ - "print('Sanity check if we have the OpenAI API setup: ', load_dotenv(dotenv_path=Path('examples' if cwd_is_root else '.') / '.env'))" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [], - "source": [ - "# util function to summarize answer\n", - "def summarize_ans(ans, max_tokens=100):\n", - " llm=OpenAILLM()\n", - " response = llm.call(\n", - " messages=[\n", - " {\"role\": \"system\", \"content\": \"You are a helpful assistant.\"},\n", - " {\"role\": \"user\", \"content\": \"Please summarize the following text into 1-2 sentences: \" + ans}\n", - " ],\n", - " max_tokens=max_tokens,\n", - " temperature=0.7\n", - " )\n", - " summary = response.choices[0].message.content\n", - " return summary" - ] - }, - { - "cell_type": "code", - "execution_count": 120, - "metadata": {}, - "outputs": [], - "source": [ - "# util function to print results\n", - "import textwrap\n", - "\n", - "def namestr(obj, namespace):\n", - " return [name for name in namespace if namespace[name] is obj]\n", - "\n", - "def print_solution(sol, present_full_answer=False):\n", - " agent_name = namestr(sol, globals())[0].upper().replace('_', ' ')\n", - " # print(agent_name)\n", - " print('PROBLEM: ')\n", - " print('='*80)\n", - " print(PROBLEM, '\\n')\n", - " if GROUND_TRUTH_ANSWER:\n", - " print('GROUND TRUTH ANSWER: ')\n", - " print('='*80)\n", - " print(GROUND_TRUTH_ANSWER, '\\n')\n", - " if present_full_answer:\n", - " print(f'{agent_name} FULL:')\n", - " print('='*80)\n", - " print(textwrap.fill(sol, 80))\n", - " else:\n", - " print(f'{agent_name} SUMMARIZED:')\n", - " print('='*80)\n", - " print(textwrap.fill(summarize_ans(sol), 80))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Data preparation" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We're going to use the FinanceBench dataset to demonstrate. FinanceBench is a dataset to benchmark question answering capability in financial domain.\n", - "\n", - "We have loaded a sample SEC filing for 3M from 2022. \n", - "https://github.com/patronus-ai/financebench/blob/main/pdfs/3M_2022_10K.pdf\n", - "\n", - "- Let's look at a sample question: \n", - "\n", - "`Is 3M a capital-intensive business based on FY2022 data`\n", - "\n", - "- The expected answer for this question is:\n", - "\n", - "`No, the company is managing its CAPEX and Fixed Assets pretty efficiently,\n", - " which is evident from below key metrics:\n", - " CAPEX/Revenue Ratio: 5.1%\n", - " Fixed assets/Total Assets: 20%\n", - " Return on Assets= 12.4%`" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [], - "source": [ - "DOC_PATH = 'sample_data/3M_2022_10K/'\n", - "PROBLEM = 'Is 3M a capital-intensive business based on FY2022 data?'\n", - "GROUND_TRUTH_ANSWER ='''\n", - " No, the company is managing its CAPEX and Fixed Assets pretty efficiently,\n", - " which is evident from below key metrics:\n", - " CAPEX/Revenue Ratio: 5.1%\n", - " Fixed assets/Total Assets: 20%\n", - " Return on Assets= 12.4%'''" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we'll build an agent from scracth using [OpenSSA](https://www.openssa.org/)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Build an AI Agent from Scratch Using OpenSSA\n", - "------------" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Base Agent" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's build our first agent with all default settings. \n", - "\n", - "" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To build an agent, the first and most basic resource we need is a document. We will learn how to enable hierarchical task planning (HTP) capability and how to customize it's component later. Let's first build a `Base Agent`` with only the document we've prepared in the previous block and see how well it can solve the question. " - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "metadata": {}, - "outputs": [], - "source": [ - "# Build a base agent\n", - "base_agent = Agent(planner=None,\n", - " reasoner=OodaReasoner(),\n", - " knowledge=None,\n", - " resources={FileResource(path=DOC_PATH)})\n", - "\n", - "base_agent_answer = base_agent.solve(problem=PROBLEM,\n", - " plan=None,\n", - " dynamic=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 121, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "PROBLEM: \n", - "================================================================================\n", - "Is 3M a capital-intensive business based on FY2022 data? \n", - "\n", - "GROUND TRUTH ANSWER: \n", - "================================================================================\n", - "\n", - " No, the company is managing its CAPEX and Fixed Assets pretty efficiently,\n", - " which is evident from below key metrics:\n", - " CAPEX/Revenue Ratio: 5.1%\n", - " Fixed assets/Total Assets: 20%\n", - " Return on Assets= 12.4% \n", - "\n", - "BASE AGENT ANSWER SUMMARIZED:\n", - "================================================================================\n", - "3M's financial statements for FY2022 show significant capital investments in\n", - "property, plant, and equipment (PP&E), with capital expenditures amounting to\n", - "$1,831 million and total assets reported at $46,455 million. The company's focus\n", - "on growth, productivity, and sustainability is reflected in its projected\n", - "capital spending of $1.5 billion to $1.8 billion for 2023, demonstrating a\n", - "commitment to supporting business activities and driving future growth through\n", - "capital investments and strategic resource management practices\n" - ] - } - ], - "source": [ - "print_solution(base_agent_answer)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this example, we can see the default answer is not that good. 3M is not a capital intensive business but the agent failed to answer the question correctly." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## How to Add External Knowledge to the Agent" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's incorporate external knowledge to the base agent. We've prepared a sample expert knowledge in `sample-data/expert-knowledge.txt` file, you can load your own knowledge by replacing the sample file with yours.\n", - "\n", - "" - ] - }, - { - "cell_type": "code", - "execution_count": 96, - "metadata": {}, - "outputs": [], - "source": [ - "with open(file='sample_data/expert-knowledge.txt',\n", - " buffering=-1,\n", - " encoding='utf-8',\n", - " errors='strict',\n", - " newline=None,\n", - " closefd=True,\n", - " opener=None) as f:\n", - " EXPERT_KNOWLEDGE: str = f.read()\n", - "\n", - "EXPERT_KNOWLEDGE_SET = set(EXPERT_KNOWLEDGE.split('\\n\\n'))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In the added knowledge, we've specified \n", - "\n", - "```\n", - "Capital-Intensiveness / Return-on-Capital Metric Formulas\n", - "---------------------------------------------------------\n", - "\n", - "`Capital Intensity Ratio` = `Total Assets` / `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`\n", - "\n", - "`Return on (Total) Assets, a.k.a. RoA or RoTA` = (\n", - " `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` /\n", - " `average Total Assets, typically between two consecutive fiscal year-ends`\n", - ")\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's add the knowledge set to our base agent." - ] - }, - { - "cell_type": "code", - "execution_count": 97, - "metadata": {}, - "outputs": [], - "source": [ - "agent_with_knowledge = Agent(planner=None,\n", - " reasoner=OodaReasoner(),\n", - " knowledge=EXPERT_KNOWLEDGE_SET,\n", - " resources={FileResource(path=DOC_PATH)})\n", - "\n", - "agent_with_knowledge_solution = agent_with_knowledge.solve(problem=PROBLEM,\n", - " plan=None,\n", - " dynamic=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 109, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "PROBLEM: \n", - "================================================================================\n", - "Is 3M a capital-intensive business based on FY2022 data? \n", - "\n", - "GROUND TRUTH ANSWER: \n", - "================================================================================\n", - "\n", - " No, the company is managing its CAPEX and Fixed Assets pretty efficiently,\n", - " which is evident from below key metrics:\n", - " CAPEX/Revenue Ratio: 5.1%\n", - " Fixed assets/Total Assets: 20%\n", - " Return on Assets= 12.4% \n", - "\n", - "AGENT WITH KNOWLEDGE SOLUTION SUMMARIZED:\n", - "================================================================================\n", - "Based on the substantial capital expenditures, large asset base, and planned\n", - "future investments in operational infrastructure and capacity enhancement, it is\n", - "reasonable to classify 3M as a capital-intensive business for FY2022.\n" - ] - } - ], - "source": [ - "print_solution(agent_with_knowledge_solution)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Although the final answer is still incorrect, we can see the reasoning behind is getting better when using external resource - the agent can now recognize `assets`` need to be taken into account when looking at capital intensiveness questions." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Get started with HTP by Adding Auto-Plan on top of Knowledge" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can see the agent is improved with added knowledge. Let's enhance it with OpenSSA's HTP feature: `AutoHTPlanner`.\n", - "\n", - "" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`HTP` is OpenSSA’s default problem-solving task plan structure.\n", - "\n", - "A `HTP` instance is a tree, in which each node can be decomposed into a number of supporting sub-HTPs, each targeting to solve a supporting sub-task.\n", - "\n", - "`HTP` execution involves using a specified Reasoner to work through sub-tasks from the lowest levels and roll up results up to the top level.\n", - "\n", - "There is also a horizontal results-sharing mechanism to enable the execution of a subsequent HTP node to benefit from results from earlier nodes at the same depth level." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`AutoHTPlanner` is OpenSSA’s default Planner to create and update problem-solving HTPs.\n", - "\n", - "Such a planner has an LM for generating new or updated task HTPs, the complexity of which is controlled by 2 key parameters `max_depth` and `max_subtasks_per_decomp`. \n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "auto_htp_agent_with_knowledge = Agent(planner=AutoHTPlanner(max_depth=2, max_subtasks_per_decomp=4),\n", - " reasoner=OodaReasoner(),\n", - " knowledge=EXPERT_KNOWLEDGE_SET,\n", - " resources={FileResource(path=DOC_PATH)})\n", - "\n", - "auto_htp_agent_with_knowledge_solution = auto_htp_agent_with_knowledge.solve(problem=PROBLEM,\n", - " plan=None,\n", - " dynamic=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can read the full logs of all the intermediate steps in `logs/auto_htp_agent_with_knowledge_logs.txt`" - ] - }, - { - "cell_type": "code", - "execution_count": 110, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "PROBLEM: \n", - "================================================================================\n", - "Is 3M a capital-intensive business based on FY2022 data? \n", - "\n", - "GROUND TRUTH ANSWER: \n", - "================================================================================\n", - "\n", - " No, the company is managing its CAPEX and Fixed Assets pretty efficiently,\n", - " which is evident from below key metrics:\n", - " CAPEX/Revenue Ratio: 5.1%\n", - " Fixed assets/Total Assets: 20%\n", - " Return on Assets= 12.4% \n", - "\n", - "AUTO HTP AGENT WITH KNOWLEDGE SOLUTION SUMMARIZED:\n", - "================================================================================\n", - "Based on the available FY2022 data, 3M's net property, plant, and equipment\n", - "(PP&E) constitutes 19.75% of its total assets, indicating that it may not be\n", - "highly capital-intensive relative to some industries. However, without\n", - "additional information on capital expenditures (CapEx) to sales ratio,\n", - "depreciation and amortization expenses, and return on assets (RoA), a definitive\n", - "assessment of 3M's capital intensity cannot be made.\n" - ] - } - ], - "source": [ - "print_solution(auto_htp_agent_with_knowledge_solution)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can see when breaking down the task into other sub-tasks, the agent gives more concrete reasons to answer the question: `key financial metrics such as the\n", - "proportion of net fixed assets to total assets, capital expenditure relative to\n", - "total net sales, depreciation and amortization expense as a percentage of total\n", - "net sales, and Return on Assets cannot be calculated without specific financial\n", - "data`. However, the final answer is still incorrect - the agent still fails to answer 3M is not a capital-intensive business." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Let's Upgrade the Agent to Solve the Problem Dynamically" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's enable another `HTP` component: `Dynamic` solving. When a problem is solved dynamically, it would be decomposed further if the sub-tasks are still not solvable.\n", - "\n", - "\n", - "" - ] - }, - { - "cell_type": "code", - "execution_count": 103, - "metadata": {}, - "outputs": [], - "source": [ - "dynamic_auto_htp_agent_with_knowledge = Agent(planner=AutoHTPlanner(max_depth=2, max_subtasks_per_decomp=4),\n", - " reasoner=OodaReasoner(),\n", - " knowledge=EXPERT_KNOWLEDGE_SET,\n", - " resources={FileResource(path=DOC_PATH)})\n", - "\n", - "dynamic_auto_htp_agent_with_knowledge_solution = dynamic_auto_htp_agent_with_knowledge.solve(problem=PROBLEM,\n", - " plan=None,\n", - " dynamic=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 111, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "PROBLEM: \n", - "================================================================================\n", - "Is 3M a capital-intensive business based on FY2022 data? \n", - "\n", - "GROUND TRUTH ANSWER: \n", - "================================================================================\n", - "\n", - " No, the company is managing its CAPEX and Fixed Assets pretty efficiently,\n", - " which is evident from below key metrics:\n", - " CAPEX/Revenue Ratio: 5.1%\n", - " Fixed assets/Total Assets: 20%\n", - " Return on Assets= 12.4% \n", - "\n", - "DYNAMIC AUTO HTP AGENT WITH KNOWLEDGE SOLUTION SUMMARIZED:\n", - "================================================================================\n", - "Based on the FY2022 data provided, 3M is identified as a capital-intensive\n", - "business due to its significant capital expenditures, large total asset base,\n", - "focus on environmental expenditures, and structured asset management practices.\n", - "These factors collectively indicate a substantial investment in physical assets\n", - "and operational capabilities characteristic of capital-intensive businesses.\n" - ] - } - ], - "source": [ - "print_solution(dynamic_auto_htp_agent_with_knowledge_solution)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With the added knowledge, neither solving statistically nore dynamically could help the agent to get to the final answer correctly. Let's customize the most powerful component of `HTP`: the plan." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Incorporating Expert HTP instead of Auto-HTP" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With OpenSSA, the user can customize the plan instead of depending on the auto-generated plan. Let's add an expert plan on top of our beginning Base Agent to see how it performs. \n", - "\n", - "" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We've prepared a sample expert plan, but please feel free to customize the expert plan yourself." - ] - }, - { - "cell_type": "code", - "execution_count": 112, - "metadata": {}, - "outputs": [], - "source": [ - "variables = {\n", - " 'COMPANY': '3M',\n", - " 'PERIOD': '2022'\n", - "}\n", - "\n", - "with open('sample_data/expert-plan-templates-sample.yml', 'r') as file:\n", - " EXPERT_PLAN_TEMPLATES_CONTENT = file.read()\n", - "EXPERT_PLAN_TEMPLATES_CONTENT = EXPERT_PLAN_TEMPLATES_CONTENT.format(**variables)\n", - "EXPERT_PLAN = yaml.safe_load(EXPERT_PLAN_TEMPLATES_CONTENT)\n", - "\n", - "EXPERT_HTP = HTP(task=Task.from_dict_or_str(EXPERT_PLAN['task']),\n", - " sub_plans=[HTP.from_dict(d) for d in EXPERT_PLAN.get('sub-plans', [])])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "expert_htp_agent = Agent(planner=AutoHTPlanner(max_depth=2, max_subtasks_per_decomp=4),\n", - " reasoner=OodaReasoner(),\n", - " knowledge=None,\n", - " resources={FileResource(path=DOC_PATH)})\n", - "\n", - "expert_htp_agent_solution = expert_htp_agent.solve(problem=PROBLEM,\n", - " plan=EXPERT_HTP,\n", - " dynamic=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can read the full logs of all the intermediate steps in `logs/expert_htp_agent_logs.txt`" - ] - }, - { - "cell_type": "code", - "execution_count": 114, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "PROBLEM: \n", - "================================================================================\n", - "Is 3M a capital-intensive business based on FY2022 data? \n", - "\n", - "GROUND TRUTH ANSWER: \n", - "================================================================================\n", - "\n", - " No, the company is managing its CAPEX and Fixed Assets pretty efficiently,\n", - " which is evident from below key metrics:\n", - " CAPEX/Revenue Ratio: 5.1%\n", - " Fixed assets/Total Assets: 20%\n", - " Return on Assets= 12.4% \n", - "\n", - "EXPERT HTP AGENT SOLUTION SUMMARIZED:\n", - "================================================================================\n", - "Based on the 2022 fiscal period data, although 3M has a significant investment\n", - "in Net Property, Plant & Equipment and a substantial asset base relative to its\n", - "sales, its Capital Expenditures and Return on Assets metrics do not align with\n", - "typical characteristics of a capital-intensive business. Therefore, 3M does not\n", - "fully exhibit the characteristics of a capital-intensive business according to\n", - "the provided benchmarks.\n" - ] - } - ], - "source": [ - "print_solution(expert_htp_agent_solution)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Yay! By incorporating the expert's plan, we instantly get the correct answer! " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Try It Yourself!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "So now you've learned how OpenSSA's `HTP` works. You can try different combination of knobs that you can turn, including:\n", - "- auto-plan vs expert-plan\n", - "- statistically solving vs dynamically solving\n", - "- external knowledge vs no external knowledge" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Some tips and tricsk:\n", - "- If you want the fastest way to be up and running with HTP with ok-performance: try auto-plan with added knowledge and dynamically solving.\n", - "- If you want a sufficiently good result with least customization and runtime: try adding expert-plan without anything else\n", - "_ If you want the best result: try adding expert-plan with knowledge and dynamically solving!\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "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.12.2" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} From f3af017d0fc796d2cade68a29fa2c5dec2b8fd96 Mon Sep 17 00:00:00 2001 From: radiangle Date: Wed, 2 Oct 2024 15:29:29 -0700 Subject: [PATCH 4/9] create FinanceBench-Lite example from FinanceBench --- examples/FinanceBench-Lite/.env.template | 2 + examples/FinanceBench-Lite/.gitignore | 15 + examples/FinanceBench-Lite/Makefile | 33 + examples/FinanceBench-Lite/README.md | 23 + examples/FinanceBench-Lite/dana.py | 155 + .../FinanceBench-Lite/data_and_knowledge.py | 332 ++ examples/FinanceBench-Lite/eval.py | 301 ++ examples/FinanceBench-Lite/ground-truths.yml | 4608 +++++++++++++++++ .../FinanceBench-Lite/knowledge-store.txt | 277 + examples/FinanceBench-Lite/log.py | 39 + examples/FinanceBench-Lite/program-store.yml | 1136 ++++ .../FinanceBench-Lite/rag-ground-truths.yml | 914 ++++ examples/FinanceBench-Lite/util.py | 77 + 13 files changed, 7912 insertions(+) create mode 100644 examples/FinanceBench-Lite/.env.template create mode 100644 examples/FinanceBench-Lite/.gitignore create mode 100644 examples/FinanceBench-Lite/Makefile create mode 100644 examples/FinanceBench-Lite/README.md create mode 100644 examples/FinanceBench-Lite/dana.py create mode 100644 examples/FinanceBench-Lite/data_and_knowledge.py create mode 100644 examples/FinanceBench-Lite/eval.py create mode 100644 examples/FinanceBench-Lite/ground-truths.yml create mode 100644 examples/FinanceBench-Lite/knowledge-store.txt create mode 100644 examples/FinanceBench-Lite/log.py create mode 100644 examples/FinanceBench-Lite/program-store.yml create mode 100644 examples/FinanceBench-Lite/rag-ground-truths.yml create mode 100644 examples/FinanceBench-Lite/util.py diff --git a/examples/FinanceBench-Lite/.env.template b/examples/FinanceBench-Lite/.env.template new file mode 100644 index 000000000..9c9789785 --- /dev/null +++ b/examples/FinanceBench-Lite/.env.template @@ -0,0 +1,2 @@ +HF_API_KEY=[... HuggingFace API key if running HuggingFace-hosted models ...] +OPENAI_API_KEY=[... OpenAI API key if running on OpenAI services ...] diff --git a/examples/FinanceBench-Lite/.gitignore b/examples/FinanceBench-Lite/.gitignore new file mode 100644 index 000000000..1b80d89fc --- /dev/null +++ b/examples/FinanceBench-Lite/.gitignore @@ -0,0 +1,15 @@ +# data files +.data/ + +# environment variables +.env + +# iPython/Jupyter notebooks +*.ipynb + +# log files +.log/ +*.log + +# Streamlit secrets +.streamlit/secrets.toml diff --git a/examples/FinanceBench-Lite/Makefile b/examples/FinanceBench-Lite/Makefile new file mode 100644 index 000000000..dc5045571 --- /dev/null +++ b/examples/FinanceBench-Lite/Makefile @@ -0,0 +1,33 @@ +dana-solve: + @poetry run python dana.py ${id} + +dana-solve-w-knowledge: + @poetry run python dana.py ${id} --knowledge + +dana-solve-w-prog-store: + @poetry run python dana.py ${id} --prog-store + +dana-solve-w-knowledge-and-prog-store: + @poetry run python dana.py ${id} --knowledge --prog-store + +dana-solve-w-llama3: + @poetry run python dana.py ${id} --llama3 + +dana-solve-w-knowledge-w-llama3: + @poetry run python dana.py ${id} --knowledge --llama3 + +dana-solve-w-prog-store-w-llama3: + @poetry run python dana.py ${id} --prog-store --llama3 + +dana-solve-w-knowledge-and-prog-store-w-llama3: + @poetry run python dana.py ${id} --knowledge --prog-store --llama3 + +dana-solve-all-combos: + @poetry run python dana.py ${id} + @poetry run python dana.py ${id} --knowledge + @poetry run python dana.py ${id} --prog-store + @poetry run python dana.py ${id} --knowledge --prog-store + @poetry run python dana.py ${id} --llama3 + @poetry run python dana.py ${id} --knowledge --llama3 + @poetry run python dana.py ${id} --prog-store --llama3 + @poetry run python dana.py ${id} --knowledge --prog-store --llama3 diff --git a/examples/FinanceBench-Lite/README.md b/examples/FinanceBench-Lite/README.md new file mode 100644 index 000000000..cea149ebb --- /dev/null +++ b/examples/FinanceBench-Lite/README.md @@ -0,0 +1,23 @@ + + +# OpenSSA-FinanceBench Lite benchmarking + +This is a lite version of the benchmarking of `OpenSSA` performance +on the `FinanceBench` dataset. + +## [`FinanceBench` Dataset](https://github.com/patronus-ai/financebench/blob/main/financebench_sample_150.csv) + +## Running Aitomatic SSA benchmarking project + +Have Python 3.12 installed. + +__Install__ project, and update its dependencies from time to time: +__`make install`__. + +Create `.env` file following the `.env.template` and fill in necessary credentials. + +__Solve__ the problem corresponding to a specific `financebench_id`: +__`make dana-solve id=...`__. (eg: `make dana-solve id=00807`) + +- refer to `FinanceBench` dataset above for `financebench_id`s +and corresponding information diff --git a/examples/FinanceBench-Lite/dana.py b/examples/FinanceBench-Lite/dana.py new file mode 100644 index 000000000..92ec4ee61 --- /dev/null +++ b/examples/FinanceBench-Lite/dana.py @@ -0,0 +1,155 @@ +from argparse import ArgumentParser +from functools import cache + +from openssa import DANA, ProgramStore, HTP, HTPlanner, FileResource, LMConfig +from openssa.core.util.lm.huggingface import HuggingFaceLM +from openssa.core.util.lm.openai import OpenAILM, default_llama_index_openai_lm + +# pylint: disable=wrong-import-order,wrong-import-position +from data_and_knowledge import (DocName, FbId, Answer, Doc, FB_ID_COL_NAME, DOC_NAMES_BY_FB_ID, QS_BY_FB_ID, + EXPERT_KNOWLEDGE, EXPERT_PROGRAMS, EXPERT_HTP_COMPANY_KEY, EXPERT_HTP_PERIOD_KEY) +from util import QAFunc, enable_batch_qa_and_eval, log_qa_and_update_output_file + + +@cache +def get_main_lm(use_llama3: bool = False): + return (HuggingFaceLM if use_llama3 else OpenAILM).from_defaults() + + +@cache +def get_or_create_expert_program_store(use_llama3: bool = False) -> ProgramStore: + program_store = ProgramStore(lm=get_main_lm(use_llama3=use_llama3)) + + for program_name, htp_dict in EXPERT_PROGRAMS.items(): + htp = HTP.from_dict(htp_dict) + program_store.add_or_update_program(name=program_name, description=htp.task.ask, program=htp) + + return program_store + + +@cache +def get_or_create_agent(doc_name: DocName, expert_knowledge: bool = False, expert_programs: bool = False, + max_depth=3, max_subtasks_per_decomp=6, + use_llama3: bool = False, + llama_index_openai_lm_name: str = LMConfig.OPENAI_DEFAULT_MODEL) -> DANA: + # pylint: disable=too-many-arguments + return DANA(knowledge={EXPERT_KNOWLEDGE} if expert_knowledge else None, + + program_store=(get_or_create_expert_program_store(use_llama3=use_llama3) + if expert_programs + else ProgramStore()), + + programmer=HTPlanner(lm=get_main_lm(use_llama3=use_llama3), + max_depth=max_depth, max_subtasks_per_decomp=max_subtasks_per_decomp), + + resources={FileResource(path=Doc(name=doc_name).dir_path, + lm=default_llama_index_openai_lm(llama_index_openai_lm_name))}) + + +@cache +def get_or_create_adaptations(doc_name: DocName) -> dict[str, str]: + return {EXPERT_HTP_COMPANY_KEY: (doc := Doc(name=doc_name)).company, EXPERT_HTP_PERIOD_KEY: doc.period} + + +@enable_batch_qa_and_eval(output_name='DANA') +@log_qa_and_update_output_file(output_name='DANA') +def solve(fb_id: FbId) -> Answer: + return get_or_create_agent(doc_name=DOC_NAMES_BY_FB_ID[fb_id]).solve( + problem=QS_BY_FB_ID[fb_id], + adaptations_from_known_programs=get_or_create_adaptations(doc_name=DOC_NAMES_BY_FB_ID[fb_id])) + + +@enable_batch_qa_and_eval(output_name='DANA-wKnowledge') +@log_qa_and_update_output_file(output_name='DANA-wKnowledge') +def solve_with_knowledge(fb_id: FbId) -> Answer: + return get_or_create_agent(doc_name=DOC_NAMES_BY_FB_ID[fb_id], expert_knowledge=True).solve( + problem=QS_BY_FB_ID[fb_id], + adaptations_from_known_programs=get_or_create_adaptations(doc_name=DOC_NAMES_BY_FB_ID[fb_id])) + + +@enable_batch_qa_and_eval(output_name='DANA-wProgStore') +@log_qa_and_update_output_file(output_name='DANA-wProgStore') +def solve_with_program_store(fb_id: FbId) -> Answer: + return get_or_create_agent(doc_name=DOC_NAMES_BY_FB_ID[fb_id], expert_programs=True).solve( + problem=QS_BY_FB_ID[fb_id], + adaptations_from_known_programs=get_or_create_adaptations(doc_name=DOC_NAMES_BY_FB_ID[fb_id])) + + +@enable_batch_qa_and_eval(output_name='DANA-wKnowledge-wProgStore') +@log_qa_and_update_output_file(output_name='DANA-wKnowledge-wProgStore') +def solve_with_knowledge_and_program_store(fb_id: FbId) -> Answer: + return get_or_create_agent(DOC_NAMES_BY_FB_ID[fb_id], expert_knowledge=True, expert_programs=True).solve( + problem=QS_BY_FB_ID[fb_id], + adaptations_from_known_programs=get_or_create_adaptations(doc_name=DOC_NAMES_BY_FB_ID[fb_id])) + + +@enable_batch_qa_and_eval(output_name='DANA-wLlama3') +@log_qa_and_update_output_file(output_name='DANA-wLlama3') +def solve_with_llama3(fb_id: FbId) -> Answer: + return get_or_create_agent(doc_name=DOC_NAMES_BY_FB_ID[fb_id], use_llama3=True).solve( + problem=QS_BY_FB_ID[fb_id], + adaptations_from_known_programs=get_or_create_adaptations(doc_name=DOC_NAMES_BY_FB_ID[fb_id])) + + +@enable_batch_qa_and_eval(output_name='DANA-wKnowledge-wLlama3') +@log_qa_and_update_output_file(output_name='DANA-wKnowledge-wLlama3') +def solve_with_knowledge_with_llama3(fb_id: FbId) -> Answer: + return get_or_create_agent(doc_name=DOC_NAMES_BY_FB_ID[fb_id], expert_knowledge=True, use_llama3=True).solve( + problem=QS_BY_FB_ID[fb_id], + adaptations_from_known_programs=get_or_create_adaptations(doc_name=DOC_NAMES_BY_FB_ID[fb_id])) + + +@enable_batch_qa_and_eval(output_name='DANA-wProgStore-wLlama3') +@log_qa_and_update_output_file(output_name='DANA-wProgStore-wLlama3') +def solve_with_program_store_with_llama3(fb_id: FbId) -> Answer: + return get_or_create_agent(doc_name=DOC_NAMES_BY_FB_ID[fb_id], expert_programs=True, use_llama3=True).solve( + problem=QS_BY_FB_ID[fb_id], + adaptations_from_known_programs=get_or_create_adaptations(doc_name=DOC_NAMES_BY_FB_ID[fb_id])) + + +@enable_batch_qa_and_eval(output_name='DANA-wKnowledge-wProgStore-wLlama3') +@log_qa_and_update_output_file(output_name='DANA-wKnowledge-wProgStore-wLlama3') +def solve_with_knowledge_and_program_store_with_llama3(fb_id: FbId) -> Answer: + return get_or_create_agent(DOC_NAMES_BY_FB_ID[fb_id], expert_knowledge=True, expert_programs=True, use_llama3=True).solve( # noqa: E501 + problem=QS_BY_FB_ID[fb_id], + adaptations_from_known_programs=get_or_create_adaptations(doc_name=DOC_NAMES_BY_FB_ID[fb_id])) + + +if __name__ == '__main__': + arg_parser = ArgumentParser() + arg_parser.add_argument('fb_id') + arg_parser.add_argument('--from-id', action='store_true') + arg_parser.add_argument('--knowledge', action='store_true') + arg_parser.add_argument('--prog-store', action='store_true') + arg_parser.add_argument('--llama3', action='store_true') + args = arg_parser.parse_args() + + match (args.knowledge, args.prog_store, args.llama3): + case (False, False, False): + solve_func: QAFunc = solve + + case (True, False, False): + solve_func: QAFunc = solve_with_knowledge + + case (False, True, False): + solve_func: QAFunc = solve_with_program_store + + case (True, True, False): + solve_func: QAFunc = solve_with_knowledge_and_program_store + + case (False, False, True): + solve_func: QAFunc = solve_with_llama3 + + case (True, False, True): + solve_func: QAFunc = solve_with_knowledge_with_llama3 + + case (False, True, True): + solve_func: QAFunc = solve_with_program_store_with_llama3 + + case (True, True, True): + solve_func: QAFunc = solve_with_knowledge_and_program_store_with_llama3 + + if not (fb_id := args.fb_id).startswith(FB_ID_COL_NAME): + fb_id: FbId = f'{FB_ID_COL_NAME}_{fb_id}' + + solve_func(f'from:{fb_id}' if args.from_id else fb_id) diff --git a/examples/FinanceBench-Lite/data_and_knowledge.py b/examples/FinanceBench-Lite/data_and_knowledge.py new file mode 100644 index 000000000..7dbf1e41e --- /dev/null +++ b/examples/FinanceBench-Lite/data_and_knowledge.py @@ -0,0 +1,332 @@ +from __future__ import annotations + +from collections import Counter +from dataclasses import dataclass, field +import base64 +from enum import StrEnum +from functools import cached_property +from pathlib import Path +from typing import TypedDict, Required, NotRequired, Literal, TYPE_CHECKING + +from dotenv import load_dotenv +from pandas import DataFrame, read_json, read_csv +import requests +import yaml + +if TYPE_CHECKING: + from openssa.core.planning.hierarchical.plan import HTPDict + + +load_dotenv() + + +type DocName = str +type FbId = str +type Question = str +type Answer = str +type ExpertPlanId = str + + +class Category(StrEnum): + RETRIEVE: str = '0-RETRIEVE' + COMPARE: str = '1-COMPARE' + CALC_CHANGE: str = '2-CALC-CHANGE' + CALC_COMPLEX: str = '3-CALC-COMPLEX' + CALC_AND_JUDGE: str = '4-CALC-AND-JUDGE' + EXPLAIN_FACTORS: str = '5-EXPLAIN-FACTORS' + OTHER_ADVANCED: str = '6-OTHER-ADVANCED' + + +type GroundTruth = TypedDict('GroundTruth', {'sector': Required[str], + + 'company': Required[str], + 'period': Required[int], + 'doc-type': Required[str], + 'doc': Required[DocName], + + 'question-type': Required[str], + 'question-reasoning': Required[str], + 'domain-question-num': Required[str | None], + 'question': Required[Question], + + 'answer': Required[Answer], + 'justification': Required[str], + 'page(s)-0based': Required[int], + 'page(s)': Required[str], + + 'category': Required[Category], + 'correctness': Required[str], + 'answer-inadequate': NotRequired[Literal[True]], + 'evaluator-unreliable': NotRequired[Literal[True]]}, + total=False) + + +type RAGGroundTruths = TypedDict('RAGGroundTruths', {'defs': Required[dict[str, str]], + 'ground-truths': Required[dict[str, # doc + dict[str, # statement + dict[str, # line item + dict[int | str, # period + str # ground truth + ]]]]]}) + + +NON_BOT_REQUEST_HEADERS: dict[str, str] = { + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3" +} + + +REPO_RAW_CONTENT_URL_PREFIX: str = 'https://raw.githubusercontent.com/patronus-ai/financebench' +DOC_INFO_URL: str = f'{REPO_RAW_CONTENT_URL_PREFIX}/main/data/financebench_document_information.jsonl' +METADATA_JSONL_URL: str = f'{REPO_RAW_CONTENT_URL_PREFIX}/main/data/financebench_open_source.jsonl' +METADATA_CSV_URL: str = f'{REPO_RAW_CONTENT_URL_PREFIX}/641ae9ece2cae93c671cf59c2d53742b51c7f1aa/financebench_sample_150.csv' + +FB_ID_COL_NAME: str = 'financebench_id' + +META_DF: DataFrame = (read_json(METADATA_JSONL_URL, + orient='records', typ='frame', + dtype=True, convert_axes=True, + convert_dates=True, keep_default_dates=True, + precise_float=False, date_unit=None, + encoding='utf-8', encoding_errors='strict', + lines=True, chunksize=None, + compression=None, nrows=None, + storage_options=None, + dtype_backend='pyarrow', engine='ujson') + + .merge(right=read_json( + DOC_INFO_URL, + orient='records', typ='frame', + dtype=True, convert_axes=True, + convert_dates=True, keep_default_dates=True, + precise_float=False, date_unit=None, + encoding='utf-8', encoding_errors='strict', + lines=True, chunksize=None, + compression=None, nrows=None, + storage_options=None, + dtype_backend='pyarrow', engine='ujson'), + + how='left', on='doc_name', # left_on='doc_name', right_on='doc_name', + left_index=False, right_index=False, + sort=False, + suffixes=('', '_'), + copy=False, + indicator=False, + validate=None # TODO: 'many_to_one' after Patronus AI fixes FOOTLOCKER_2022_annualreport + ) + + .set_index(keys=FB_ID_COL_NAME, + drop=True, append=False, + inplace=False, + verify_integrity=True)) + +META_DF.fillna(value='', method=None, axis=None, inplace=True, limit=None) # replace PyArrow NAs + +LEGACY_META_DF: DataFrame = read_csv(METADATA_CSV_URL, + sep=',', # delimiter=',', + header='infer', names=None, index_col=FB_ID_COL_NAME, usecols=None, + dtype=None, engine='pyarrow', converters=None, true_values=None, false_values=None, + skipinitialspace=False, skiprows=None, skipfooter=0, nrows=None, + na_values=None, na_filter=None, keep_default_na=True, + skip_blank_lines=True, + parse_dates=False, date_format=None, dayfirst=False, cache_dates=True, + iterator=False, chunksize=None, compression=None, + thousands=None, decimal='.', + lineterminator=None, + quotechar=None, quoting=0, doublequote=True, + escapechar=None, comment=None, + encoding='utf-8', encoding_errors='strict', + dialect=None, + on_bad_lines='error', + low_memory=True, memory_map=False, + float_precision=None, + storage_options=None, + dtype_backend='pyarrow') + +assert (META_DF.index == LEGACY_META_DF.index).all() +# assert (META_DF.doc_name == LEGACY_META_DF.doc_name).all() # J&J docs have been fixed +assert (META_DF.doc_period == LEGACY_META_DF.doc_period).all() +assert (META_DF.doc_link == LEGACY_META_DF.doc_link).all() +assert (META_DF.question_type == LEGACY_META_DF.question_type).all() +assert (META_DF.question == LEGACY_META_DF.question).all() +# assert (META_DF.answer == LEGACY_META_DF.answer).all() # 01107 answer has been fixed + +DOC_NAMES: list[DocName] = sorted(META_DF.doc_name.unique()) +DOC_LINKS_BY_NAME: dict[DocName, str] = dict(zip(META_DF.doc_name, META_DF.doc_link)) +DOC_NAMES_BY_FB_ID: dict[FbId, DocName] = META_DF.doc_name.to_dict() + +FB_IDS: list[FbId] = META_DF.index.to_list() +FB_IDS_BY_DOC_NAME: dict[DocName, list[FbId]] = META_DF.groupby('doc_name').apply(lambda _: _.index.to_list()) + +QS_BY_FB_ID: dict[FbId, Question] = META_DF.question.to_dict() + + +LOCAL_CACHE_DIR_PATH: Path = Path(__file__).parent / '.data' +LOCAL_CACHE_DOCS_DIR_PATH: Path = LOCAL_CACHE_DIR_PATH / 'docs' +OUTPUT_FILE_PATH: Path = LOCAL_CACHE_DIR_PATH / 'output.csv' + + +GROUND_TRUTHS_FILE_PATH = Path(__file__).parent / 'ground-truths.yml' +with open(file=GROUND_TRUTHS_FILE_PATH, + buffering=-1, + encoding='utf-8', + errors='strict', + newline=None, + closefd=True, + opener=None) as f: + GROUND_TRUTHS: dict[FbId, GroundTruth] = yaml.safe_load(stream=f) + +N_CASES: int = len(GROUND_TRUTHS) +CAT_DISTRIB: Counter[Category] = Counter(ground_truth['category'] for ground_truth in GROUND_TRUTHS.values()) + + +EXPERT_KNOWLEDGE_FILE_PATH: Path = Path(__file__).parent / 'knowledge-store.txt' +with open(file=EXPERT_KNOWLEDGE_FILE_PATH, + buffering=-1, + encoding='utf-8', + errors='strict', + newline=None, + closefd=True, + opener=None) as f: + EXPERT_KNOWLEDGE: str = f.read() + + +EXPERT_PROGRAMS_FILE_PATH: Path = Path(__file__).parent / 'program-store.yml' +with open(file=EXPERT_PROGRAMS_FILE_PATH, + buffering=-1, + encoding='utf-8', + errors='strict', + newline=None, + closefd=True, + opener=None) as f: + EXPERT_PROGRAMS: dict[ExpertPlanId, HTPDict] = yaml.safe_load(stream=f) + +EXPERT_HTP_COMPANY_KEY: str = 'COMPANY' +EXPERT_HTP_PERIOD_KEY: str = 'PERIOD' + + +RAG_GROUND_TRUTHS_FILE_PATH: Path = Path(__file__).parent / 'rag-ground-truths.yml' +with open(file=RAG_GROUND_TRUTHS_FILE_PATH, + buffering=-1, + encoding='utf-8', + errors='strict', + newline=None, + closefd=True, + opener=None) as f: + RAG_GROUND_TRUTHS: RAGGroundTruths = yaml.safe_load(stream=f) + + +@dataclass +class Doc: + name: DocName + company: str = field(init=False, repr=False) + period: str = field(init=False, repr=False) + type: str = field(init=False, repr=False) + + def __post_init__(self): + self.company, self.period, self.type = self.name.split(sep='_', maxsplit=2) + + def request(self) -> requests.Response: + try: + response: requests.Response = requests.get( + url=(url := ((base64.b64decode(doc_link.split(sep=q, maxsplit=-1)[-1], altchars=None) + .decode(encoding='utf-8', errors='strict')) + if (q := '?pdfTarget=') in (doc_link := DOC_LINKS_BY_NAME[self.name]) + else doc_link)), + timeout=60, + stream=True) + + except requests.exceptions.ConnectionError: + response: requests.Response = requests.get( + url=(url := f'{REPO_RAW_CONTENT_URL_PREFIX}/main/pdfs/{self.name}.pdf'), + timeout=60, + stream=True) + + if response.headers.get('Content-Type') != 'application/pdf': + response: requests.Response = requests.get(url=url, + headers=NON_BOT_REQUEST_HEADERS, + timeout=60, + stream=True) + + return response + + @cached_property + def dir_path(self) -> Path: + dir_path: Path = LOCAL_CACHE_DOCS_DIR_PATH / self.name + + if not (file_path := dir_path / f'{self.name}.pdf').is_file(): + dir_path.mkdir(parents=True, exist_ok=True) + + response: requests.Response = self.request() + + with open(file=file_path, mode='wb', buffering=-1, encoding=None, newline=None, closefd=True, opener=None) as f: + f.write(response.content) + + return dir_path + + @cached_property + def file_path(self) -> Path: + return self.dir_path / f'{self.name}.pdf' + + +def create_or_update_ground_truths() -> dict[FbId, GroundTruth]: + ground_truths: dict[FbId, GroundTruth] = {fb_id: {'sector': row.gics_sector, + 'company': row.company, 'period': row.doc_period, 'doc-type': row.doc_type, + 'doc': row.doc_name, + 'question-type': row.question_type, + 'question-reasoning': row.question_reasoning, + 'domain-question-num': row.domain_question_num, + 'question': row.question, + 'answer': row.answer, 'justification': row.justification, + 'page(s)-0based': row.evidence[0]['evidence_page_num']} + for fb_id, row in META_DF.iterrows()} + + if GROUND_TRUTHS_FILE_PATH.is_file(): + with open(file=GROUND_TRUTHS_FILE_PATH, + buffering=-1, + encoding='utf-8', + errors='strict', + newline=None, + closefd=True, + opener=None) as f: + existing_ground_truths: dict[FbId, GroundTruth] = yaml.safe_load(stream=f) + + for fb_id, ground_truth in ground_truths.items(): + if (existing_ground_truth := existing_ground_truths.get(fb_id)): + for existing_key in set(existing_ground_truth).difference(ground_truth): + ground_truth[existing_key] = existing_ground_truth[existing_key] + + with open(file=GROUND_TRUTHS_FILE_PATH, + mode='w', + buffering=-1, + encoding='utf-8', + errors='strict', + newline=None, + closefd=True, + opener=None) as f: + yaml.safe_dump(data=ground_truths, + stream=f, + default_style=None, + default_flow_style=False, + canonical=None, + indent=2, + width=80, + allow_unicode=True, + line_break=None, + encoding='utf-8', + explicit_start=None, + explicit_end=None, + version=None, + tags=None, + sort_keys=False) + + return ground_truths + + +def get_or_create_output_df() -> DataFrame: + output_df: DataFrame = (read_csv(OUTPUT_FILE_PATH, index_col=FB_ID_COL_NAME) + if OUTPUT_FILE_PATH.is_file() + else META_DF[['doc_name', 'question', 'answer']]) + + output_df.loc[:, 'category'] = [GROUND_TRUTHS[fb_id]['category'] for fb_id in output_df.index] + + return output_df diff --git a/examples/FinanceBench-Lite/eval.py b/examples/FinanceBench-Lite/eval.py new file mode 100644 index 000000000..77f491f4f --- /dev/null +++ b/examples/FinanceBench-Lite/eval.py @@ -0,0 +1,301 @@ +from __future__ import annotations + +import argparse +from collections import defaultdict +from functools import cache +from pprint import pprint +from typing import TYPE_CHECKING + +from dotenv import load_dotenv +from loguru import logger +from pandas import DataFrame, notna, read_csv +from tqdm import tqdm + +from openssa.core.util.lm.config import LMConfig +from openssa.core.util.lm.openai import OpenAILM + +# pylint: disable=wrong-import-order +from data_and_knowledge import (FbId, Question, Answer, Category, GroundTruth, + FB_ID_COL_NAME, GROUND_TRUTHS, N_CASES, CAT_DISTRIB, + LOCAL_CACHE_DIR_PATH, OUTPUT_FILE_PATH, get_or_create_output_df) +from log import switch_log_file + +if TYPE_CHECKING: + from openssa.core.util.lm.abstract import AbstractLM + + +EVAL_PROMPT_TEMPLATE: str = \ +"""You shall act as a judge of question-answering correctness. + +Given the posed QUESTION below, evaluate whether the ANSWER below is correct +according to the criteria specified in the CORRECTNESS EVALUATION RUBRIC below. + +- The evaluation should regard the ANSWER as responding to the QUESTION, + and hence the ANSWER does not need to repeat contextual information already in the QUESTION; + +- The evaluation should follow the RUBRIC strictly, + not looking for in the ANSWER more elaboration/explanation than what the RUBRIC explicitly requires; + +- Financial and technical terminology can be treated as case-insensitive. + +Output only a single word, either: +- YES: if you judge the ANSWER to be correct; or +- NO: if you judge the ANSWER to be incorrect. + +QUESTION: +--------- +``` +{question} +``` + +ANSWER TO EVALUATE: +------------------- +``` +{answer} +``` + +CORRECTNESS EVALUATION RUBRIC: +------------------------------ +``` +{rubric} +``` +""" # noqa: E122 + + +load_dotenv() + + +@cache +def get_lm(model='gpt-4o') -> AbstractLM: + return OpenAILM(model=model, api_key=LMConfig.OPENAI_API_KEY, api_base=LMConfig.OPENAI_API_URL) + + +def human_eval_recommended(fb_id: FbId) -> bool | None: + return (ground_truth := GROUND_TRUTHS[fb_id]).get('answer-inadequate') or ground_truth.get('evaluator-unreliable') + + +def eval_correctness(fb_id: FbId, answer: Answer, output_name: str | None = None, # pylint: disable=too-many-arguments + n_times: int = 9, human: bool = True, debug: bool = False) -> bool: + if output_name: + switch_log_file(fb_id=fb_id, output_name=output_name) + + question: Question = (ground_truth := GROUND_TRUTHS[fb_id])['question'] + rubric: str = ground_truth['correctness'] + prompt: str = EVAL_PROMPT_TEMPLATE.format(question=question, answer=answer, rubric=rubric) + + lm: AbstractLM = get_lm() + + for _ in range(n_times): + score: str = '' + + while score not in {'YES', 'NO'}: + score: str = lm.get_response(prompt=prompt, temperature=0) + + if score == 'NO': + logger.warning(f'\n{fb_id}\n{ground_truth['doc']}:\n{question}\n' + '\n' + f'ANSWER JUDGED TO BE INCORRECT:\n{answer}\n' + '\n' + f'RUBRIC:\n{rubric}' + + ('\n\n(*** EXPERT ANSWER KNOWN TO BE INADEQUATE ***)\n' + if GROUND_TRUTHS[fb_id].get('answer-inadequate') + else '\n')) + + if debug: + logger.debug(f'PROMPT:\n{prompt}') + + if human and human_eval_recommended(fb_id=fb_id): + human_eval_str: str = '' + while not human_eval_str: + human_eval_str: str = input('\n*** HUMAN EVALUATION ***: if answer is correct, type "Y": ').strip() + + correct: bool = human_eval_str.lower().startswith('y') + + else: + correct: bool = False + + break + + else: + correct: bool = True + + if output_name: + output_df: DataFrame = get_or_create_output_df() + output_df.loc[fb_id, f'{output_name}---CORRECTNESS']: bool = correct + output_df.to_csv(OUTPUT_FILE_PATH, index=True) + + return correct + + +def eval_all(output_name: str, refresh: bool = True, n_times: int = 9, human: bool = True, debug: bool = False): + # pylint: disable=too-many-locals + output_df: DataFrame = get_or_create_output_df() + + n_yes_scores_by_category: defaultdict = defaultdict(int) + incorrect_answer_fb_ids: dict[FbId, str] = {} + + for fb_id, answer in tqdm(output_df[output_name].items(), total=N_CASES): + ground_truth: GroundTruth = GROUND_TRUTHS[fb_id] + + if (eval_correctness(fb_id=fb_id, answer=answer, output_name=output_name, n_times=n_times, human=human, debug=debug) # noqa: E501 + if refresh + else (notna(correctness := output_df.loc[fb_id, f'{output_name}---CORRECTNESS']) and correctness)): + n_yes_scores_by_category[ground_truth['category']] += 1 + + else: + incorrect_answer_fb_ids[fb_id]: str = ('expert answer inadequate' + if ground_truth.get('answer-inadequate') + else ('evaluator unreliable' + if ground_truth.get('evaluator-unreliable') + else '')) + + logger.info(f'TOTAL CORRECT: {(n := sum(n_yes_scores_by_category.values()))} / {N_CASES} = {n / N_CASES:.1%}') + + pprint(correctness_by_category := {category: (f'{(n := n_yes_scores_by_category[category])} / {n_for_category} ' + f'= {n / n_for_category:.1%}') + for category, n_for_category in CAT_DISTRIB.items()}) + + pprint({ + 'EASY': (f'{(e := sum(n_yes_scores_by_category[easy_cat] + for easy_cat in (Category.RETRIEVE, Category.COMPARE, Category.CALC_CHANGE)))} / ' + f'{(se := sum(CAT_DISTRIB[easy_cat] + for easy_cat in (Category.RETRIEVE, Category.COMPARE, Category.CALC_CHANGE)))} ' + f'= {e / se:.1%}'), + + 'HARD': (f'{(h := sum(n_yes_scores_by_category[hard_cat] + for hard_cat in (Category.CALC_COMPLEX, Category.CALC_AND_JUDGE, + Category.EXPLAIN_FACTORS, Category.OTHER_ADVANCED)))} / ' + f'{(sh := sum(CAT_DISTRIB[hard_cat] + for hard_cat in (Category.CALC_COMPLEX, Category.CALC_AND_JUDGE, + Category.EXPLAIN_FACTORS, Category.OTHER_ADVANCED)))} ' + f'= {h / sh:.1%}') + }) + + logger.warning('INCORRECT:') + pprint(incorrect_answer_fb_ids) + + return correctness_by_category + + +def compare_eval(output_name: str, baseline_output_name: str = 'RAG-Default'): + output_df: DataFrame = get_or_create_output_df() + + baseline_correctness_by_category: dict[str, str] = eval_all(output_name=baseline_output_name, refresh=False) + correctness_by_category: dict[str, str] = eval_all(output_name=output_name, refresh=False) + pprint({category: {output_name: correctness_summary, baseline_output_name: baseline_correctness_by_category[category]} + for category, correctness_summary in correctness_by_category.items()}) + + output_df.loc[:, baseline_output_name] = output_df[f'{baseline_output_name}---CORRECTNESS'] + output_df.loc[:, output_name] = output_df[f'{output_name}---CORRECTNESS'] + return output_df.loc[output_df[output_name] != output_df[baseline_output_name], + ['doc_name', 'category', baseline_output_name, output_name]] + + +def eval_accuracy_and_consistency_wrt_ground_truths(output_name: str, output_file_names: list[str]): + # pylint: disable=too-many-locals + + n_output_files: int = len(output_file_names) + correctness_col_name: str = f'{output_name}---CORRECTNESS' + + n_yes_scores_by_fb_id: defaultdict = defaultdict(int) + incorrect_answer_fb_ids: dict[FbId, str] = {} + + for output_df in (read_csv(LOCAL_CACHE_DIR_PATH / output_file_name, index_col=FB_ID_COL_NAME) + for output_file_name in output_file_names): + + for fb_id, correctness in output_df[correctness_col_name].items(): + ground_truth: GroundTruth = GROUND_TRUTHS[fb_id] + + if notna(correctness) and correctness: + n_yes_scores_by_fb_id[fb_id] += 1 + + else: + incorrect_answer_fb_ids[fb_id]: str = ('expert answer inadequate' + if ground_truth.get('answer-inadequate') + else ('evaluator unreliable' + if ground_truth.get('evaluator-unreliable') + else '')) + + cumu_avg_accuracy_scores_by_category: defaultdict = defaultdict(int) + cumu_consistency_scores_by_category: defaultdict = defaultdict(float) + + for fb_id, ground_truth in GROUND_TRUTHS.items(): + cumu_avg_accuracy_scores_by_category[cat := ground_truth['category']] += (a := n_yes_scores_by_fb_id[fb_id] / n_output_files) + cumu_consistency_scores_by_category[cat] += 2 * abs(a - 0.5) + + print(f'TOTAL CORRECT: {(n := sum(cumu_avg_accuracy_scores_by_category.values()))} / {N_CASES} = {n / N_CASES:.1%}') + + pprint({category: (f'{(n := cumu_avg_accuracy_scores_by_category[category])} / {n_for_category} ' + f'= {n / n_for_category:.1%}') + for category, n_for_category in CAT_DISTRIB.items()}) + + pprint({ + 'EASY': (f'{(e := sum(cumu_avg_accuracy_scores_by_category[easy_cat] + for easy_cat in (Category.RETRIEVE, Category.COMPARE, Category.CALC_CHANGE)))} / ' + f'{(se := sum(CAT_DISTRIB[easy_cat] + for easy_cat in (Category.RETRIEVE, Category.COMPARE, Category.CALC_CHANGE)))} ' + f'= {e / se:.1%}'), + + 'HARD': (f'{(h := sum(cumu_avg_accuracy_scores_by_category[hard_cat] + for hard_cat in (Category.CALC_COMPLEX, Category.CALC_AND_JUDGE, + Category.EXPLAIN_FACTORS, Category.OTHER_ADVANCED)))} / ' + f'{(sh := sum(CAT_DISTRIB[hard_cat] + for hard_cat in (Category.CALC_COMPLEX, Category.CALC_AND_JUDGE, + Category.EXPLAIN_FACTORS, Category.OTHER_ADVANCED)))} ' + f'= {h / sh:.1%}') + }) + + print(f'\nTOTAL CONSISTENT: {(n := sum(cumu_consistency_scores_by_category.values()))} / {N_CASES} = {n / N_CASES:.1%}') + + pprint({category: (f'{(n := cumu_consistency_scores_by_category[category])} / {n_for_category} ' + f'= {n / n_for_category:.1%}') + for category, n_for_category in CAT_DISTRIB.items()}) + + pprint({ + 'EASY': (f'{(e := sum(cumu_consistency_scores_by_category[easy_cat] + for easy_cat in (Category.RETRIEVE, Category.COMPARE, Category.CALC_CHANGE)))} / ' + f'{(se := sum(CAT_DISTRIB[easy_cat] + for easy_cat in (Category.RETRIEVE, Category.COMPARE, Category.CALC_CHANGE)))} ' + f'= {e / se:.1%}'), + + 'HARD': (f'{(h := sum(cumu_consistency_scores_by_category[hard_cat] + for hard_cat in (Category.CALC_COMPLEX, Category.CALC_AND_JUDGE, + Category.EXPLAIN_FACTORS, Category.OTHER_ADVANCED)))} / ' + f'{(sh := sum(CAT_DISTRIB[hard_cat] + for hard_cat in (Category.CALC_COMPLEX, Category.CALC_AND_JUDGE, + Category.EXPLAIN_FACTORS, Category.OTHER_ADVANCED)))} ' + f'= {h / sh:.1%}') + }) + + print('\nINCORRECT:') + pprint(incorrect_answer_fb_ids) + + +if __name__ == '__main__': + arg_parser = argparse.ArgumentParser() + + arg_parser.add_argument('answer_col', help='Name of the column containing answers to evaluate') + arg_parser.add_argument('--id', default='all', help='FinanceBench Case ID') + arg_parser.add_argument('--n-times', type=int, default=9, help='Number of times to evaluate') + + arg_parser.add_argument('--human-eval', dest='human_eval', action='store_true', help='Human Evaluation ON') + arg_parser.add_argument('--no-human-eval', dest='human_eval', action='store_false', help='Human Evaluation OFF') + arg_parser.set_defaults(human_eval=True) + + arg_parser.add_argument('--refresh', dest='refresh', action='store_true', help='Evaluation Refreshing ON') + arg_parser.add_argument('--no-refresh', dest='refresh', action='store_false', help='Evaluation Refreshing OFF') + arg_parser.set_defaults(refresh=True) + + arg_parser.add_argument('--debug', action='store_true', help='Debug by printing out prompts') + + args = arg_parser.parse_args() + + if 'all' in args.id.lower(): + eval_all(output_name=args.answer_col, refresh=args.refresh, n_times=args.n_times, human=args.human_eval, debug=args.debug) # noqa: E501 + + else: + logger.info( + eval_correctness(fb_id=args.id, + answer=read_csv(OUTPUT_FILE_PATH, index_col=FB_ID_COL_NAME).loc[args.id, args.answer_col], + output_name=args.answer_col, + n_times=args.n_times, human=args.human_eval, debug=args.debug)) diff --git a/examples/FinanceBench-Lite/ground-truths.yml b/examples/FinanceBench-Lite/ground-truths.yml new file mode 100644 index 000000000..7cc0d1fc3 --- /dev/null +++ b/examples/FinanceBench-Lite/ground-truths.yml @@ -0,0 +1,4608 @@ +financebench_id_03029: + sector: Industrials + + company: 3M + period: 2018 + doc-type: 10k + doc: 3M_2018_10K + + question-type: metrics-generated + question-reasoning: Information extraction + domain-question-num: '' + question: What is the FY2018 capital expenditure amount (in USD millions) for 3M? + Give a response to the question by relying on the details shown in the cash flow + statement. + + answer: $1577.00 + justification: 'The metric capital expenditures was directly extracted from the + company 10K. The line item name, as seen in the 10K, was: Purchases of property, + plant and equipment (PP&E).' + page(s)-0based: 59 + page(s): '60' + + category: 0-RETRIEVE + correctness: >- + the answer contains a quantity equivalent to or approximately equal to + 1577, 1577 million, 1.577 billion, + 1600, 1600 million or 1.6 billion + + +financebench_id_04672: + sector: Industrials + + company: 3M + period: 2018 + doc-type: 10k + doc: 3M_2018_10K + + question-type: metrics-generated + question-reasoning: Information extraction + domain-question-num: '' + question: 'Assume that you are a public equities analyst. Answer the following question + by primarily using information that is shown in the balance sheet: what is the + year end FY2018 net PPNE for 3M? Answer in USD billions.' + + answer: $8.70 + justification: "The metric ppne, net was directly extracted from the company 10K.\ + \ The line item name, as seen in the 10K, was: Property, plant and equipment â\x80\ + \x94 net." + page(s)-0based: 57 + page(s): '58' + + category: 0-RETRIEVE + correctness: >- + the answer contains a quantity equivalent to or approximately equal to + 8.738, 8.738 billion, 8738 million, + 8.7, 8.7 billion or 8700 million + + evaluator-unreliable: true + + +financebench_id_00499: + sector: Industrials + + company: 3M + period: 2022 + doc-type: 10k + doc: 3M_2022_10K + + question-type: domain-relevant + question-reasoning: Logical reasoning (based on numerical reasoning) + domain-question-num: dg06 + question: Is 3M a capital-intensive business based on FY2022 data? + + answer: 'No, the company is managing its CAPEX and Fixed Assets pretty efficiently, + which is evident from below key metrics: + + CAPEX/Revenue Ratio: 5.1% + + Fixed assets/Total Assets: 20% + + Return on Assets= 12.4%' + justification: 'CAPEX/Revenue + + Fixed Assets/Total Assets + + ROA=Net Income/Total Assets' + page(s)-0based: 47 + page(s): 48,50,52 + + category: 6-OTHER-ADVANCED + correctness: |- + the answer opines that 3M is actually managing capital assets efficiently, and justifies such opinion + by certain calculated financial ratio metric value(s) showing at least one of the following: + - Fixed Assets is not large as proportion of Total Assets; + - Capital Expenditure (CapEx) is not high relative to Revenue; and/or + - Return on (Total) Assets (RoA or RoTA) is quite good + + evaluator-unreliable: true + + +financebench_id_01226: + sector: Industrials + + company: 3M + period: 2022 + doc-type: 10k + doc: 3M_2022_10K + + question-type: domain-relevant + question-reasoning: Logical reasoning (based on numerical reasoning) OR Numerical + reasoning OR Logical reasoning + domain-question-num: dg17 + question: What drove operating margin change as of FY2022 for 3M? If operating margin + is not a useful metric for a company like this, then please state that and explain + why. + + answer: "Operating Margin for 3M in FY2022 has decreased by 1.7% primarily due to:\ + \ \n-Decrease in gross Margin\n-mostly one-off charges including Combat Arms Earplugs\ + \ litigation, impairment related to exiting PFAS manufacturing, costs related\ + \ to exiting Russia and divestiture-related restructuring\ncharges" + justification: '' + page(s)-0based: 26 + page(s): '27' + + category: 0-RETRIEVE + correctness: |- + the answer mentions at least 1 salient change among those discussed below: + + COST OF SALES: + Cost of sales, measured as a percent of sales, increased in 2022 when compared to the same period last year. + Increases were primarily due to 2022 special item costs for significant litigation from additional commitments + to address PFAS-related matters at 3M's Zwijndrecht, Belgium site, higher raw materials and logistics costs, + manufacturing productivity headwinds which were further magnified by the shutdown of certain operations in Belgium + and progress on restarting previously-idled operations, and investments in growth, productivity and sustainability. + On a percent of sales basis, these increases were partially offset by increases in selling prices. + + SELLING, GENERAL AND ADMINISTRATIVE EXPENSES: + SG&A, measured as a percent of sales, increased in 2022 when compared to the same period last year. + SG&A was impacted by increased special item costs for significant litigation primarily related to steps toward + resolving Combat Arms Earplugs litigation resulting in a 2022 second quarter pre-tax charge of approximately $1.2 billion, + certain impairment costs related to exiting PFAS manufacturing, costs related to exiting Russia, + divestiture-related restructuring charges, and continued investment in key growth initiatives. + These increases were partially offset by restructuring benefits and ongoing general 3M cost management. + + RESEARCH, DEVELOPMENT AND RELATED EXPENSES: + R&D, measured as a percent of sales, decreased in 2022 when compared to the same period last year. + 3M continues to invest in a range of R&D activities from application development, product and manufacturing support, + product development and technology development aimed at disruptive innovations. + + GAIN ON BUSINESS DIVESTITURES: + In the third quarter of 2022, 3M recorded a pre-tax gain of $2.7 billion ($2.7 billion after tax) + related to the split-off and combination of its Food Safety business with Neogen Corporation. + + GOODWILL IMPAIRMENT EXPENSE: + As a result of 3M's commitment to exit per- and polyfluoroalkyl substance (PFAS) manufacturing, + 3M recorded a goodwill impairment charge related to the Advanced Materials reporting unit + (within the Transportation and Electronics business). + + +financebench_id_01865: # tricky: Total Sales Change contains zero Acquisitions but non-zero Divestitures + sector: Industrials + + company: 3M + period: 2022 + doc-type: 10k + doc: 3M_2022_10K + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: If we exclude the impact of M&A, which segment has dragged down 3M's overall + growth in 2022? + + answer: The consumer segment shrunk by 0.9% organically. + justification: '' + page(s)-0based: 24 + page(s): '25' + + category: 1-COMPARE + correctness: >- + the answer identifies Consumer segment as negative contributor + + +financebench_id_00807: + sector: Industrials + + company: 3M + period: 2023 + doc-type: 10q + doc: 3M_2023Q2_10Q + + question-type: domain-relevant + question-reasoning: Logical reasoning (based on numerical reasoning) OR Logical + reasoning + domain-question-num: dg01 + question: Does 3M have a reasonably healthy liquidity profile based on its quick + ratio for Q2 of FY2023? If the quick ratio is not relevant to measure liquidity, + please state that and explain why. + + answer: No. The quick ratio for 3M was 0.96 by Jun'23 close, which needs a bit of + an improvement to touch the 1x mark + justification: 'Quick Ratio= (Total current assets-Total inventories)/Total current + liabilities + + (15,754-5,280)/10,936' + page(s)-0based: 4 + page(s): '5' + + category: 4-CALC-AND-JUDGE + correctness: >- + the answer contains a calculated Quick Ratio decimal value that is over 0.75 but less than 1.00, + or, alternatively, a calculated percentage value that is over 75% but less than 100% + + +financebench_id_00941: + sector: Industrials + + company: 3M + period: 2023 + doc-type: 10q + doc: 3M_2023Q2_10Q + + question-type: domain-relevant + question-reasoning: Information extraction + domain-question-num: dg04 + question: Which debt securities are registered to trade on a national securities + exchange under 3M's name as of Q2 of 2023? + + answer: 'Following debt securities registered under 3M''s name are listed to trade + on the New York Stock Exchange: + + -1.500% Notes due 2026 (Trading Symbol: MMM26) + + -1.750% Notes due 2030 (Trading Symbol: MMM30) + + -1.500% Notes due 2031 (Trading Symbol: MMM31)' + justification: '' + page(s)-0based: 0 + page(s): '1' + + category: 0-RETRIEVE + correctness: >- + the answer mentions notes/securities due 2026, 2030 and 2031 + + evaluator-unreliable: true + + +financebench_id_01858: + sector: Industrials + + company: 3M + period: 2023 + doc-type: 10q + doc: 3M_2023Q2_10Q + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: Does 3M maintain a stable trend of dividend distribution? + + answer: Yes, not only they distribute the dividends on a routine basis, 3M has also + been increasing the per share dividend for consecutive 65 years + justification: '' + page(s)-0based: 61 + page(s): '62' + + category: 0-RETRIEVE + correctness: >- + the answer affirms that dividends have been stable, and/or mentions "65 years", "65th year" or something similar + + evaluator-unreliable: true + + +financebench_id_02987: + sector: Communication Services + + company: Activision Blizzard + period: 2019 + doc-type: 10k + doc: ACTIVISIONBLIZZARD_2019_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: 'What is the FY2019 fixed asset turnover ratio for Activision Blizzard? + Fixed asset turnover ratio is defined as: FY2019 revenue / (average PP&E between + FY2018 and FY2019). Round your answer to two decimal places. Base your judgments + on the information provided primarily in the statement of income and the statement + of financial position.' + + answer: '24.26' + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Total revenue. This metric was located in the 10K as a single line item + named: Total net revenues. + + + Metric 2: Ppne, net. This metric was located in the 10K as a single line item + named: Property and equipment, net.' + page(s)-0based: 68 + page(s): 69,70 + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Fixed Asset Turnover Ratio decimal value that is in the range from 23.00 to 25.00 + (if the answer is a single number, assume that it is that calculated Fixed Asset Turnover Ratio decimal value) + + evaluator-unreliable: true + + +financebench_id_07966: + sector: Communication Services + + company: Activision Blizzard + period: 2019 + doc-type: 10k + doc: ACTIVISIONBLIZZARD_2019_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: What is the FY2017 - FY2019 3 year average of capex as a % of revenue + for Activision Blizzard? Answer in units of percents and round to one decimal + place. Calculate (or extract) the answer from the statement of income and the + cash flow statement. + + answer: 1.9% + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Capital expenditures. This metric was located in the 10K as a single + line item named: Capital expenditures. + + + Metric 2: Total revenue. This metric was located in the 10K as a single line item + named: Total net revenues.' + page(s)-0based: 69 + page(s): 70,73 + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated percentage value that is in the range from 1.70% to 2.10%, + or, alternatively, a calculated decimal value that is in the range from 0.0170 to 0.0210 + (if the answer is a single number, assume that it is that calculated metric value) + + evaluator-unreliable: true + + +financebench_id_04735: + sector: Information Technology + + company: Adobe + period: 2015 + doc-type: 10k + doc: ADOBE_2015_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: 'You are an investment banker and your only resource(s) to answer the + following question is (are): the statement of financial position and the cash + flow statement. Here''s the question: what is the FY2015 operating cash flow ratio + for Adobe? Operating cash flow ratio is defined as: cash from operations / total + current liabilities. Round your answer to two decimal places.' + + answer: '0.66' + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Cash from operations. This metric was located in the 10K as a single + line item named: Net cash provided by operating activities. + + + Metric 2: Total current liabilities. This metric was located in the 10K as a single + line item named: Total current liabilities.' + page(s)-0based: 58 + page(s): 59,63 + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Operating Cash Flow Ratio decimal value that is in the range from 0.6000 to 0.7000, + or, alternatively, a calculated percentage value that is in the range from 60.00% to 70.00% + (if the answer is a single number, assume that it is that calculated Operating Cash Flow Ratio metric value) + + +financebench_id_07507: + sector: Information Technology + + company: Adobe + period: 2016 + doc-type: 10k + doc: ADOBE_2016_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: What is Adobe's year-over-year change in unadjusted operating income from + FY2015 to FY2016 (in units of percents and round to one decimal place)? Give a + solution to the question by using the income statement. + + answer: 65.4% + justification: 'The metric unadjusted operating income was directly extracted from + the company 10K. The line item name, as seen in the 10K, was: Operating income. + The final step was to execute the desired percent change calculation on unadjusted + operating income.' + page(s)-0based: 61 + page(s): '62' + + category: 2-CALC-CHANGE + correctness: >- + the answer contains a calculated Operating Income change percentage value that is in the range from 60.0% or 70.0% + (if the answer is a single number, assume that it is that calculated Operating Income change percentage value) + + +financebench_id_03856: + sector: Information Technology + + company: Adobe + period: 2017 + doc-type: 10k + doc: ADOBE_2017_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: 'What is the FY2017 operating cash flow ratio for Adobe? Operating cash + flow ratio is defined as: cash from operations / total current liabilities. Round + your answer to two decimal places. Please utilize information provided primarily + within the balance sheet and the cash flow statement.' + + answer: '0.83' + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Cash from operations. This metric was located in the 10K as a single + line item named: Net cash provided by operating activities. + + + Metric 2: Total current liabilities. This metric was located in the 10K as a single + line item named: Total current liabilities.' + page(s)-0based: 56 + page(s): 57,61 + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Operating Cash Flow Ratio decimal value that is in the range from 0.8000 to 0.8500, + or, alternatively, a calculated percentage value that is in the range from 80.00% to 85.00% + (if the answer is a single number, assume that it is that calculated Operating Cash Flow Ratio metric value) + + +financebench_id_00438: + sector: Information Technology + + company: Adobe + period: 2022 + doc-type: 10k + doc: ADOBE_2022_10K + + question-type: domain-relevant + question-reasoning: Numerical reasoning OR information extraction + domain-question-num: dg14 + question: Does Adobe have an improving operating margin profile as of FY2022? If + operating margin is not a useful metric for a company like this, then state that + and explain why. + + answer: No the operating margins of Adobe have recently declined from 36.8% in FY + 2021 to 34.6% in FY2022. A drop by 2.2% in a year. + justification: '6098/16388 + + 5802/14573' + page(s)-0based: 53 + page(s): '54' + + category: 4-CALC-AND-JUDGE + correctness: >- + the answer contains calculated Operating Margin percentage or decimal values for 2021 and 2022, + and concludes that such metric decreased + + evaluator-unreliable: true + + +financebench_id_00591: + sector: Information Technology + + company: Adobe + period: 2022 + doc-type: 10k + doc: ADOBE_2022_10K + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: Does Adobe have an improving Free cashflow conversion as of FY2022? + + answer: Yes, the FCF conversion (using net income as the denominator) for Adobe + has improved by ~13% from 143% in 2021 to 156% in 2022 + justification: 'FCF Conversion: (Net cash provided by operating activities - Purchases + of property and equipment)/Net income + + (7838-442)/4756 + + (7230-348)/4822' + page(s)-0based: 56 + page(s): '57' + + category: 4-CALC-AND-JUDGE + correctness: >- + the answer contains calculated Free Cash Flow Conversion Ratio percentage or decimal values for 2021 and 2022, + and concludes that such metric increased + + evaluator-unreliable: true + + +financebench_id_01319: + sector: Utilities + + company: AES Corporation + period: 2022 + doc-type: 10k + doc: AES_2022_10K + + question-type: domain-relevant + question-reasoning: Information extraction + domain-question-num: dg21 + question: What is the quantity of restructuring costs directly outlined in AES Corporation's + income statements for FY2022? If restructuring costs are not explicitly outlined + then state 0. + + answer: '0' + justification: '' + page(s)-0based: 131 + page(s): '132' + + category: 0-RETRIEVE + correctness: >- + the answer states 0, zero, and/or that restructuring costs are not explicitly mentioned/reported + + evaluator-unreliable: true + + +financebench_id_00540: + sector: Utilities + + company: AES Corporation + period: 2022 + doc-type: 10k + doc: AES_2022_10K + + question-type: domain-relevant + question-reasoning: Numerical reasoning OR Logical reasoning + domain-question-num: dg25 + question: Roughly how many times has AES Corporation sold its inventory in FY2022? + Calculate inventory turnover ratio for the FY2022; if conventional inventory management + is not meaningful for the company then state that and explain why. + + answer: AES has converted inventory 9.5 times in FY 2022. + justification: 'Cost of sales/Inventory + + 10069/1055' + page(s)-0based: 129 + page(s): 130,132 + + category: 3-CALC-COMPLEX + correctness: |- + the answer contains a calculated Inventory Turnover Ratio (or Inventory Conversion Ratio) decimal value that is either: + - in the range from 9.0 to 10.0 times (implicitly using ending Inventory as denominator), or + - approximately 12.0 times (implicitly using average Inventory as denominator) + (if the answer is a single number, assume that it is that calculated Inventory Turnover Ratio decimal value) + + +financebench_id_10420: + sector: Utilities + + company: AES Corporation + period: 2022 + doc-type: 10k + doc: AES_2022_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: 'Based on the information provided primarily in the statement of financial + position and the statement of income, what is AES''s FY2022 return on assets (ROA)? + ROA is defined as: FY2022 net income / (average total assets between FY2021 and + FY2022). Round your answer to two decimal places.' + answer: '-0.02' + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Net income. This metric was located in the 10K as a single line item + named: NET INCOME (LOSS) ATTRIBUTABLE TO THE AES CORPORATION. + + + Metric 2: Total assets. This metric was located in the 10K as a single line item + named: TOTAL ASSETS.' + page(s)-0based: 129 + page(s): 130,132 + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Return on Assets (RoA) + percentage value that is NEGATIVE and in the range from -2.00% to -1.40%, + or, alternatively, a calculated decimal value that is NEGATIVE and in the range from -0.0200 to -0.0140 + (if the answer is a single number, assume that it is that calculated Return on Assets (RoA) metric value) + + evaluator-unreliable: true + + +financebench_id_06655: + sector: Consumer Discretionary + + company: Amazon + period: 2017 + doc-type: 10k + doc: AMAZON_2017_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: 'What is Amazon''s FY2017 days payable outstanding (DPO)? DPO is defined + as: 365 * (average accounts payable between FY2016 and FY2017) / (FY2017 COGS + + change in inventory between FY2016 and FY2017). Round your answer to two decimal + places. Address the question by using the line items and information shown within + the balance sheet and the P&L statement.' + + answer: '93.86' + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Accounts payable. This metric was located in the 10K as a single line + item named: Accounts payable. + + + Metric 2: Inventories. This metric was located in the 10K as a single line item + named: Inventories. + + + Metric 3: Cost of goods sold. This metric was located in the 10K as a single line + item named: Cost of sales.' + page(s)-0based: 37 + page(s): 38,40 + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Days Payable Outstanding (DPO) decimal value that is in the range from 90.00 to 100.00 + (if the answer is a single number, assume that it is that calculated Days Payable Outstanding (DPO) metric value) + + +financebench_id_08135: + sector: Consumer Discretionary + + company: Amazon + period: 2017 + doc-type: 10k + doc: AMAZON_2017_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: What is Amazon's year-over-year change in revenue from FY2016 to FY2017 + (in units of percents and round to one decimal place)? Calculate what was asked + by utilizing the line items clearly shown in the statement of income. + + answer: 30.8% + justification: 'The metric total revenue was directly extracted from the company + 10K. The line item name, as seen in the 10K, was: Total net sales. The final step + was to execute the desired percent change calculation on total revenue.' + page(s)-0based: 37 + page(s): '38' + + category: 2-CALC-CHANGE + correctness: >- + the answer contains a calculated Revenue change percentage value that is in the range from 30.0% to 31.0% + (if the answer is a single number, assume that it is that calculated Revenue change percentage value) + + +financebench_id_08286: + sector: Consumer Discretionary + + company: Amazon + period: 2019 + doc-type: 10k + doc: AMAZON_2019_10K + + question-type: metrics-generated + question-reasoning: Information extraction + domain-question-num: '' + question: By drawing conclusions from the information stated only in the income + statement, what is Amazon's FY2019 net income attributable to shareholders (in + USD millions)? + + answer: $11588.00 + justification: 'The metric net income was directly extracted from the company 10K. + The line item name, as seen in the 10K, was: Net income.' + page(s)-0based: 37 + page(s): '38' + + category: 0-RETRIEVE + correctness: >- + the answer contains a quantity equivalent to or approximately equal to + 11588, 11588 million, 11.588 billion, + 11600, 11600 million or 11.6 billion + + +financebench_id_03882: + sector: Materials + + company: Amcor + period: 2020 + doc-type: 10k + doc: AMCOR_2020_10K + + question-type: metrics-generated + question-reasoning: Information extraction + domain-question-num: '' + question: What is Amcor's year end FY2020 net AR (in USD millions)? Address the + question by adopting the perspective of a financial analyst who can only use the + details shown within the balance sheet. + + answer: $1616.00 + justification: 'The metric accounts receivable, net was directly extracted from + the company 10K. The line item name, as seen in the 10K, was: Trade receivables, + net.' + page(s)-0based: 49 + page(s): '50' + + category: 0-RETRIEVE + correctness: >- + the answer contains a quantity equivalent to or approximately equal to + 1615.9, 1615.9 million, + 1616, 1616 million, 1.616 billion, + 1600, 1600 million or 1.6 billion + + evaluator-unreliable: true + + +financebench_id_01935: + sector: Materials + + company: Amcor + period: 2022 + doc-type: 8k + doc: AMCOR_2022_8K_dated-2022-07-01 + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: What was the key agenda of the AMCOR's 8k filing dated 1st July 2022? + + answer: Amcor Finance (USA), Inc. and Amcor Flexibles North America, Inc., entered + into supplemental indentures relating to Guaranteed Senior Notes due 2026 and + 2028. This involved the substitution of the Substitute Issuer (Amcor Flexibles + North America) for the Former Issuer (Amcor Finance) and the assumption of covenants + under the indentures. (In essence a novation agreement) + justification: '' + page(s)-0based: 1 + page(s): '2' + + category: 0-RETRIEVE + correctness: >- + the answer mentions on of the terms "supplemental", "indendure(s)", "substitute" or "substitution" + + evaluator-unreliable: true + + +financebench_id_00799: + sector: Materials + + company: Amcor + period: 2023 + doc-type: 10k + doc: AMCOR_2023_10K + + question-type: domain-relevant + question-reasoning: Numerical reasoning OR Logical reasoning + domain-question-num: dg02 + question: Has AMCOR's quick ratio improved or declined between FY2023 and FY2022? + If the quick ratio is not something that a financial analyst would ask about a + company like this, then state that and explain why. + + answer: The quick ratio has slightly improved from 0.67 times to 0.69 times between + FY 2023 and FY 2022.(3.4% jump) + justification: 'Quick Ratio= (Total current assets-(Raw materials and supplies+Work + in process and finished goods))/Total current liabilities + + (5308-992-1221)/4476 + + (5853-1114-1325)/5103' + page(s)-0based: 51 + page(s): '52' + + category: 4-CALC-AND-JUDGE + correctness: >- + the answer contains calculated Quick Ratio decimal or percentage values for 2022 and 2023, + both over 0.50 but less than 0.75 (if decimal), or, alternatively, over 50% but less than 75% (if percentage); + the answer then concludes that such metric increased + + +financebench_id_01079: + sector: Materials + + company: Amcor + period: 2023 + doc-type: 10k + doc: AMCOR_2023_10K + + question-type: domain-relevant + question-reasoning: Information extraction + domain-question-num: dg10 + question: What are major acquisitions that AMCOR has done in FY2023, FY2022 and + FY2021? + + answer: 'Amcor completed these acquisitions during FY2023: + + -100% equity interest of a flexibles manufacturing company in the Czech Republic + + - 100% equity interest in a medical device packaging manufacturing site in + + Shanghai, China. + + -acquisition of a New Zealand-based leading manufacturer of state-of-the-art, + automated protein + + packaging machines.' + justification: '' + page(s)-0based: 63 + page(s): '64' + + category: 0-RETRIEVE + correctness: |- + the answer mentions acquisitions in at least 2 of the following: + - Czech Republic; + - New Zealand; and + - Shanghai, China (or, alternatively, just "Shanghai" or just "China") + + +financebench_id_01148: + sector: Materials + + company: Amcor + period: 2023 + doc-type: 10k + doc: AMCOR_2023_10K + + question-type: domain-relevant + question-reasoning: Information extraction OR Logical reasoning OR + domain-question-num: dg12 + question: What industry does AMCOR primarily operate in? + + answer: Amcor is a global leader in packaging production for various use cases. + justification: '' + page(s)-0based: 4 + page(s): '5' + + category: 0-RETRIEVE + correctness: >- + the answer mentions "packaging" + + +financebench_id_00684: + sector: Materials + + company: Amcor + period: 2023 + doc-type: 10k + doc: AMCOR_2023_10K + + question-type: domain-relevant + question-reasoning: Numerical reasoning OR information extraction + domain-question-num: dg13 + question: Does AMCOR have an improving gross margin profile as of FY2023? If gross + margin is not a useful metric for a company like this, then state that and explain + why. + + answer: No. For AMCOR there has been a slight decline in gross margins by 0.8%. + justification: 'Gross Profit/Net Sales + + 2725/14694 + + 2820/14544' + page(s)-0based: 49 + page(s): '50' + + category: 4-CALC-AND-JUDGE + correctness: >- + the answer contains calculated Gross Margin percentage or decimal values for 2022 and 2023, + and concludes that such metric decreased + answer-inadequate: true + + +financebench_id_01936: + sector: Materials + + company: Amcor + period: 2023 + doc-type: 10q + doc: AMCOR_2023Q2_10Q + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: What is the nature & purpose of AMCOR's restructuring liability as oF + Q2 of FY2023 close? + + answer: 87% of the total restructuring liability is related Employee liabilities. + justification: '' + page(s)-0based: 14 + page(s): '15' + + category: 0-RETRIEVE + correctness: |- + the answer mentions Employee costs or Employee liabilities + + +financebench_id_01928: + sector: Materials + + company: Amcor + period: 2023 + doc-type: Earnings + doc: AMCOR_2023Q4_EARNINGS + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: What Was AMCOR's Adjusted Non GAAP EBITDA for FY 2023 + + answer: AMCOR's Adj. EBITDA was $2,018mn in FY 2023 + justification: '' + page(s)-0based: 11 + page(s): '12' + + category: 0-RETRIEVE + correctness: >- + the answer contains a quantity equivalent to or approximately equal to + 2018 million, 2.018 billion, + 2000 million or 2 billion + + evaluator-unreliable: true + + +financebench_id_01930: + sector: Materials + + company: Amcor + period: 2023 + doc-type: Earnings + doc: AMCOR_2023Q4_EARNINGS + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: How much was the Real change in Sales for AMCOR in FY 2023 vs FY 2022, + if we exclude the impact of FX movement, passthrough costs and one-off items? + + answer: The Real Growth was flat in FY 2023 vs FY 2022. + justification: '' + page(s)-0based: 9 + page(s): '10' + + category: 2-CALC-CHANGE + correctness: >- + the answer concludes that the percentage change was approximately 1%, + or, alternatively, concludes that the growth was flat / small + + evaluator-unreliable: true + + +financebench_id_03069: + sector: Information Technology + + company: AMD + period: 2015 + doc-type: 10k + doc: AMD_2015_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: Answer the following question as if you are an equity research analyst + and have lost internet connection so you do not have access to financial metric + providers. According to the details clearly outlined within the P&L statement + and the statement of cash flows, what is the FY2015 depreciation and amortization + (D&A from cash flow statement) % margin for AMD? + + answer: 4.2% + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Depreciation and amortization. This metric was located in the 10K as + a single line item named: Depreciation and amortization. + + + Metric 2: Total revenue. This metric was located in the 10K as a single line item + named: Net revenue.' + page(s)-0based: 55 + page(s): 56,60 + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Depreciation & Amortization (D&A) Margin (using Net Revenue as denominator) + percentage value that is in the range from 4.00% to 4.50%, + or, alternatively, a calculated decimal value that is in the range from 0.0400 to 0.0450 + (if the answer is a single number, assume that it is that calculated Depreciation & Amortization (D&A) Margin metric value) + + +financebench_id_00222: + sector: Information Technology + + company: AMD + period: 2022 + doc-type: 10k + doc: AMD_2022_10K + + question-type: domain-relevant + question-reasoning: Logical reasoning (based on numerical reasoning) OR Logical + reasoning + domain-question-num: dg01 + question: Does AMD have a reasonably healthy liquidity profile based on its quick + ratio for FY22? If the quick ratio is not relevant to measure liquidity, please + state that and explain why. + + answer: Yes. The quick ratio is 1.57, calculated as (cash and cash equivalents+Short + term investments+Accounts receivable, net+receivables from related parties)/ (current + liabilities). + justification: '' + page(s)-0based: 55 + page(s): '56' + + category: 4-CALC-AND-JUDGE + correctness: >- + the answer contains a calculated Quick Ratio decimal value that is in the range from 1.40 to 1.90, + or, alternatively, a calculated percentage value that is in the range from 140% to 190% + + +financebench_id_00995: + sector: Information Technology + + company: AMD + period: 2022 + doc-type: 10k + doc: AMD_2022_10K + + question-type: domain-relevant + question-reasoning: Information extraction + domain-question-num: dg07 + question: What are the major products and services that AMD sells as of FY22? + + answer: AMD sells server microprocessors (CPUs) and graphics processing units (GPUs), + data processing units (DPUs), Field Programmable Gate Arrays (FPGAs), and Adaptive + System-on-Chip (SoC) products for data centers; CPUs, accelerated processing units + (APUs) that integrate CPUs and GPUs, and chipsets for desktop and notebook personal + computers; discrete GPUs, and semi-custom SoC products and development services; + and embedded CPUs, GPUs, APUs, FPGAs, and Adaptive SoC products. + justification: '' + page(s)-0based: 3 + page(s): '4' + + category: 0-RETRIEVE + correctness: >- + the answer mentions at least graphics (i.e., GPU) and FPGA products + + evaluator-unreliable: true + + +financebench_id_01198: + sector: Information Technology + + company: AMD + period: 2022 + doc-type: 10k + doc: AMD_2022_10K + + question-type: domain-relevant + question-reasoning: Information extraction + domain-question-num: dg15 + question: What drove revenue change as of the FY22 for AMD? + + answer: In 2022, AMD reported Higher sales of their EPYC server processors, higher + semi-custom product sales, and the inclusion of Xilinx embedded product sales + justification: '' + page(s)-0based: 42 + page(s): '43' + + category: 0-RETRIEVE + correctness: |- + the answer mentions at least 2 of the following: + - "Data Center" and/or "EPYC"; + - "Gaming" and/or "semi-custom"; and + - "Embedded" and/or "Xilinx" + + evaluator-unreliable: true + + +financebench_id_00917: + sector: Information Technology + + company: AMD + period: 2022 + doc-type: 10k + doc: AMD_2022_10K + + question-type: domain-relevant + question-reasoning: Logical reasoning (based on numerical reasoning) OR Numerical + reasoning OR Logical reasoning + domain-question-num: dg17 + question: What drove operating margin change as of the FY22 for AMD? If operating + margin is not a useful metric for a company like this, then please state that + and explain why. + + answer: The decrease in AMD's operating income was primarily driven by amortization + of intangible assets associated with the Xilinx acquisition + justification: '' + page(s)-0based: 42 + page(s): '43' + + category: 0-RETRIEVE + correctness: >- + the answer mentions Xilinx + + +financebench_id_01279: + sector: Information Technology + + company: AMD + period: 2022 + doc-type: 10k + doc: AMD_2022_10K + + question-type: domain-relevant + question-reasoning: Numerical reasoning + domain-question-num: dg19 + question: Among operations, investing, and financing activities, which brought in + the most (or lost the least) cash flow for AMD in FY22? + + answer: In 2022, AMD brought in the most cashflow from Operations + justification: '' + page(s)-0based: 57 + page(s): '58' + + category: 1-COMPARE + correctness: >- + the answer identifies Operations / Operating Cash Flows as bringing in most cash + + +financebench_id_00563: + sector: Information Technology + + company: AMD + period: 2022 + doc-type: 10k + doc: AMD_2022_10K + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: From FY21 to FY22, excluding Embedded, in which AMD reporting segment + did sales proportionally increase the most? + + answer: Data Center + justification: "Data center: \nFY22: 6,043\nFY21: 3,694 \n6,043/3,694-1 = 63,59%\n\ + \nClient: \nFY22: 6,201\nFY21: 6,887 \n6,201/6,887-1 = -9,96%\n\n\nGaming: \n\ + FY22: 6,805\nFY21: 5,607 \n6,805/5,607-1 = 21,37%" + page(s)-0based: 47 + page(s): '48' + + category: 1-COMPARE + correctness: >- + the answer identifies Data Center segment as proportionally growing most strongly + + +financebench_id_00757: + sector: Information Technology + + company: AMD + period: 2022 + doc-type: 10k + doc: AMD_2022_10K + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: Did AMD report customer concentration in FY22? + + answer: Yes, one customer accounted for 16% of consolidated net revenue + justification: One customer ccounting for 16% of net evenue is a high customer concenration + page(s)-0based: 11 + page(s): '12' + + category: 0-RETRIEVE + correctness: >- + the answer mentions that one or a small number of customers + accounted for large portion of revenue + + evaluator-unreliable: true + + +financebench_id_00476: + sector: Financials + + company: American Express + period: 2022 + doc-type: 10k + doc: AMERICANEXPRESS_2022_10K + + question-type: domain-relevant + question-reasoning: Information extraction + domain-question-num: dg04 + question: Which debt securities are registered to trade on a national securities + exchange under American Express' name as of 2022? + + answer: There are none + justification: No debt securities are listed under the securities registered pursuant + to Section 12(b) of the Act, which implies there are none + page(s)-0based: 0 + page(s): '1' + + category: 0-RETRIEVE + correctness: >- + the answer concludes that there are no debt securities traded, + or, alternatively, that no such debt securities are explicitly reported + + evaluator-unreliable: true + + +financebench_id_01028: + sector: Financials + + company: American Express + period: 2022 + doc-type: 10k + doc: AMERICANEXPRESS_2022_10K + + question-type: domain-relevant + question-reasoning: Information extraction + domain-question-num: dg08 + question: What are the geographies that American Express primarily operates in as + of 2022? + + answer: United States, EMEA, APAC, and LACC + justification: '' + page(s)-0based: 154 + page(s): '155' + + category: 0-RETRIEVE + correctness: |- + the answer mentions at least 3 among: + - United States (US); + - Europe, the Middle East and Africa (EMEA); + - Asia Pacific, Australia and New Zealand (APAC); and + - Latin America, Canada and the Caribbean (LACC) + + +financebench_id_00723: + sector: Financials + + company: American Express + period: 2022 + doc-type: 10k + doc: AMERICANEXPRESS_2022_10K + + question-type: domain-relevant + question-reasoning: Numerical reasoning OR information extraction + domain-question-num: dg14 + question: Does AMEX have an improving operating margin profile as of 2022? If operating + margin is not a useful metric for a company like this, then state that and explain + why. + + answer: Performance is not measured through operating margin + justification: It's a financial services company and performance is measured through + the Net Interest Margin. + page(s)-0based: 95 + page(s): '96' + + category: 6-OTHER-ADVANCED + correctness: >- + the answer argues that Operating Margin is not a very relevant/useful metric for this business model and/or industry, + or, alternatively, that performance in this business model and/or industry is usually not judged through Operating Margin + + evaluator-unreliable: true + + +financebench_id_00720: + sector: Financials + + company: American Express + period: 2022 + doc-type: 10k + doc: AMERICANEXPRESS_2022_10K + + question-type: domain-relevant + question-reasoning: Logical reasoning (based on numerical reasoning) OR Numerical + reasoning OR Logical reasoning + domain-question-num: dg16 + question: What drove gross margin change as of the FY2022 for American Express? + If gross margin is not a useful metric for a company like this, then please state + that and explain why. + + answer: Performance is not measured through gross margin + justification: It's a financial services company and performance is measured through + the Net Interest Margin. + page(s)-0based: 95 + page(s): '96' + + category: 6-OTHER-ADVANCED + correctness: >- + the answer argues that Gross Margin is not a very relevant/useful metric for this business model and/or industry, + or, alternatively, that performance in this business model and/or industry is usually not judged through Gross Margin + + evaluator-unreliable: true + + +financebench_id_01351: + sector: Financials + + company: American Express + period: 2022 + doc-type: 10k + doc: AMERICANEXPRESS_2022_10K + + question-type: domain-relevant + question-reasoning: Numerical reasoning + domain-question-num: dg23 + question: How much has the effective tax rate of American Express changed between + FY2021 and FY2022? + + answer: The effective tax rate for American Express has changed/dropped from 24.6% + in FY 2021 to 21.6% in FY 2022. + justification: '' + page(s)-0based: 43 + page(s): '44' + + category: 2-CALC-CHANGE + correctness: >- + the answer says Effective Tax Rate changed from 24.6% to 21.6%, + and/or that it decreased by 3 pencentage points or 3% + + evaluator-unreliable: true + + +financebench_id_01964: + sector: Financials + + company: American Express + period: 2022 + doc-type: 10k + doc: AMERICANEXPRESS_2022_10K + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: What was the largest liability in American Express's Balance Sheet in + 2022? + + answer: Customer deposits + justification: '' + page(s)-0based: 97 + page(s): '98' + + category: 1-COMPARE + correctness: >- + the answer identifies Customer Deposits as largest liability + + evaluator-unreliable: true + + +financebench_id_01981: + sector: Financials + + company: American Express + period: 2022 + doc-type: 10k + doc: AMERICANEXPRESS_2022_10K + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: Was American Express able to retain card members during 2022? + + answer: 'Yes' + justification: '' + page(s)-0based: 44 + page(s): '45' + + category: 0-RETRIEVE + correctness: >- + the answer affirms that retention was good/high + + evaluator-unreliable: true + + +financebench_id_05718: + sector: Utilities + + company: American Water Works + period: 2020 + doc-type: 10k + doc: AMERICANWATERWORKS_2020_10K + + question-type: metrics-generated + question-reasoning: Information extraction + domain-question-num: '' + question: How much (in USD billions) did American Water Works pay out in cash dividends + for FY2020? Compute or extract the answer by primarily using the details outlined + in the statement of cash flows. + + answer: $0.40 + justification: 'The metric total cash dividends paid out was directly extracted + from the company 10K. The line item name, as seen in the 10K, was: Dividends paid.' + page(s)-0based: 85 + page(s): '86' + + category: 0-RETRIEVE + correctness: >- + the answer contains a quantity equivalent to or approximately equal to + 0.389, 0.389 billion, 389 million, + 0.4, 0.4 billion or 400 million + + +financebench_id_04254: + sector: Utilities + + company: American Water Works + period: 2021 + doc-type: 10k + doc: AMERICANWATERWORKS_2021_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: Basing your judgments off of the cash flow statement and the income statement, + what is American Water Works's FY2021 unadjusted operating income + depreciation + and amortization from the cash flow statement (unadjusted EBITDA) in USD millions? + + answer: $1832.00 + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Depreciation and amortization. This metric was located in the 10K as + a single line item named: Depreciation and amortization. + + + Metric 2: Unadjusted operating income. This metric was located in the 10K as a + single line item named: Operating income.' + page(s)-0based: 85 + page(s): 86,88 + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a quantity equivalent to or approximately equal to + 1832, 1832 million, 1.832 billion, + 1800, 1800 million or 1.8 billion + + +financebench_id_00070: + sector: Utilities + + company: American Water Works + period: 2022 + doc-type: 10k + doc: AMERICANWATERWORKS_2022_10K + + question-type: domain-relevant + question-reasoning: Numerical reasoning OR Logical reasoning + domain-question-num: dg24 + question: Does American Water Works have positive working capital based on FY2022 + data? If working capital is not a useful or relevant metric for this company, + then please state that and explain why. + + answer: No, American Water Works had negative working capital of -$1561M in FY 2022. + justification: 'Accounts receivable+Income tax receivable+Unbilled revenues+Materials + and supplies+other-Accounts payable-Accrued liabilities-Accrued taxes + + 334+114+275+98+312-254-706-49' + page(s)-0based: 80 + page(s): 81,82 + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated (Net) Working Capital metric value in dollars + that is NEGATIVE and equivalent to or approximately equal to + minus/negative 1561, minus/negative 1561 million, minus/negative 1.561 billion, + minus/negative 1600, minus/negative 1600 million or minus/negative 1.6 billion + + evaluator-unreliable: true + + +financebench_id_02608: + sector: Consumer Discretionary + + company: Best Buy + period: 2017 + doc-type: 10k + doc: BESTBUY_2017_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: In agreement with the information outlined in the income statement, what + is the FY2015 - FY2017 3 year average net profit margin (as a %) for Best Buy? + Answer in units of percents and round to one decimal place. + + answer: 2.8% + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Total revenue. This metric was located in the 10K as a single line item + named: Revenue. + + + Metric 2: Net income. This metric was located in the 10K as a single line item + named: Net earnings attributable to Best Buy Co., Inc. shareholders.' + page(s)-0based: 55 + page(s): '56' + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Average Net Profit Margin percentage value that is in the range from 2.50% to 3.00%, + or, alternatively, a calculated decimal value that is in the range from 0.0250 to 0.0300 + (if the answer is a single number, assume that it is that calculated Average Net Profit Margin metric value) + + +financebench_id_04417: + sector: Consumer Discretionary + + company: Best Buy + period: 2019 + doc-type: 10k + doc: BESTBUY_2019_10K + + question-type: metrics-generated + question-reasoning: Information extraction + domain-question-num: '' + question: What is the year end FY2019 total amount of inventories for Best Buy? + Answer in USD millions. Base your judgments on the information provided primarily + in the balance sheet. + + answer: $5409.00 + justification: 'The metric inventories was directly extracted from the company 10K. + The line item name, as seen in the 10K, was: Merchandise inventories.' + page(s)-0based: 51 + page(s): '52' + + category: 0-RETRIEVE + correctness: >- + the answer contains a quantity equivalent to or approximately equal to + 5409, 5409 million, 5.409 billion, + 5400, 5400 million or 5.4 billion + + +financebench_id_00685: + sector: Consumer Discretionary + + company: Best Buy + period: 2023 + doc-type: 10k + doc: BESTBUY_2023_10K + + question-type: domain-relevant + question-reasoning: Logical reasoning (based on numerical reasoning) OR Logical + reasoning + domain-question-num: dg03 + question: Are Best Buy's gross margins historically consistent (not fluctuating + more than roughly 2% each year)? If gross margins are not a relevant metric for + a company like this, then please state that and explain why. + + answer: Yes, the margins have been consistent, there has been a minor decline of + 1.1% in gross margins between FY2022 and FY2023. + justification: 'Gross Profit/Revenue + + 9912/46298 + + 11640/51761' + page(s)-0based: 39 + page(s): '40' + + category: 4-CALC-AND-JUDGE + correctness: >- + the answer contains calculated Gross Margin + percentage values for 2022 and 2023 that are within 2 percentage points (or 2%) of each other, + or, alternatively, calculated decimal values that are within 0.02 of each other + answer-inadequate: true + + +financebench_id_01077: + sector: Consumer Discretionary + + company: Best Buy + period: 2023 + doc-type: 10k + doc: BESTBUY_2023_10K + + question-type: domain-relevant + question-reasoning: Information extraction + domain-question-num: dg10 + question: What are major acquisitions that Best Buy has done in FY2023, FY2022 and + FY2021? + + answer: 'Best Buy closed two acquisitions, both these companies were already partially + owned by Best Buy, but Best Buy acquired all outstanding shares of these two companies + during FY 2022: (1) Current Health Ltd and (2) Two Peaks, LLC d/b/a Yardbird Furniture' + justification: '' + page(s)-0based: 50 + page(s): '51' + + category: 0-RETRIEVE + correctness: >- + the answer mentions Current Health and Two Peaks (which is also alternatively called Yardbird) + + +financebench_id_01275: + sector: Consumer Discretionary + + company: Best Buy + period: 2023 + doc-type: 10k + doc: BESTBUY_2023_10K + + question-type: domain-relevant + question-reasoning: Numerical reasoning + domain-question-num: dg19 + question: Among operations, investing, and financing activities, which brought in + the most (or lost the least) cash flow for Best Buy in FY2023? + + answer: Best Buy generated the most cash flow from operating activities in FY 2023 + ($1.8 bn) + justification: '' + page(s)-0based: 41 + page(s): '42' + + category: 1-COMPARE + correctness: >- + the answer identifies that Operations / Operating Cash Flows as bringing in most cash + + +financebench_id_00288: + sector: Consumer Discretionary + + company: Best Buy + period: 2024 + doc-type: 10q + doc: BESTBUY_2024Q2_10Q + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: Was there any drop in Cash & Cash equivalents between FY 2023 and Q2 of + FY2024? + + answer: Yes, there was a decline of ~42% between FY2023 and Q2 of FY 2024. + justification: 1093/1874-1 + page(s)-0based: 19 + page(s): '20' + + category: 1-COMPARE + correctness: >- + the answer affirms that Cash & Cash Equivalents decreased + + +financebench_id_00460: + sector: Consumer Discretionary + + company: Best Buy + period: 2024 + doc-type: 10q + doc: BESTBUY_2024Q2_10Q + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: Was there any change in the number of Best Buy stores between Q2 of FY2024 + and FY2023? + + answer: Yes, there is decline in number stores by 1.32% from 982 stores in Q2 FY + 2023 to 969 by the end of Q2 FY2024. + justification: 969/982-1 + page(s)-0based: 16 + page(s): '17' + + category: 1-COMPARE + correctness: >- + the answer mentions that number of stores decreased + + evaluator-unreliable: true + + +financebench_id_01902: + sector: Consumer Discretionary + + company: Best Buy + period: 2024 + doc-type: 10q + doc: BESTBUY_2024Q2_10Q + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: Which Best Buy product category performed the best (by top line) in the + domestic (USA) Market during Q2 of FY2024? + + answer: The entertainment segment experienced the highest growth of 9% during Q2 + FY2024, primarily from gaming division. + justification: '' + page(s)-0based: 17 + page(s): '18' + + category: 1-COMPARE + correctness: |- + the answer either: + - identifies Entertainment (or Gaming) category/segment as proportionally growing most; or + - identifies Computing and Mobile Phones category/segment as having highest revenue + + evaluator-unreliable: true + + +financebench_id_04660: + sector: Information Technology + + company: Block + period: 2016 + doc-type: 10k + doc: BLOCK_2016_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: Considering the data in the balance sheet, what is Block's (formerly known + as Square) FY2016 working capital ratio? Define working capital ratio as total + current assets divided by total current liabilities. Round your answer to two + decimal places. + + answer: '1.73' + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Total current liabilities. This metric was located in the 10K as a single + line item named: Total current liabilities. + + + Metric 2: Total current assets. This metric was located in the 10K as a single + line item named: Total current assets.' + page(s)-0based: 67 + page(s): '68' + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Working Capital Ratio decimal value that is in the range from 1.70 to 1.80, + or, alternatively, a calculated percentage value that is in the range from 170% to 180% + (if the answer is a single number, assume that it is that calculated Working Capital Ratio metric value) + + +financebench_id_03838: + sector: Information Technology + + company: Block + period: 2020 + doc-type: 10k + doc: BLOCK_2020_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: What is the FY2019 - FY2020 total revenue growth rate for Block (formerly + known as Square)? Answer in units of percents and round to one decimal place. + Approach the question asked by assuming the standpoint of an investment banking + analyst who only has access to the statement of income. + + answer: 101.5% + justification: 'The metric total revenue was directly extracted from the company + 10K. The line item name, as seen in the 10K, was: Total net revenue. The final + step was to execute the desired percent change calculation on total revenue.' + page(s)-0based: 85 + page(s): '86' + + category: 2-CALC-CHANGE + correctness: >- + the answer contains a calculated Revenue growth percentage value that is over 100.0% + (if the answer is a single number, assume that it is that calculated Revenue growth percentage value) + + evaluator-unreliable: true + + +financebench_id_07661: + sector: Information Technology + + company: Block + period: 2020 + doc-type: 10k + doc: BLOCK_2020_10K + + question-type: metrics-generated + question-reasoning: Information extraction + domain-question-num: '' + question: 'Using the cash flow statement, answer the following question to the best + of your abilities: how much did Block (formerly known as Square) generate in cash + flow from operating activities in FY2020? Answer in USD millions.' + + answer: $382.00 + justification: 'The metric cash from operations was directly extracted from the + company 10K. The line item name, as seen in the 10K, was: Net cash provided by + operating activities.' + page(s)-0based: 89 + page(s): '90' + + category: 0-RETRIEVE + correctness: >- + the answer contains a quantity equivalent to or approximately equal to + 381.6, 381.6 million, 0.3816 billion, + 382, 382 million, 0.382 billion, + 400, 400 million or 0.4 billion + + +financebench_id_10285: + sector: Industrials + + company: Boeing + period: 2018 + doc-type: 10k + doc: BOEING_2018_10K + + question-type: metrics-generated + question-reasoning: Information extraction + domain-question-num: '' + question: 'We need to calculate a financial metric by using information only provided + within the balance sheet. Please answer the following question: what is Boeing''s + year end FY2018 net property, plant, and equipment (in USD millions)?' + + answer: $12645.00 + justification: 'The metric ppne, net was directly extracted from the company 10K. + The line item name, as seen in the 10K, was: Property, plant and equipment, net.' + page(s)-0based: 51 + page(s): '52' + + category: 0-RETRIEVE + correctness: >- + the answer contains a quantity equivalent to or approximately equal to + 12645, 12645 million, 12.645 billion, + 12600, 12600 million or 12.6 billion + + evaluator-unreliable: true + + +financebench_id_00517: + sector: Industrials + + company: Boeing + period: 2022 + doc-type: 10k + doc: BOEING_2022_10K + + question-type: domain-relevant + question-reasoning: Logical reasoning (based on numerical reasoning) + domain-question-num: dg09 + question: Are there any product categories / service categories that represent more + than 20% of Boeing's revenue for FY2022? + + answer: Yes. Boeing has product and service categories that represent more than + 20% of Boeing's revenue for FY2022. These categories are Commercial Airplanes + which comprises 39% of total revenue, Defence which comprises 35% of total revenue + and Services which comprises 26% of total revenue. + justification: 'Commercial Airplanes%=Revenues: Commercial Airplanes/Total revenues*100=25,867/66,608*100=39%. + Defence%=Defense, Space & Security/Total revenues*100=23,162/66,608*100=35%. Services%=Global + Services/Total revenues*100=17,611/66,608*100=26%.' + page(s)-0based: 61 + page(s): '62' + + category: 3-CALC-COMPLEX + correctness: |- + the answer mentions at least 1 of following categories: + - Commercial Airplanes; + - Defense/Defence (or fully written "Defense, Space & Security"); and + - Services (or fully written "Global Services") + + evaluator-unreliable: true + + +financebench_id_01091: + sector: Industrials + + company: Boeing + period: 2022 + doc-type: 10k + doc: BOEING_2022_10K + + question-type: domain-relevant + question-reasoning: Information extraction + domain-question-num: dg11 + question: Has Boeing reported any materially important ongoing legal battles from + FY2022? + + answer: Yes. Multiple lawsuits have been filed against Boeing resulting from a 2018 + Lion Air crash and a 2019 Ethiopian Airlines crash. + justification: '' + page(s)-0based: 112 + page(s): '113' + + category: 0-RETRIEVE + correctness: >- + the answer affirms that there have been material lawsuits / legal battles + + evaluator-unreliable: true + + +financebench_id_00678: # note: Gross Income is implicit, with missing label + sector: Industrials + + company: Boeing + period: 2022 + doc-type: 10k + doc: BOEING_2022_10K + + question-type: domain-relevant + question-reasoning: Numerical reasoning OR information extraction + domain-question-num: dg13 + question: Does Boeing have an improving gross margin profile as of FY2022? If gross + margin is not a useful metric for a company like this, then state that and explain + why. + + answer: Yes. Boeing has an improving gross margin profile as of FY2022. Gross profit + improved from $3,017 million in FY2021 to $3,502 million in FY2022. Gross margin + % improved from 4.8% in FY2021 to 5.3% in FY2022. + justification: Gross margin%=Gross margin/Total revenues*100=3,502/66,608*100=5.3% + for 2022 and 3,017/62,286*100=4.8% for 2021. + page(s)-0based: 54 + page(s): '55' + + category: 4-CALC-AND-JUDGE + correctness: >- + the answer contains calculated Gross Margin percentage or decimal values for 2021 and 2022, + and concludes that such metric increased + + evaluator-unreliable: true + + +financebench_id_01290: + sector: Industrials + + company: Boeing + period: 2022 + doc-type: 10k + doc: BOEING_2022_10K + + question-type: domain-relevant + question-reasoning: Information extraction OR Logical reasoning + domain-question-num: dg20 + question: Who are the primary customers of Boeing as of FY2022? + + answer: Boeing's primary customers as of FY2022 are a limited number of commercial + airlines and the US government. The US government accounted for 40% of Boeing's + total revenues in FY2022. + justification: '' + page(s)-0based: 7 + page(s): 8, 10, 14 + + category: 0-RETRIEVE + correctness: >- + the answer mentions airlines and government(s) / military(ies) + + evaluator-unreliable: true + + +financebench_id_00464: + sector: Industrials + + company: Boeing + period: 2022 + doc-type: 10k + doc: BOEING_2022_10K + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: Is Boeing's business subject to cyclicality? + + answer: Yes, Boeing's business is subject to cyclicality due to its exposure to + the airline industry which is a cyclical industry. + justification: A major portion of Boeing's revenue is derived from the sale of aircraft + to commercial airlines. The commercial airlines business is cyclical, and subject + to significant profit swings. + page(s)-0based: 7 + page(s): '8' + + category: 0-RETRIEVE + correctness: >- + the answer affirms that cyclicality is present + + +financebench_id_00494: + sector: Industrials + + company: Boeing + period: 2022 + doc-type: 10k + doc: BOEING_2022_10K + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: What production rate changes is Boeing forecasting for FY2023? + + answer: Boeing forecasts an increase in the production rates for the 737, 777X and + 787 aircrafts in 2023. + justification: Boeing plans to gradually increase production rates for the 737 and + 787 and to resume production of 777X. + page(s)-0based: 8 + page(s): '9' + + category: 0-RETRIEVE + correctness: >- + the answer mentions increase(s) in production rate(s) + + +financebench_id_00585: # note: correct number signs + sector: Industrials + + company: Boeing + period: 2022 + doc-type: 10k + doc: BOEING_2022_10K + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: How does Boeing's effective tax rate in FY2022 compare to FY2021? + + answer: Effective tax rate in FY2022 was 0.62%, compared to -14.76% in FY2021. + justification: Effective tax rate=Income tax (expense) benefit/ Loss before income + taxes*100=(31)/(5,022)*100=0.62% in 2022 and 743/(5,033)*100=-14.76%. + page(s)-0based: 54 + page(s): '55' + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains calculated Effective Tax Rate percentage or decimal values for 2021 and 2022, + with one value being negative and the other value being positive + + evaluator-unreliable: true + + +financebench_id_03473: + sector: Consumer Staples + + company: Coca-Cola + period: 2017 + doc-type: 10k + doc: COCACOLA_2017_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: 'What is the FY2017 return on assets (ROA) for Coca Cola? ROA is defined + as: FY2017 net income / (average total assets between FY2016 and FY2017). Round + your answer to two decimal places. Give a response to the question by relying + on the details shown in the balance sheet and the P&L statement.' + + answer: '0.01' + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Net income. This metric was located in the 10K as a single line item + named: NET INCOME ATTRIBUTABLE TO SHAREOWNERS OF THE COCA-COLA COMPANY. + + + Metric 2: Total assets. This metric was located in the 10K as a single line item + named: TOTAL ASSETS.' + page(s)-0based: 73 + page(s): 74,76 + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Return on Assets (RoA) percentage value that is in the range from 0.90% to 2.00%, + or, alternatively, a calculated decimal value that is in the range from 0.0090 to 0.0200 + (if the answer is a single number, assume that it is that calculated Return on Assets (RoA) metric value) + + evaluator-unreliable: true + + +financebench_id_09724: + sector: Consumer Staples + + company: Coca-Cola + period: 2021 + doc-type: 10k + doc: COCACOLA_2021_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: What is Coca Cola's FY2021 COGS % margin? Calculate what was asked by + utilizing the line items clearly shown in the income statement. + + answer: 39.7% + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Cost of goods sold. This metric was located in the 10K as a single line + item named: Cost of goods sold. + + + Metric 2: Total revenue. This metric was located in the 10K as a single line item + named: Net Operating Revenues.' + page(s)-0based: 61 + page(s): '62' + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Cost of Goods Sold (COGS) Margin + percentage value that is in the range from 38.00% to 42.00%, + or, alternatively, a calculated decimal value that is in the range from 0.3800 to 0.4200 + (if the answer is a single number, assume that it is that calculated Cost of Goods Sold (COGS) Margin metric value) + + +financebench_id_06272: + sector: Consumer Staples + + company: Coca-Cola + period: 2022 + doc-type: 10k + doc: COCACOLA_2022_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: What is Coca Cola's FY2022 dividend payout ratio (using total cash dividends + paid and net income attributable to shareholders)? Round answer to two decimal + places. Answer the question asked by assuming you only have access to information + clearly displayed in the cash flow statement and the income statement. + + answer: '0.8' + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Total cash dividends paid out. This metric was located in the 10K as + a single line item named: Dividends. + + + Metric 2: Net income. This metric was located in the 10K as a single line item + named: Net Income Attributable to Shareowners of The Coca-Cola Company.' + page(s)-0based: 62 + page(s): 63,66 + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Dividend Payout Ratio decimal value that is in the range from 0.7800 to 0.8200, + or, alternatively, a calculated percentage value that is in the range from 78.00% to 82.00% + (if the answer is a single number, assume that it is that calculated Dividend Payout Ratio metric value) + + evaluator-unreliable: true + + +financebench_id_10130: + sector: Information Technology + + company: Corning + period: 2020 + doc-type: 10k + doc: CORNING_2020_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: 'Based on the information provided primarily in the balance sheet and + the statement of income, what is FY2020 days payable outstanding (DPO) for Corning? + DPO is defined as: 365 * (average accounts payable between FY2019 and FY2020) + / (FY2020 COGS + change in inventory between FY2019 and FY2020). Round your answer + to two decimal places.' + + answer: '63.86' + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Accounts payable. This metric was located in the 10K as a single line + item named: Accounts payable. + + + Metric 2: Inventories. This metric was located in the 10K as a single line item + named: Inventories, net (Note 6). + + + Metric 3: Cost of goods sold. This metric was located in the 10K as a single line + item named: Cost of sales.' + page(s)-0based: 69 + page(s): 70,72 + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Days Payable Outstanding (DPO) decimal value that is in the range from 60.00 to 70.00 + (if the answer is a single number, assume that it is that calculated Days Payable Outstanding (DPO) decimal value) + + +financebench_id_02981: + sector: Information Technology + + company: Corning + period: 2021 + doc-type: 10k + doc: CORNING_2021_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: Taking into account the information outlined in the income statement, + what is the FY2019 - FY2021 3 year average unadjusted operating income % margin + for Corning? Answer in units of percents and round to one decimal place. + + answer: 10.3% + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Unadjusted operating income. This metric was located in the 10K as a + single line item named: Operating income. + + + Metric 2: Total revenue. This metric was located in the 10K as a single line item + named: Net sales.' + page(s)-0based: 64 + page(s): '65' + + category: 3-CALC-COMPLEX + correctness: >- + the answer constains a calculated Average Operating Income Margin percentage value that is in the range from 9.00% to 12.00%, + or, alternatively, a calculated decimal value that is in the range from 0.0900 to 0.1200 + (if the answer is a single number, assume that it is that calculated Average Operating Income Margin metric value) + + evaluator-unreliable: true + + +financebench_id_01346: + sector: Information Technology + + company: Corning + period: 2022 + doc-type: 10k + doc: CORNING_2022_10K + + question-type: domain-relevant + question-reasoning: Numerical reasoning + domain-question-num: dg23 + question: How much has the effective tax rate of Corning changed between FY2021 + and FY2022? + + answer: The effective tax rate of Corning has changed from 20% in FY2021 to 23% + in FY 2022. + justification: '' + page(s)-0based: 23 + page(s): '24' + + category: 2-CALC-CHANGE + correctness: >- + the answer says that Effective Tax Rate changed + from approximately 20.2% (or 20%) to approximately 22.9% (or 23%), + and/or that it increased by approximately 2.6, 2.7 or 3 percentage points + (or 2.6%, 2.7%, or 3%) + + evaluator-unreliable: true + + +financebench_id_00005: + sector: Information Technology + + company: Corning + period: 2022 + doc-type: 10k + doc: CORNING_2022_10K + + question-type: domain-relevant + question-reasoning: Numerical reasoning OR Logical reasoning + domain-question-num: dg24 + question: Does Corning have positive working capital based on FY2022 data? If working + capital is not a useful or relevant metric for this company, then please state + that and explain why. + + answer: Yes. Corning had a positive working capital amount of $831 million by FY + 2022 close. This answer considers only operating current assets and current liabilities + that were clearly shown in the balance sheet. + justification: 'Trade accounts receivable, net of doubtful accounts+Inventories+Other + current assets-Accounts payable-Other accrued liabilities + + 1721+2904+1157-1804-3147' + page(s)-0based: 59 + page(s): '60' + + category: 3-CALC-COMPLEX + correctness: >- + the answer affirms that Working Capital is/was positive, + proving so by a calculated Working Capital metric value that is positive + + +financebench_id_04209: + sector: Consumer Staples + + company: Costco + period: 2021 + doc-type: 10k + doc: COSTCO_2021_10K + + question-type: metrics-generated + question-reasoning: Information extraction + domain-question-num: '' + question: Using only the information within the balance sheet, how much total assets + did Costco have at the end of FY2021? Answer in USD millions. + + answer: $59268.00 + justification: 'The metric total assets was directly extracted from the company + 10K. The line item name, as seen in the 10K, was: TOTAL ASSETS.' + page(s)-0based: 37 + page(s): '38' + + category: 0-RETRIEVE + correctness: >- + the answer contains a quantity equivalent to or approximately equal to + 59268, 59268 million, 59.268 billion, + 59300, 59300 million, 59.3 billion + 59000, 59000 million or 59 billion + + +financebench_id_05915: + sector: Health Care + + company: CVS Health + period: 2018 + doc-type: 10k + doc: CVSHEALTH_2018_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: 'What is the FY2018 fixed asset turnover ratio for CVS Health? Fixed asset + turnover ratio is defined as: FY2018 revenue / (average PP&E between FY2017 and + FY2018). Round your answer to two decimal places. Calculate what was asked by + utilizing the line items clearly shown in the P&L statement and the balance sheet.' + + answer: '17.98' + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Total revenue. This metric was located in the 10K as a single line item + named: Total revenues. + + + Metric 2: Ppne, net. This metric was located in the 10K as a single line item + named: Property and equipment, net.' + page(s)-0based: 301 + page(s): 302,304 + + category: 3-CALC-COMPLEX + correctness: >- + the answer constains a calculated Fixed Asset Turnover Ratio decimal value that is in the range from 17.00 to 19.00 + (if the answer is a single number, assume that it is that calculated Fixed Asset Turnover Ratio decimal value) + + evaluator-unreliable: true + + +financebench_id_00790: + sector: Health Care + + company: CVS Health + period: 2022 + doc-type: 10k + doc: CVSHEALTH_2022_10K + + question-type: domain-relevant + question-reasoning: Logical reasoning (based on numerical reasoning) + domain-question-num: dg06 + question: Is CVS Health a capital-intensive business based on FY2022 data? + + answer: Yes, CVS Health requires an extensive asset base to operate, which is evident + from its ROA of only 1.82% in 2022 and 3.39% in 2021, though it should be noted + that a significant portion of this asset base is goodwill, and CVS's fixed assets/total + assets ratio is on the lower side of 5.6%. + justification: 'Property and equipment, net/Total Assets + + 12873/228275 + + + ROA=Net Income/Total Assets + + 4165/228275 + + 7898/232999' + page(s)-0based: 107 + page(s): 108,110 + + category: 6-OTHER-ADVANCED + correctness: |- + the answer either: + - mentions that a calculated Return on Assets (RoA) metric value is quite low (which suggests capital intensity); or + - mentions that Fixed Assets form only a small proportion of Total Assets (which suggests the reverse) + + evaluator-unreliable: true + + +financebench_id_01107: + sector: Health Care + + company: CVS Health + period: 2022 + doc-type: 10k + doc: CVSHEALTH_2022_10K + + question-type: domain-relevant + question-reasoning: Information extraction + domain-question-num: dg11 + question: Has CVS Health reported any materially important ongoing legal battles + from 2022, 2021 and 2020? + + answer: "Yes, CVS Health has been involved in multiple ongoing legal battles. Some\ + \ notable legal dispute areas for CVS are: (1) usual and customary pricing litigation:\ + \ where it's claimed that CVSâ\x80\x99s retail pharmacies overcharged for prescription\ + \ drugs; (2) PBM litigation and investigations: where it's claimed that that rebate\ + \ agreements between the drug manufacturers and PBMs caused inflated prices for\ + \ certain drug products; and (3) controlled substances litigation: legal matters\ + \ around opioids for which CVS has agreed to pay up to $4.3 billion to claimants\ + \ in remediation and $625 million to attorneys and fees" + justification: '' + page(s)-0based: 172 + page(s): 173,173,174 + + category: 0-RETRIEVE + correctness: >- + the answer affirms that there have been material lawsuits / legal battles + + +financebench_id_01244: + sector: Health Care + + company: CVS Health + period: 2022 + doc-type: 10k + doc: CVSHEALTH_2022_10K + + question-type: domain-relevant + question-reasoning: Information extraction + domain-question-num: dg18 + question: Has CVS Health paid dividends to common shareholders in Q2 of FY2022? + + answer: Yes, CVS paid a $ 0.55 dividend per share every quarter in FY2022 + justification: '' + page(s)-0based: 67 + page(s): '68' + + category: 0-RETRIEVE + correctness: >- + the answer affirms that dividends have been / were paid + + +financebench_id_00839: + sector: Consumer Discretionary + + company: Foot Locker + period: 2022 + doc-type: 8k + doc: FOOTLOCKER_2022_8K_dated_2022-08-19 + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: Does Foot Locker's new CEO have previous CEO experience in a similar company + to Footlocker? + + answer: Yes. She was previous CEO of Ulta Beauty which means she had to manage a + large retail company that has brick and mortar + online business. So yes she was + a CEO in a similar company to Foot Locker before this. + justification: '' + page(s)-0based: 1 + page(s): '2' + + category: 0-RETRIEVE + correctness: >- + the answer affirms that Dillon has got experience in relevant and similar organizations and roles + + evaluator-unreliable: true + + +financebench_id_00822: + sector: Consumer Discretionary + + company: Foot Locker + period: 2022 + doc-type: 8k + doc: FOOTLOCKER_2022_8K_dated-2022-05-20 + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: Were there any board member nominees who had substantially more votes + against joining than the other nominees? + + answer: Yes, his name is Richard A. Johnson + justification: Richard A. Johnson had roughly 16.1 million votes against him joining + whereas the maximum votes against joining among all other candidates was roughly + 6.1 million. + page(s)-0based: 1 + page(s): '2' + + category: 1-COMPARE + correctness: >- + the answer identifies Johnson as receiving many votes against + + evaluator-unreliable: true + + +financebench_id_04103: + sector: Consumer Staples + + company: General Mills + period: 2019 + doc-type: 10k + doc: GENERALMILLS_2019_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: 'What is the FY2019 cash conversion cycle (CCC) for General Mills? CCC + is defined as: DIO + DSO - DPO. DIO is defined as: 365 * (average inventory between + FY2018 and FY2019) / (FY2019 COGS). DSO is defined as: 365 * (average accounts + receivable between FY2018 and FY2019) / (FY2019 Revenue). DPO is defined as: 365 + * (average accounts payable between FY2018 and FY2019) / (FY2019 COGS + change + in inventory between FY2018 and FY2019). Round your answer to two decimal places. + Address the question by using the line items and information shown within the + income statement and the balance sheet.' + + answer: '-3.7' + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Accounts payable. This metric was located in the 10K as a single line + item named: Accounts payable. + + + Metric 2: Accounts receivable, net. This metric was located in the 10K as a single + line item named: Receivables. + + + Metric 3: Cost of goods sold. This metric was located in the 10K as a single line + item named: Cost of sales. + + + Metric 4: Total revenue. This metric was located in the 10K as a single line item + named: Net sales. + + + Metric 5: Inventories. This metric was located in the 10K as a single line item + named: Inventories.' + page(s)-0based: 52 + page(s): 53,55 + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Cash Conversion Cycle (CCC) metric value + that is NEGATIVE and in the range from -5.00 to -2.00, based on supporting calculated + Days Inventory Oustanding (DIO), Days Sales Outstanding (DSO) and Days Payable Outstanding (DPO) metric values + answer-inadequate: true + + +financebench_id_03471: + sector: Consumer Staples + + company: General Mills + period: 2020 + doc-type: 10k + doc: GENERALMILLS_2020_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: By drawing conclusions from the information stated only in the statement + of financial position, what is General Mills's FY2020 working capital ratio? Define + working capital ratio as total current assets divided by total current liabilities. + Round your answer to two decimal places. + + answer: '0.68' + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Total current liabilities. This metric was located in the 10K as a single + line item named: Total current liabilities. + + + Metric 2: Total current assets. This metric was located in the 10K as a single + line item named: Total current assets.' + page(s)-0based: 49 + page(s): '50' + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Working Capital Ratio decimal value that is in the range from 0.6500 to 0.7000, + or, alternatively, a calculated percentage value that is in the range from 65.00% to 70.00% + (if the answer is a single number, assume that it is that calculated Working Capital Ratio metric value) + + +financebench_id_04854: + sector: Consumer Staples + + company: General Mills + period: 2020 + doc-type: 10k + doc: GENERALMILLS_2020_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: 'According to the information provided in the statement of cash flows, + what is the FY2020 free cash flow (FCF) for General Mills? FCF here is defined + as: (cash from operations - capex). Answer in USD millions.' + + answer: $3215.00 + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Cash from operations. This metric was located in the 10K as a single + line item named: Net cash provided by operating activities. + + + Metric 2: Capital expenditures. This metric was located in the 10K as a single + line item named: Purchases of land, buildings, and equipment.' + page(s)-0based: 51 + page(s): '52' + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Free Cash Flows (FCF) metric value that is equivalent to or approximately equal to + 3215.4, 3215.4 million, 3.2154 billion, + 3215, 3215 million, 3.215 billion, + 3200, 3200 million or 3.2 billion + (if the answer is a single number, assume that it is that calculated Free Cash Flows (FCF) metric value) + + evaluator-unreliable: true + + +financebench_id_10136: + sector: Consumer Staples + + company: General Mills + period: 2022 + doc-type: 10k + doc: GENERALMILLS_2022_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: 'We want to calculate a financial metric. Please help us compute it by + basing your answers off of the cash flow statement and the income statement. Here''s + the question: what is the FY2022 retention ratio (using total cash dividends paid + and net income attributable to shareholders) for General Mills? Round answer to + two decimal places.' + + answer: '0.54' + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Total cash dividends paid out. This metric was located in the 10K as + a single line item named: Dividends paid. + + + Metric 2: Net income. This metric was located in the 10K as a single line item + named: Net earnings attributable to General Mills.' + page(s)-0based: 44 + page(s): 45,49 + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Retention Ratio decimal value that is in the range from 0.5000 to 0.6000, + or, alternatively, a calculated percentage value that is in the range from 50.00% to 60.00% + (if the answer is a single number, assume that it is that calculated Retention Ratio metric value) + + +financebench_id_00956: + sector: Health Care + + company: Johnson & Johnson + period: 2022 + doc-type: 10k + doc: JOHNSON_JOHNSON_2022_10K + + question-type: domain-relevant + question-reasoning: Logical reasoning (based on numerical reasoning) + domain-question-num: dg05 + question: Are JnJ's FY2022 financials that of a high growth company? + + answer: No, JnJ's FY2022 financials are not of a high growth company as sales grew + by 1.3% in FY2022. + justification: '' + page(s)-0based: 27 + + category: 0-RETRIEVE + correctness: >- + the answer mentions low/slow Sales Revenue growth + + +financebench_id_00669: + sector: Health Care + + company: Johnson & Johnson + period: 2022 + doc-type: 10k + doc: JOHNSON_JOHNSON_2022_10K + + question-type: domain-relevant + question-reasoning: Logical reasoning (based on numerical reasoning) OR Numerical + reasoning OR Logical reasoning + domain-question-num: dg16 + question: What drove gross margin change as of FY2022 for JnJ? If gross margin is + not a useful metric for a company like this, then please state that and explain + why. + + answer: 'For FY22, JnJ had changes in gross margin due to: One-time COVID-19 vaccine + manufacturing exit related costs, Currency impacts in the Pharmaceutical segment, + Commodity inflation in the MedTech and Consumer Health segments, partially offset + by Supply chain benefits in the Consumer Health segment.' + justification: Gross margin change is equivalent to the increase in cost of products + sold as a percent to sales. + page(s)-0based: 33 + + category: 5-EXPLAIN-FACTORS + correctness: |- + the answer mentions at least 2 of following: + - one-time COVID-19 vaccine manufacturing exit related costs; + - currency impacts in the Pharmaceutical segment; + - commodity inflation in the MedTech and Consumer Health segments; and/or + - supply chain benefits in the Consumer Health segment + + evaluator-unreliable: true + + +financebench_id_00711: + sector: Health Care + + company: Johnson & Johnson + period: 2022 + doc-type: 10k + doc: JOHNSON_JOHNSON_2022_10K + + question-type: domain-relevant + question-reasoning: Numerical reasoning OR Logical reasoning + domain-question-num: dg25 + question: Roughly how many times has JnJ sold its inventory in FY2022? Calculate + inventory turnover ratio for FY2022; if conventional inventory management is not + meaningful for the company then state that and explain why. + + answer: JnJ sold its inventory 2.7 times in FY2022. + justification: Inventory turnover ratio = Cost of products sold/average inventories + = 31,089/((12,483+10,387)/2) = 2.7 + page(s)-0based: 45 + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Inventory Turnover Ratio decimal value that is in the range from 2.00 to 3.00 + (if the answer is a single number, assume that it is that calculated Inventory Turnover Ratio decimal value) + + evaluator-unreliable: true + + +financebench_id_00651: # TODO: retrieve growth rates + sector: Health Care + + company: Johnson & Johnson + period: 2022 + doc-type: Earnings + doc: JOHNSON_JOHNSON_2022Q4_EARNINGS + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: Is growth in JnJ's adjusted EPS expected to accelerate in FY2023? + + answer: No, rate of growth in adjusted EPS is expected to decelerate slightly from + 3.6% in FY2022 to 3.5% in FY2023. + justification: FY2023 adjusted EPS growth of 3.5% is slightly lower than FY2022 + adjusted EPS growth of 3.6%. + page(s)-0based: 0 + + category: 1-COMPARE + correctness: >- + the answer mentions 3.5% and 3.6%, + or, alternatively, concludes that growth is NOT expected to accelerate + + evaluator-unreliable: true + + +financebench_id_01484: + sector: Health Care + + company: Johnson & Johnson + period: 2022 + doc-type: Earnings + doc: JOHNSON_JOHNSON_2022Q4_EARNINGS + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: How did JnJ's US sales growth compare to international sales growth in + FY2022? + + answer: US sales increased 3.0% vs international sales decline of 0.6%. + justification: '' + page(s)-0based: 1 + + category: 1-COMPARE + correctness: >- + the answer mentions US sales increased and international sales decreased + + evaluator-unreliable: true + + +financebench_id_01488: + sector: Health Care + + company: Johnson & Johnson + period: 2023 + doc-type: 8k + doc: JOHNSON_JOHNSON_2023_8K_dated-2023-08-30 + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: Which business segment of JnJ will be treated as a discontinued operation + from August 30, 2023 onward? + + answer: The Consumer Health business segment will be treated as a discontinued operation + from August 30, 2023 onward. + justification: '' + page(s)-0based: 3 + + category: 0-RETRIEVE + correctness: >- + the answer identifies Consumer Health as discontinued + + +financebench_id_01490: + sector: Health Care + + company: Johnson & Johnson + period: 2023 + doc-type: 8k + doc: JOHNSON_JOHNSON_2023_8K_dated-2023-08-30 + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: What is the amount of the gain accruing to JnJ as a result of the separation + of its Consumer Health business segment, as of August 30, 2023? + + answer: JnJ will make a gain of approximately $20 billion from the separation of + its Consumer Health business segment. + justification: '' + page(s)-0based: 3 + + category: 0-RETRIEVE + correctness: >- + the answer mentions 20 billion + + +financebench_id_01491: + sector: Health Care + + company: Johnson & Johnson + period: 2023 + doc-type: 8k + doc: JOHNSON_JOHNSON_2023_8K_dated-2023-08-30 + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: What is the amount of the cash proceeds that JnJ realised from the separation + of Kenvue (formerly Consumer Health business segment), as of August 30, 2023? + + answer: JnJ realised $13.2 billion in cash proceeds from the separation of Kenvue. + justification: '' + page(s)-0based: 3 + + category: 0-RETRIEVE + correctness: >- + the answer mentions 13.2 billion, or, alternatively, approximately 13 billion + + +financebench_id_01487: + sector: Health Care + + company: Johnson & Johnson + period: 2023 + doc-type: Earnings + doc: JOHNSON_JOHNSON_2023Q2_EARNINGS + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: Did JnJ's net earnings as a percent of sales increase in Q2 of FY2023 + compared to Q2 of FY2022? + + answer: Yes, net earnings as a percent of sales increased from 20% in Q2 of FY2022 + to 20.1% in Q2 of FY2023. + justification: '' + page(s)-0based: 9 + + category: 1-COMPARE + correctness: >- + the answer mentions 20.0% (or 20%) and 20.1%, or, alternatively, mentions a slight increase + + +financebench_id_00299: + sector: Financials + + company: JPMorgan + period: 2021 + doc-type: 10q + doc: JPMORGAN_2021Q1_10Q + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: Which of JPM's business segments had the lowest net revenue in 2021 Q1? + + answer: Corporate. Its net revenue was -$473 million. + justification: 14,605 > 12,517 > 4,077 > 2,393 > -473 + page(s)-0based: 18 + page(s): '19' + + category: 1-COMPARE + correctness: >- + the answer identifies Corporate segment as having lowest Net Revenue + + +financebench_id_02119: + sector: Financials + + company: JPMorgan + period: 2021 + doc-type: 10q + doc: JPMORGAN_2021Q1_10Q + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: If JPM went bankrupted by the end by 2021 Q1 and liquidated all of its + assets to pay its shareholders, how much could each shareholder get? + + answer: They could receive $66.56 per share. + justification: '' + page(s)-0based: 5 + page(s): '6' + + category: 0-RETRIEVE + correctness: >- + the answer contains a quantity that is in the range from 60.00 to 70.00 + + evaluator-unreliable: true + + +financebench_id_00206: + sector: Financials + + company: JPMorgan + period: 2022 + doc-type: 10k + doc: JPMORGAN_2022_10K + + question-type: domain-relevant + question-reasoning: Logical reasoning (based on numerical reasoning) OR Logical + reasoning + domain-question-num: dg03 + question: Are JPM's gross margins historically consistent (not fluctuating more + than roughly 2% each year)? If gross margins are not a relevant metric for a company + like this, then please state that and explain why. + + answer: Since JPM is a financial institution, gross margin is not a relevant metric. + justification: '' + page(s)-0based: 2 + page(s): '3' + + category: 6-OTHER-ADVANCED + correctness: >- + the answer argues that Gross Margin is not a very relevant/useful metric for this business model and/or industry, + or, alternatively, that performance in this business model and/or industry is usually not judged through Gross Margin + + evaluator-unreliable: true + + +financebench_id_00394: + sector: Financials + + company: JPMorgan + period: 2022 + doc-type: 10q + doc: JPMORGAN_2022Q2_10Q + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: In 2022 Q2, which of JPM's business segments had the highest net income? + + answer: Corporate & Investment Bank. Its net income was $3725 million. + justification: 3725 > 3100 > 1004 > 994 > -174 + page(s)-0based: 20 + page(s): '21' + + category: 1-COMPARE + correctness: >- + the answer identifies Corporate & Investment Bank segment as having higest Net Income + + +financebench_id_02049: + sector: Financials + + company: JPMorgan + period: 2023 + doc-type: 10q + doc: JPMORGAN_2023Q2_10Q + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: Looking at VaR, did the risk that JPM faced in the second fiscal quarter + of 2023 decrease compared to the same period in the prior year? + + answer: Yes. It decreased. + justification: '' + page(s)-0based: 84 + page(s): '85' + + category: 0-RETRIEVE + correctness: >- + the answer affirms that VaR decreased + + +financebench_id_10499: + sector: Consumer Staples + + company: Kraft Heinz + period: 2019 + doc-type: 10k + doc: KRAFTHEINZ_2019_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: 'What is Kraft Heinz''s FY2019 inventory turnover ratio? Inventory turnover + ratio is defined as: (FY2019 COGS) / (average inventory between FY2018 and FY2019). + Round your answer to two decimal places. Please base your judgments on the information + provided primarily in the balance sheet and the P&L statement.' + + answer: '6.25' + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Cost of goods sold. This metric was located in the 10K as a single line + item named: Cost of products sold. + + + Metric 2: Inventories. This metric was located in the 10K as a single line item + named: Inventories.' + page(s)-0based: 49 + page(s): 50,52 + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Inventory Turnover Ratio decimal value that is in the range from 6.00 to 6.50 + (if the answer is a single number, assume that it is that calculated Inventory Turnover Ratio decimal value) + + +financebench_id_04412: + sector: Industrials + + company: Lockheed Martin + period: 2020 + doc-type: 10k + doc: LOCKHEEDMARTIN_2020_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: 'We need to calculate a reasonable approximation (or exact number if possible) + of a financial metric. Basing your judgment by information plainly provided in + the balance sheet and the P&L statement, what is Lockheed Martin''s FY2020 asset + turnover ratio? Asset turnover ratio is defined as: FY2020 revenue / (average + total assets between FY2019 and FY2020). Round your answer to two decimal places.' + + answer: '1.33' + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Total revenue. This metric was located in the 10K as a single line item + named: Total net sales. + + + Metric 2: Total assets. This metric was located in the 10K as a single line item + named: Total assets.' + page(s)-0based: 66 + page(s): 67,69 + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Asset Turnover Ratio decimal value that is in the range from 1.30 to 1.40 + (if the answer is a single number, assume that it is that calculated Asset Turnover Ratio decimal value) + + +financebench_id_03031: + sector: Industrials + + company: Lockheed Martin + period: 2021 + doc-type: 10k + doc: LOCKHEEDMARTIN_2021_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: What is Lockheed Martin's FY2021 net working capital? Define net working + capital as total current assets less total current liabilities. Answer in USD + millions. Respond to the question by assuming the perspective of an investment + analyst who can only use the details shown within the balance sheet. + + answer: $5818.00 + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Total current liabilities. This metric was located in the 10K as a single + line item named: Total current liabilities. + + + Metric 2: Total current assets. This metric was located in the 10K as a single + line item named: Total current assets.' + page(s)-0based: 67 + page(s): '68' + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Net Working Capital metric value that is equivalent to or approximately equal to + 5818, 5818 million, 5.818 billion, + 5800, 5800 million or 5.8 billion + (if the answer is a single number, assume that it is that calculated Net Working Capital metric value) + + +financebench_id_03718: + sector: Industrials + + company: Lockheed Martin + period: 2022 + doc-type: 10k + doc: LOCKHEEDMARTIN_2022_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: What is Lockheed Martin's 2 year total revenue CAGR from FY2020 to FY2022 + (in units of percents and round to one decimal place)? Provide a response to the + question by primarily using the statement of income. + + answer: 0.4% + justification: 'The metric total revenue was directly extracted from the company + 10K. The line item name, as seen in the 10K, was: Total net sales. The final step + was to execute the desired CAGR calculation on total revenue.' + page(s)-0based: 62 + page(s): '63' + + category: 2-CALC-CHANGE + correctness: >- + the answer contains a calculated CAGR percentage value that is in the range from 0.400% to 0.500% + (if the answer is a single number, assume that it is that calculated CAGR percentage value) + + evaluator-unreliable: true + + +financebench_id_04171: + sector: Consumer Discretionary + + company: MGM Resorts + period: 2018 + doc-type: 10k + doc: MGMRESORTS_2018_10K + + question-type: metrics-generated + question-reasoning: Information extraction + domain-question-num: '' + question: Basing your judgments off of the balance sheet, what is the year end FY2018 + amount of accounts payable for MGM Resorts? Answer in USD millions. + + answer: $303.00 + justification: 'The metric accounts payable was directly extracted from the company + 10K. The line item name, as seen in the 10K, was: Accounts payable.' + page(s)-0based: 56 + page(s): '57' + + category: 0-RETRIEVE + correctness: >- + the answer contains a quantity that is equivalent to or approximately equal to + 302.6, 302.6 million, 0.3026 billion, + 303, 303 million, 0.303 billion, + 300, 300 million or 0.3 billion + + evaluator-unreliable: true + + +financebench_id_03849: + sector: Consumer Discretionary + + company: MGM Resorts + period: 2020 + doc-type: 10k + doc: MGMRESORTS_2020_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: What is the FY2018 - FY2020 3 year average of capex as a % of revenue + for MGM Resorts? Answer in units of percents and round to one decimal place. Please + utilize information provided primarily within the statement of cash flows and + the statement of income. + + answer: 7.9% + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Capital expenditures. This metric was located in the 10K as a single + line item named: Capital expenditures, net of construction payable. + + + Metric 2: Total revenue. This metric was located in the 10K as a single line item + named: [blank line item referring to total revenue].' + page(s)-0based: 64 + page(s): 65,67 + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated metric percentage value that is in the range from 7.50% to 8.50%, + or, alternatively, a calculated decimal value that is in the range from 0.0750 to 0.0850 + (if the answer is a single number, assume that it is that calculated metric value) + + +financebench_id_01254: + sector: Consumer Discretionary + + company: MGM Resorts + period: 2022 + doc-type: 10k + doc: MGMRESORTS_2022_10K + + question-type: domain-relevant + question-reasoning: Information extraction + domain-question-num: dg18 + question: Has MGM Resorts paid dividends to common shareholders in FY2022? + + answer: Yes. MGM maintained 0.01$ per share annual dividend through out FY 2022. + justification: '' + page(s)-0based: 31 + page(s): '32' + + category: 0-RETRIEVE + correctness: >- + the answer affirms that dividends have been / were paid + + evaluator-unreliable: true + + +financebench_id_00382: + sector: Consumer Discretionary + + company: MGM Resorts + period: 2022 + doc-type: Earnings + doc: MGMRESORTS_2022Q4_EARNINGS + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: Which region had the Highest EBITDAR Contribution for MGM during FY2022? + + answer: Las Vegas resorts contributed ~90% of company level EBITDAR during FY2022. + justification: 3142308/3497254 + page(s)-0based: 12 + page(s): '13' + + category: 1-COMPARE + correctness: >- + the answer identifies Las Vegas resorts as having highest EBITDAR + + +financebench_id_01911: + sector: Consumer Discretionary + + company: MGM Resorts + period: 2022 + doc-type: Earnings + doc: MGMRESORTS_2022Q4_EARNINGS + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: What was MGM's interest coverage ratio using FY2022 Adjusted EBIT as the + numerator and annual Interest Expense as the denominator? + + answer: As adjusted EBIT is negative, coverage ratio is zero + justification: '' + page(s)-0based: 13 + page(s): '14' + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Interest Coverage Ratio metric value, + or, alternatively, concludes that Interest Coverage Ratio is zero + answer-inadequate: true + + +financebench_id_01912: + sector: Consumer Discretionary + + company: MGM Resorts + period: 2022 + doc-type: Earnings + doc: MGMRESORTS_2022Q4_EARNINGS + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: Which region had the worst topline performance for MGM during FY2022? + + answer: MGM China experienced the worst topline performance amongst the other regions + presented. Its revenue declined 44% in FY2022 whereas the other regions presented + increased their revenues. + justification: '' + page(s)-0based: 2 + page(s): 3,4,4 + + category: 1-COMPARE + correctness: >- + the answer identifies MGM China as having worst top-line Revenue performance + + +financebench_id_00407: + sector: Consumer Discretionary + + company: MGM Resorts + period: 2023 + doc-type: 10q + doc: MGMRESORTS_2023Q2_10Q + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: Which type of debt received the largest investment among the short term + investments for MGM in H1 FY2023? + + answer: the biggest short term investment is in corporate bonds (almost 82% of the + total investment) + justification: 416420/509921 + page(s)-0based: 10 + page(s): '11' + + category: 1-COMPARE + correctness: >- + the answer identifies corporate bonds as having received largest short-term investment + + +financebench_id_04700: + sector: Information Technology + + company: Microsoft + period: 2016 + doc-type: 10k + doc: MICROSOFT_2016_10K + + question-type: metrics-generated + question-reasoning: Information extraction + domain-question-num: '' + question: What is the FY2016 COGS for Microsoft? Please state answer in USD millions. + Provide a response to the question by primarily using the statement of income. + + answer: $32780.00 + justification: 'The metric cost of goods sold was directly extracted from the company + 10K. The line item name, as seen in the 10K, was: Total cost of revenue.' + page(s)-0based: 51 + page(s): '52' + + category: 0-RETRIEVE + correctness: >- + the answer contains a quantity that is equivalent to or approximately equal to + 32780, 32780 million, 32.78 billion, + 32800, 32800 million, 32.8 billion + 33000, 33000 million or 33 billion + + +financebench_id_00552: + sector: Information Technology + + company: Microsoft + period: 2023 + doc-type: 10k + doc: MICROSOFT_2023_10K + + question-type: domain-relevant + question-reasoning: Numerical reasoning + domain-question-num: dg22 + question: Has Microsoft increased its debt on balance sheet between FY2023 and the + FY2022 period? + answer: No. Microsoft decreased its debt by $2.5bn in FY 2023 vs FY 2022. + justification: 'Current portion of long-term debt+Long-term debt + + 5247+41990 + + 2749+47032' + page(s)-0based: 59 + page(s): '60' + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains calculated Total Debt values for 2022 and 2023, and concludes that Total Debt decreased + answer-inadequate: true + + +financebench_id_04458: + sector: Communication Services + + company: Netflix + period: 2015 + doc-type: 10k + doc: NETFLIX_2015_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: 'We want to calculate a financial metric. Please help us compute it by + basing your answers off of the statement of income and the statement of cash flows. + Here''s the question: what is the FY2015 unadjusted EBITDA % margin for Netflix? + Calculate unadjusted EBITDA using unadjusted operating income and D&A (from cash + flow statement).' + + answer: 5.4% + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Depreciation and amortization. This metric was located in the 10K as + a single line item named: Depreciation and amortization of property, equipment + and intangibles. + + + Metric 2: Unadjusted operating income. This metric was located in the 10K as a + single line item named: Operating income. + + + Metric 3: Total revenue. This metric was located in the 10K as a single line item + named: Revenues.' + page(s)-0based: 39 + page(s): 40,42 + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated EBITDA Margin percentage value that is in the range from 5.00% to 5.50%, + or, alternatively, a calculated decimal value that is in the range from 0.0500 to 0.0550, + assuming that EBITDA = "Operating Income" + "Depreciation & Amortization of Property, Equipment & Intangibles" + (if the answer is a single number, assume that it is that calculated EBITDA Margin metric value) + + +financebench_id_03282: + sector: Communication Services + + company: Netflix + period: 2017 + doc-type: 10k + doc: NETFLIX_2017_10K + + question-type: metrics-generated + question-reasoning: Information extraction + domain-question-num: '' + question: What is Netflix's year end FY2017 total current liabilities (in USD millions)? + Base your judgments on the information provided primarily in the balance sheet. + + answer: $5466.00 + justification: 'The metric total current liabilities was directly extracted from + the company 10K. The line item name, as seen in the 10K, was: Total current liabilities.' + page(s)-0based: 44 + page(s): '45' + + category: 0-RETRIEVE + correctness: >- + the answer contains a quantity that is equivalent to or approximately equal to + 5466.3, 5466.3 million, 5.4663 billion, + 5466, 5466 million, 5.466 billion, + 5500, 5500 million or 5.5 billion + + evaluator-unreliable: true + + +financebench_id_04302: + sector: Consumer Discretionary + + company: Nike + period: 2018 + doc-type: 10k + doc: NIKE_2018_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: We need to calculate a reasonable approximation (or exact number if possible) + of a financial metric. Basing your judgment by information plainly provided in + the statement of income, what is Nike's three year average of cost of goods sold + as a % of revenue from FY2016 to FY2018? Answer in units of percents and round + to one decimal place. + + answer: 55.1% + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Cost of goods sold. This metric was located in the 10K as a single line + item named: Cost of sales. + + + Metric 2: Total revenue. This metric was located in the 10K as a single line item + named: Revenues.' + page(s)-0based: 45 + page(s): '46' + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated metric percentage value that is in the range from 50.00% to 60.00%, + or, alternatively, a calculated decimal value that is in the range from 0.5000 to 0.6000 + (if the answer is a single number, assume that it is that calculated metric value) + + +financebench_id_03531: + sector: Consumer Discretionary + + company: Nike + period: 2019 + doc-type: 10k + doc: NIKE_2019_10K + + question-type: metrics-generated + question-reasoning: Information extraction + domain-question-num: '' + question: According to the details clearly outlined within the balance sheet, how + much total current assets did Nike have at the end of FY2019? Answer in USD millions. + + answer: $16525.00 + justification: 'The metric total current assets was directly extracted from the + company 10K. The line item name, as seen in the 10K, was: Total current assets.' + page(s)-0based: 53 + page(s): '54' + + category: 0-RETRIEVE + correctness: >- + the answer contains a quantity that is equivalent to or approximately equal to + 16525, 16525 million, 16.525 billion, + 16500, 16500 million or 16.5 billion + + +financebench_id_04080: + sector: Consumer Discretionary + + company: Nike + period: 2021 + doc-type: 10k + doc: NIKE_2021_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: 'When primarily referencing the income statement and the statement of + financial position, what is the FY2021 inventory turnover ratio for Nike? Inventory + turnover ratio is defined as: (FY2021 COGS) / (average inventory between FY2020 + and FY2021). Round your answer to two decimal places.' + + answer: '3.46' + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Cost of goods sold. This metric was located in the 10K as a single line + item named: Cost of sales. + + + Metric 2: Inventories. This metric was located in the 10K as a single line item + named: Inventories.' + page(s)-0based: 58 + page(s): 59,61 + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Inventory Turnover Ratio decimal value that is in the range from 3.00 to 4.00 + (if the answer is a single number, assume that it is that calculated Inventory Turnover Ratio decimal value) + + +financebench_id_01163: + sector: Consumer Discretionary + + company: Nike + period: 2023 + doc-type: 10k + doc: NIKE_2023_10K + + question-type: domain-relevant + question-reasoning: Numerical reasoning + domain-question-num: dg19 + question: Among operations, investing, and financing activities, which brought in + the most (or lost the least) cash flow for Nike in FY2023? + + answer: Among the three, cash flow from operations was the highest for Nike in FY2023. + justification: '' + page(s)-0based: 61 + page(s): '62' + + category: 1-COMPARE + correctness: >- + the answer identifies Operations / Operating Cash Flows as bringing in most cash + + +financebench_id_00080: + sector: Financials + + company: Paypal + period: 2022 + doc-type: 10k + doc: PAYPAL_2022_10K + + question-type: domain-relevant + question-reasoning: Numerical reasoning OR Logical reasoning + domain-question-num: dg24 + question: Does Paypal have positive working capital based on FY2022 data? If working + capital is not a useful or relevant metric for this company, then please state + that and explain why. + + answer: Yes. Paypal has a positive working capital of $ 1.6Bn as of FY2022 end. + justification: 'Accounts receivable, net+Loans and interest receivable, net of allowances + +Funds receivable and customer accounts+Prepaid expenses and other current assets-Accounts + payable-Funds payable and amounts due to customers-Accrued expenses and other + current liabilities -Income taxes payable + + 963+7431+36357+1898-126-40107-4055-813' + page(s)-0based: 60 + page(s): '61' + + category: 3-CALC-COMPLEX + correctness: >- + the answer affirms that Working Capital is/was positive, + proving so by a calculated Working Capital metric value that is positive + + +financebench_id_04980: + sector: Consumer Staples + + company: PepsiCo + period: 2021 + doc-type: 10k + doc: PEPSICO_2021_10K + + question-type: metrics-generated + question-reasoning: Information extraction + domain-question-num: '' + question: What is the FY2021 capital expenditure amount (in USD billions) for PepsiCo? + Respond to the question by assuming the perspective of an investment analyst who + can only use the details shown within the statement of cash flows. + + answer: $4.60 + justification: 'The metric capital expenditures was directly extracted from the + company 10K. The line item name, as seen in the 10K, was: Capital spending.' + page(s)-0based: 62 + page(s): '63' + + category: 0-RETRIEVE + correctness: >- + the answer contains a quantity that is equivalent to or approximately equal to + 4.625, 4.625 billion, 4625 million, + 4.6, 4.6 billion or 4600 million + + +financebench_id_01009: + sector: Consumer Staples + + company: PepsiCo + period: 2022 + doc-type: 10k + doc: PEPSICO_2022_10K + + question-type: domain-relevant + question-reasoning: Information extraction + domain-question-num: dg08 + question: What are the geographies that Pepsico primarily operates in as of FY2022? + + answer: 'As of FY2022, Pepsico primarily operates in the following geographies: + North America, Latin America, Europe, Africa, Middle East, South Asia, Asia Pacific, + Australia, New Zealand and China.' + justification: '' + page(s)-0based: 3 + page(s): 4, 5 + + category: 0-RETRIEVE + correctness: |- + the answer mentions at least 3 of following geographies: + - North America, which includes United States and Canada; + - Latin America (LatAm); + - Europe; + - Africa, Middle East and South Asia (AMESA); and + - Asia Pacific, Australia and New Zealand and China (APAC) + + +financebench_id_00735: + sector: Consumer Staples + + company: PepsiCo + period: 2022 + doc-type: 10k + doc: PEPSICO_2022_10K + + question-type: domain-relevant + question-reasoning: Information extraction + domain-question-num: dg11 + question: Has Pepsico reported any materially important ongoing legal battles from + FY2022 and FY2021? + + answer: No, Pepsico is not involved in material legal battles. + justification: Management believes the final outcome of legal proceedings will not + have a material adverse outcome. + page(s)-0based: 25 + page(s): '26' + + category: 0-RETRIEVE + correctness: >- + the answer says that there have NOT been material lawsuits / legal battles, + or, alternatively, that lawsuits / legal battles are unlikely to have materially adverse outcomes + + evaluator-unreliable: true + + +financebench_id_01328: + sector: Consumer Staples + + company: PepsiCo + period: 2022 + doc-type: 10k + doc: PEPSICO_2022_10K + + question-type: domain-relevant + question-reasoning: Information extraction + domain-question-num: dg21 + question: What is the quantity of restructuring costs directly outlined in Pepsico's + income statements for FY2022? If restructuring costs are not explicitly outlined + then state 0. + + answer: Pepsico's restructuring costs in FY2022 amounted to $411 million . + justification: '' + page(s)-0based: 77 + page(s): '78' + + category: 0-RETRIEVE + correctness: |- + the answer either: + - mentions a quantity that is equivalent to or approximately equal to 411 million; or + - states 0, zero, and/or that restructuring costs are not explicitly reported + answer-inadequate: true + + +financebench_id_03620: + sector: Consumer Staples + + company: PepsiCo + period: 2022 + doc-type: 10k + doc: PEPSICO_2022_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: What is the FY2022 unadjusted EBITDA less capex for PepsiCo? Define unadjusted + EBITDA as unadjusted operating income + depreciation and amortization [from cash + flow statement]. Answer in USD millions. Respond to the question by assuming the + perspective of an investment analyst who can only use the details shown within + the statement of cash flows and the income statement. + + answer: $9068.00 + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Depreciation and amortization. This metric was located in the 10K as + a single line item named: Depreciation and amortization. + + + Metric 2: Unadjusted operating income. This metric was located in the 10K as a + single line item named: Operating Profit. + + + Metric 3: Capital expenditures. This metric was located in the 10K as a single + line item named: Capital spending.' + page(s)-0based: 61 + page(s): 62,64 + + category: 3-CALC-COMPLEX + correctness: |- + the answer contains a calculated metric value that is either: + - in the range from 8500 to 9500; + - in the range from 8500 million to 9500 million; + - in the range from 8.5 billion to 9.5 billion; or + - stated as approximately 9000 million or 9 billion + (if the answer is a single number, assume that it is that calculated metric value) + + evaluator-unreliable: true + + +financebench_id_04481: + sector: Consumer Staples + + company: PepsiCo + period: 2022 + doc-type: 10k + doc: PEPSICO_2022_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: What is the FY2022 unadjusted EBITDA % margin for PepsiCo? Calculate unadjusted + EBITDA using unadjusted operating income and D&A (from cash flow statement). Give + a response to the question by relying on the details shown in the statement of + cash flows and the P&L statement. + + answer: 16.5% + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Depreciation and amortization. This metric was located in the 10K as + a single line item named: Depreciation and amortization. + + + Metric 2: Unadjusted operating income. This metric was located in the 10K as a + single line item named: Operating Profit. + + + Metric 3: Total revenue. This metric was located in the 10K as a single line item + named: Net Revenue.' + page(s)-0based: 61 + page(s): 62,64 + + category: 3-CALC-COMPLEX + correctness: |- + the answer contains a calculated EBITDA Margin percentage value that is in the range from 16.00% to 17.00%, + or, alternatively, a calculated decimal value that is in the range from 0.1600 to 0.1700 + (if the answer is a single number, assume that it is that calculated EBITDA Margin metric value) + + +financebench_id_01482: + sector: Consumer Staples + + company: PepsiCo + period: 2023 + doc-type: 8k + doc: PEPSICO_2023_8K_dated-2023-05-05 + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: At the Pepsico AGM held on May 3, 2023, what was the outcome of the shareholder + vote on the shareholder proposal for a congruency report by Pepsico on net-zero + emissions policies? + + answer: The shareholder proposal for a congruency report by Pepsico on net-zero + emissions policies was defeated. + justification: '' + page(s)-0based: 3 + page(s): '4' + + category: 1-COMPARE + correctness: >- + the answer says proposal related to Net-Zero Emissions was defeated / not successful + + +financebench_id_00705: + sector: Consumer Staples + + company: PepsiCo + period: 2023 + doc-type: 8k + doc: PEPSICO_2023_8K_dated-2023-05-30 + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: By how much did Pepsico increase its unsecured five year revolving credit + agreement on May 26, 2023? + + answer: $400,000,000 increase. + justification: Increase in five year unsecured revolving credit agreement = May + 26, 2023, five year unsecured revolving credit agreement amount of $4,200,000,000 + - May 27, 2022, five year unsecured revolving credit agreement amount of $3,800,000,000 + = $400,000,000 + page(s)-0based: 1 + page(s): '2' + + category: 2-CALC-CHANGE + correctness: >- + the answer contains a calculated change quantity that is equivalent to or approximately equal to + 400,000,000, 400 million or 0.4 billion + (if the answer is a single number, assume that it is that calculated change amount) + + +financebench_id_00882: + sector: Consumer Staples + + company: PepsiCo + period: 2023 + doc-type: 8k + doc: PEPSICO_2023_8K_dated-2023-05-30 + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: As of May 26, 2023, what is the total amount Pepsico may borrow under + its unsecured revolving credit agreements? + + answer: Total amount Pepsico may borrow under unsecured revolving credit agreements + = $8,400,000,000. + justification: Total amount that may be borrowed under unsecured revolving credit + agreements = 2023, 364 day unsecured revolving credit agreement amount of $4,200,000,000 + + 2023, five year unsecured revolving credit agreement amount of $4,200,000,000 + = $8,400,000,000. + page(s)-0based: 1 + page(s): '2' + + category: 3-CALC-COMPLEX + correctness: |- + the answer either (or both): + - mentions two separate quantities each equal to 4,200,000,000, 4200 million or 4.2 billion; and/or + - contains a calculated total quantity that is greater than or equal to + 8,400,000,000, 8400 million or 8.4 billion + (if the answer is a single number, assume that it is that latter calculated total amount) + + evaluator-unreliable: true + + +financebench_id_01474: + sector: Consumer Staples + + company: PepsiCo + period: 2023 + doc-type: Earnings + doc: PEPSICO_2023Q1_EARNINGS + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: As of FY2023Q1, why did Pepsico raise full year guidance for FY2023? + + answer: Pepsico experienced a strong start to FY2023. + justification: '' + page(s)-0based: 0 + page(s): '1' + + category: 0-RETRIEVE + correctness: >- + the answer mentions strong business performance + + +financebench_id_01476: + sector: Consumer Staples + + company: PepsiCo + period: 2023 + doc-type: Earnings + doc: PEPSICO_2023Q1_EARNINGS + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: As of FY2023Q1, by how many percentage points did Pepsico raise full year + guidance in respect of core constant currency EPS growth? + + answer: Pepsico raised full year guidance in respect of core constant currency EPS + growth by 1 percentage point. + justification: '' + page(s)-0based: 0 + page(s): '1' + + category: 2-CALC-CHANGE + correctness: >- + the answer mentions growth guidance raised from 8% to 9%, + and/or growth guidance raised by 1 percentage point or 1% + + evaluator-unreliable: true + + +financebench_id_00302: + sector: Health Care + + company: Pfizer + period: 2021 + doc-type: 10k + doc: PFIZER_2021_10K + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: Did Pfizer grow its PPNE between FY20 and FY21? + + answer: Yes, change in PPNE was positive year over year + justification: 14882 - 13745 > 0 + page(s)-0based: 58 + page(s): '59' + + category: 1-COMPARE + correctness: >- + the answer concludes that Property, Plant & Equipment (PP&E or PPNE) increased + + evaluator-unreliable: true + + +financebench_id_00702: + sector: Health Care + + company: Pfizer + period: 2021 + doc-type: 10k + doc: PFIZER_2021_10K + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: Were there any potential events that are not in Pfizer's standard business + operations that substantially increased net income in 2019? + + answer: Yes, the gain on completion of Consumer Healthcare JV Transaction + justification: Income statement shows the gain on completion of Consumer Healthcare + JV transaction occured in FY19. In FY21, this event did not affect the net income + at all due to the seemingly one time nature of the line item + page(s)-0based: 56 + page(s): '57' + + category: 5-EXPLAIN-FACTORS + correctness: >- + the answer mentions Consumer Healthcare JV transaction + + +financebench_id_02416: # note: Therachon is mentioned on separate following page + sector: Health Care + + company: Pfizer + period: 2021 + doc-type: 10k + doc: PFIZER_2021_10K + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: What are three main companies acquired by Pfizer mentioned in this 10K + report? + + answer: Trillium, Array, and Therachon + justification: '' + page(s)-0based: 69 + page(s): 70, 71 + + category: 0-RETRIEVE + correctness: >- + the answer mentions Trillium and Array + + +financebench_id_00283: + sector: Health Care + + company: Pfizer + period: 2023 + doc-type: 10q + doc: Pfizer_2023Q2_10Q + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: How much does Pfizer expect to pay to spin off Upjohn in the future in + USD million? + + answer: '77.78' + justification: '10% cost is remaining amount in the future. Calculation: 700/9 is + 10% of the cost remaining' + page(s)-0based: 40 + page(s): '41' + + category: 6-OTHER-ADVANCED + correctness: >- + the answer mentions 700 million and 90% + + evaluator-unreliable: true + + +financebench_id_00724: + sector: Health Care + + company: Pfizer + period: 2023 + doc-type: 10q + doc: Pfizer_2023Q2_10Q + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: For Pfizer, which geographic region had the biggest drop in Q22023 year + over year revenues (on a percentage basis)? + + answer: Developed Rest of the World + justification: It's plainly stated in table format the year over year revenue changes + for each of the regions + page(s)-0based: 37 + page(s): '38' + + category: 1-COMPARE + correctness: >- + the answer identifies Developed Rest of World as having worst percentage/relative decline + + +financebench_id_02419: # tricky: Upjohn spin-off started in 2020 but would complete in 2023 + sector: Health Care + + company: Pfizer + period: 2023 + doc-type: 10q + doc: Pfizer_2023Q2_10Q + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: As of Q2'2023, is Pfizer spinning off any large business segments? + + answer: Yes, it's spinning off Upjohn. + justification: '' + page(s)-0based: 40 + page(s): '41' + + category: 0-RETRIEVE + correctness: >- + the answer mentions Upjohn + + evaluator-unreliable: true + + +financebench_id_00746: + sector: Consumer Discretionary + + company: Ulta Beauty + period: 2023 + doc-type: 10k + doc: ULTABEAUTY_2023_10K + + question-type: domain-relevant + question-reasoning: Information extraction + domain-question-num: dg04 + question: Which debt securities are registered to trade on a national securities + exchange under Ulta Beauty's name as of FY2023? + + answer: There are none + justification: No debt securities listed under securities registered pursuant to + Section 12(b) of the Act. + page(s)-0based: 0 + page(s): '1' + + category: 0-RETRIEVE + correctness: >- + the answer concludes that there are no debt securities traded, + or, alternatively, that no such debt securities are explicitly reported + + +financebench_id_00521: + sector: Consumer Discretionary + + company: Ulta Beauty + period: 2023 + doc-type: 10k + doc: ULTABEAUTY_2023_10K + + question-type: domain-relevant + question-reasoning: Information extraction + domain-question-num: dg10 + question: What are major acquisitions that Ulta Beauty has done in FY2023 and FY2022? + + answer: Ulta Beauty did not make any acquisitions in FY2023 and FY2022. + justification: Consolidated statement of cash flows reflects - for Acquisitions, + net of cash acquired in FY2023 and FY2022. + page(s)-0based: 56 + page(s): '57' + + category: 0-RETRIEVE + correctness: >- + the answer concludes that there are no major acquisitions, + or, alternatively, that no such major acquisitions are explicitly reported + + +financebench_id_00601: + sector: Consumer Discretionary + + company: Ulta Beauty + period: 2023 + doc-type: Earnings + doc: ULTABEAUTY_2023Q4_EARNINGS + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: What drove the reduction in SG&A expense as a percent of net sales in + FY2023? + + answer: Lower marketing expenses and leverage of incentive compensation due to higher + sales. The answer here assumes FY2023 refers to the 12 months ended on January + 28, 2023 (although the company refers to this period as its fiscal 2022. + justification: Fiscal 2022 = FY2023. Fiscal 2021 = FY2022. + page(s)-0based: 1 + page(s): '2' + + category: 0-RETRIEVE + correctness: >- + the answer mentions marketing expenses and incentive compensation + answer-inadequate: true + + +financebench_id_00603: + sector: Consumer Discretionary + + company: Ulta Beauty + period: 2023 + doc-type: Earnings + doc: ULTABEAUTY_2023Q4_EARNINGS + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: What drove the increase in Ulta Beauty's merchandise inventories balance + at end of FY2023? + + answer: Increase in Merchandise inventories balance was driven by the opening of + 47 new stores. The answer here assumes FY2023 refers to the 12 months ended on + January 28, 2023 (although the company refers to this period as its fiscal 2022. + justification: Fiscal 2022 = FY2023. Fiscal 2021 = FY2022. + page(s)-0based: 2 + page(s): '2' + + category: 0-RETRIEVE + correctness: >- + the answer mentions new stores + + +financebench_id_00605: + sector: Consumer Discretionary + + company: Ulta Beauty + period: 2023 + doc-type: Earnings + doc: ULTABEAUTY_2023Q4_EARNINGS + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: What percent of Ulta Beauty's total spend on stock repurchases for FY + 2023 occurred in Q4 of FY2023? + + answer: 36%. The answer here assumes FY2023 refers to the 12 months ended on January + 28, 2023 (although the company refers to this period as its fiscal 2022. + justification: Fiscal 2022 = FY2023. Fiscal 2021 = FY2022. Percent spent in Q4 of + FY2023 = Amount spent in Q4 of FY2023/Total amount spent in FY2023*100 =$328.1 + million /$900 million * 100 = 36% + page(s)-0based: 2 + page(s): '3' + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated percentage value that is in the range from 30% to 40% + (if the answer is a single number, assume that it is that calculated percentage value) + + +financebench_id_00606: # tricky: highly implicit wordings + sector: Consumer Discretionary + + company: Ulta Beauty + period: 2023 + doc-type: Earnings + doc: ULTABEAUTY_2023Q4_EARNINGS + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: Did Ulta Beauty's wages expense as a percent of net sales increase or + decrease in FY2023? + + answer: Wages expense as a percent of net sales increased in FY2023. The answer + here assumes FY2023 refers to the 12 months ended on January 28, 2023 (although + the company refers to this period as its fiscal 2022. + justification: Fiscal 2022 = FY2023. Fiscal 2021 = FY2022. Store payroll and benefits + = wages. Store payroll and benefits offsets reduction in SG&A percent of net sales + in FY2023. + page(s)-0based: 1 + page(s): '2' + + category: 6-OTHER-ADVANCED + correctness: >- + the answer concludes that Wages as percent of Net Sales increased + + +financebench_id_00859: + sector: Communication Services + + company: Verizon + period: 2021 + doc-type: 10k + doc: VERIZON_2021_10K + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: Among all of the derivative instruments that Verizon used to manage the + exposure to fluctuations of foreign currencies exchange rates or interest rates, + which one had the highest notional value in FY 2021? + + answer: Cross currency swaps. Its notional value was $32,502 million. + justification: The derivative instruments used to mangae the exposure were interest + rate swaps, cross currency swaps, forward starting interest rate swaps, and foreign + exchange forwards. 32502 > 19779 > 1000 > 932 + page(s)-0based: 84 + page(s): '85' + + category: 1-COMPARE + correctness: >- + the answer identifies Cross Currency Swaps as having highest notional value + + +financebench_id_02024: + sector: Communication Services + + company: Verizon + period: 2021 + doc-type: 10k + doc: VERIZON_2021_10K + + question-type: novel-generated + question-reasoning: '' + domain-question-num: '' + question: As of FY 2021, how much did Verizon expect to pay for its retirees in + 2024? + + answer: The estimated pension benefits were $1097 million, and the estimated health + care and life insurance benefits were $862 million. + justification: '' + page(s)-0based: 62 + page(s): 63, 94 + + category: 0-RETRIEVE + correctness: |- + the answer mentions at least 1 of following: + - amount of 1,097 million, or 1.1 billion, or approximately equivalent amount (explicitly or implicitly for "Pension (Benefits)"); + - amount of 862 million, or approximately equivalent amount (explicitly or implicitly for "Health Care & Life (Insurance)"; or + - total amount of 1,959 million, or 1.96 billion, or 2.0 billion, or an approximately equivalent amount + + +financebench_id_00216: + sector: Communication Services + + company: Verizon + period: 2022 + doc-type: 10k + doc: VERIZON_2022_10K + + question-type: domain-relevant + question-reasoning: Logical reasoning (based on numerical reasoning) OR Logical + reasoning + domain-question-num: dg01 + question: Does Verizon have a reasonably healthy liquidity profile based on its + quick ratio for FY 2022? If the quick ratio is not relevant to measure liquidity, + please state that and explain why. + + answer: No. The quick ratio was approximately 0.54 for Verizon. It indicated that + Verizon does not have a healthy liquidity profile. + justification: Quick ratio = (current assets - inventories - prepaid expenses) / + current liabilities = (37857 - 2388 - 8358) / 50171 = 0.5403719 + page(s)-0based: 55 + page(s): '56' + + category: 4-CALC-AND-JUDGE + correctness: >- + the answer contains a calculated Quick Ratio decimal value that is in the range from 0.40 to 0.80, + or, alternatively, a calculated percentage value that is in the range from 40% to 80% + + +financebench_id_00215: + sector: Communication Services + + company: Verizon + period: 2022 + doc-type: 10k + doc: VERIZON_2022_10K + + question-type: domain-relevant + question-reasoning: Logical reasoning (based on numerical reasoning) + domain-question-num: dg06 + question: Is Verizon a capital intensive business based on FY 2022 data? + + answer: Yes. Verizon's capital intensity ratio was approximately 2.774729. This + means that it took approximately $2.77 of assets to generate $1 of revenue and + thus, Verizon can be considered capital intensive. + justification: capital intensity ratio = total asset / revenue = 379680/ 136835 + = 2.774729, which is relatively high + page(s)-0based: 55 + page(s): 56, 23 + + category: 4-CALC-AND-JUDGE + correctness: >- + the answer opines that Verizon's business is capital-intensive, and justifies such opinion with a calculated ratio + + evaluator-unreliable: true + + +financebench_id_00566: + sector: Communication Services + + company: Verizon + period: 2022 + doc-type: 10k + doc: VERIZON_2022_10K + + question-type: domain-relevant + question-reasoning: Numerical reasoning + domain-question-num: dg22 + question: Has Verizon increased its debt on balance sheet between 2022 and the 2021 + fiscal period? + + answer: No. Verizon's debt decreased by $229 million. + justification: debt change = debt in 2022 - debt in 2021 = 150639 - 150868 = -229 + page(s)-0based: 76 + page(s): '77' + + category: 1-COMPARE + correctness: >- + the answer concludes that debt decreased + + evaluator-unreliable: true + + +financebench_id_06247: + sector: Consumer Staples + + company: Walmart + period: 2018 + doc-type: 10k + doc: WALMART_2018_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: 'What is FY2018 days payable outstanding (DPO) for Walmart? DPO is defined + as: 365 * (average accounts payable between FY2017 and FY2018) / (FY2018 COGS + + change in inventory between FY2017 and FY2018). Round your answer to two decimal + places. Please base your judgments on the information provided primarily in the + statement of financial position and the P&L statement.' + + answer: '42.69' + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Accounts payable. This metric was located in the 10K as a single line + item named: Accounts payable. + + + Metric 2: Inventories. This metric was located in the 10K as a single line item + named: Inventories. + + + Metric 3: Cost of goods sold. This metric was located in the 10K as a single line + item named: Cost of sales.' + page(s)-0based: 56 + page(s): 57,59 + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated Days Payable Outstanding (DPO) decimal value that is in the range from 35.00 to 50.00 + (if the answer is a single number, assume that it is that calculated Days Payable Outstanding (DPO) decimal value) + + +financebench_id_04784: + sector: Consumer Staples + + company: Walmart + period: 2019 + doc-type: 10k + doc: WALMART_2019_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: Based on the information provided primarily in the statement of income, + what is the FY2018 - FY2019 change in unadjusted operating income % margin for + Walmart? Answer in units of percents and round to one decimal place. + + answer: 0.2% + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Unadjusted operating income. This metric was located in the 10K as a + single line item named: Operating income. + + + Metric 2: Total revenue. This metric was located in the 10K as a single line item + named: Total revenues.' + page(s)-0based: 47 + page(s): '48' + + category: 3-CALC-COMPLEX + correctness: |- + the answer contains either: + - calculated Operating Income Margin percentage values for 2018 and 2019, + and their difference, which is a percentage value less than 0.5% in magnitude; or + - calculated Operating Income Margin decimal values for 2028 and 2019, + and their difference, which is a decimal value less than 0.005 in magnitude + answer-inadequate: true + + +financebench_id_06741: + sector: Consumer Staples + + company: Walmart + period: 2020 + doc-type: 10k + doc: WALMART_2020_10K + + question-type: metrics-generated + question-reasoning: Numerical reasoning + domain-question-num: '' + question: What is the FY2018 - FY2020 3 year average unadjusted EBITDA % margin + for Walmart? Define unadjusted EBITDA as unadjusted operating income + depreciation + and amortization from the cash flow statement. Answer in units of percents and + round to one decimal place. Calculate what was asked by utilizing the line items + clearly shown in the P&L statement and the cash flow statement. + + answer: 6.2% + justification: 'The metric in question was calculated using other simpler metrics. + The various simpler metrics (from the current and, if relevant, previous fiscal + year(s)) used were: + + + Metric 1: Depreciation and amortization. This metric was located in the 10K as + a single line item named: Depreciation and amortization. + + + Metric 2: Unadjusted operating income. This metric was located in the 10K as a + single line item named: Operating income. + + + Metric 3: Total revenue. This metric was located in the 10K as a single line item + named: Total revenues.' + page(s)-0based: 50 + page(s): 51,56 + + category: 3-CALC-COMPLEX + correctness: >- + the answer contains a calculated EBITDA Margin percentage value that is in the range from 5.50% to 6.50%, + or, alternatively, a calculated decimal value that is in the range from 0.0550 to 0.0650 + (if the answer is a single number, assume that it is that calculated EBITDA Margin metric value) diff --git a/examples/FinanceBench-Lite/knowledge-store.txt b/examples/FinanceBench-Lite/knowledge-store.txt new file mode 100644 index 000000000..5e2ab51b1 --- /dev/null +++ b/examples/FinanceBench-Lite/knowledge-store.txt @@ -0,0 +1,277 @@ +FINANCIAL SYNONYMS +================== + +- "(Consolidated) Balance Sheet(s)", + "Statement(s) of (Consolidated) Financial Position", "(Consolidated) Statement(s) of Financial Position" + +- "(Consolidated) Cash Flow(s) Statement(s)", "(Consolidated) Statement(s) of Cash Flows" + +- "(Consolidated) Income Statement(s)", "Statement(s) of (Consolidated) Income", "(Consolidated) Statement(s) of Income", + "(Consolidated) Profit-and-Loss Statement(s)", "(Consolidated) P&L (Statement(s))", + "(Consolidated) Earnings Statement(s)", "Statement(s) of (Consolidated) Earnings", "(Consolidated) Statement(s) of Earnings", + "(Consolidated) Operations Statement(s)", "Statement(s) of (Consolidated) Operations", "(Consolidated) Statement(s) of Operations" + + +Balance-Sheet Line-Item Synonyms +-------------------------------- + +- "Total Assets", "TA(s)" + +- "(Net) Fixed Assets", "(Net) FA(s)", + "(Net) Property, Plant & Equipment", "(Net) PP&E", "(Net) PPNE", + "(Net) Property & Equipment", "(Net) Plant & Equipment", "(Net) Property, Equipment & Intangibles" + +- "(Total) (Net) Inventory", "(Total) (Net) Inventories", + "(Total) (Net) Merchandise Inventory", "(Total) (Net) Merchandise Inventories" + +- "(Net) Accounts Receivable", "(Net) AR", "(Net) (Trade) Receivables" + +- "(Net) Accounts Payable", "(Net) AP" + + +Cash-Flow-Statement Line-Item Synonyms +-------------------------------------- + +- "(Net) Cash (Flows) from Operations", "(Net) Cash (Flows) from Operating Activities", "(Net) Operating Cash Flows" + +- "(Net) Cash (Flows) from Investments", "(Net) Cash (Flows) from Investing Activities", "(Net) Investing Cash Flows" + +- "Capital Expenditure(s)", "CapEx", "Capital Spending", "Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)" + +- "(Net) Cash (Flows) from Financing", "(Net) Cash (Flows) from Financing Activities", "(Net) Financing Cash Flows" + + +Income-Statement / Profit-and-Loss- (P&L-) Statement / Earnings-Statement / Operations-Statement Line-Item Synonyms +------------------------------------------------------------------------------------------------------------------- + +- "(Total) (Net) (Operating) Revenue(s)", "(Total) (Net) Sales" + +- "(Total) Cost of Goods Sold", "(Total) COGS", "(Total) Cost of Sales", "(Total) Cost of Revenue" + +- "Gross Income (or Loss)", "Gross Profit (or Loss)", "Gross Earnings (or Loss(es))" + +- "Operating Expenditure(s)", "Operating Expenses", "OpEx" + +- "Selling, General & Administrative (Expenses)", "SG&A (Expenses)" + +- "(Unadjusted) Operating Income", "(Unadjusted) Operating Profit" + +- "Earnings before Interest, Tax, Depreciation & Amortization", "EBITDA" + +- "Depreciation & Amortization", "D&A", + "Depreciation & Amortization of Fixed Assets", "Depreciation & Amortization of Property, Plant & Equipment (PP&E)" + +- "Earnings before Interest & Tax", "EBIT" + +- "Net Income (Attributable to Shareholders)", "Net Profit (Attributable to Shareholders)" + + +FINANCIAL METRIC FORMULAS +========================= + + +Turnover Ratio Metric Formulas +------------------------------ + +`(Total) Asset Turnover Ratio` = ( + `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` / + `average Total Assets, typically between two consecutive fiscal year-ends` +) + +`Fixed Asset Turnover Ratio` = ( + `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` / + `average (Net) Fixed Assets, a.k.a. (Net) Property, Plant & Equipment (PP&E), typically between two consecutive fiscal year-ends` +) + +`Inventory Turnover Ratio, a.k.a. Inventory Conversion Ratio` = ( + `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` / + `average (Total) (Net) Inventory(ies), typically between two consecutive fiscal year-ends` +) + + +Adjusted Income Metric Formulas +------------------------------- + +`(Unadjusted) Earnings before Interest, Tax, Depreciation & Amortization, a.k.a. EBITDA` = ( + `(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))` + + `Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E))` +) + + +Profitability Margin Metric Formulas +------------------------------------ + +`Cost of Goods Sold (COGS) Margin` = ( + `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` / + `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` +) + +`Gross (Income or Profit or Earnings) Margin` = ( + `Gross Income, a.k.a. Gross Profit, or Gross Earnings (or Loss(es))` / + `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` +) + +`(Unadjusted) Operating (Income or Profit or Earnings) Margin` = ( + `(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))` / + `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` +) + +`(Unadjusted) EBITDA Margin` = ( + `(Unadjusted) Earnings before Interest, Tax, Depreciation & Amortization, a.k.a. EBITDA` / + `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` +) + +`Depreciation & Amortization (D&A) Margin` = ( + `Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E))` / + `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` +) + +`EBIT Margin` = ( + `Earnings before Interest & Tax, a.k.a. EBIT` / + `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` +) + +`Net (Income or Profit or Earnings) Margin` = ( + `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` / + `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` +) + + +Profit-Utilization / Capital-Return Metric Formulas +--------------------------------------------------- + +`Interest Coverage Ratio` = `Earnings before Interest & Tax, a.k.a. EBIT` / `Interest Expense` + +`Effective (Income) Tax Rate` = `(Income) Tax Expense` / `Income or Profit or Earnings (or Loss(es)) before (Income) Tax(es)` + +`Dividend Payout Ratio` = ( + `Cash Dividends` / + `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` +) + +`Retention Ratio` = 1 - `Dividend Payout Ratio` + + +Capital-Intensiveness / Return-on-Capital Metric Formulas +--------------------------------------------------------- + +`Capital Intensity Ratio` = `Total Assets` / `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` + +`Return on (Total) Assets, a.k.a. RoA or RoTA` = ( + `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` / + `average Total Assets, typically between two consecutive fiscal year-ends` +) + + +Leverage Metric Formulas +------------------------ + +`Total Debt` = ( + `Long-Term Debt (EXCLUDING any current/short-term portion)` + + `Short-Term Debt, or Current Portion of (Long-Term) Debt` +) + + +Liquidity Metric Formulas +------------------------- + +`(Net) Working Capital` = `(Total) Current Assets` - `(Total) Current Liabilities` + +`Working Capital Ratio` = `(Total) Current Assets` / `(Total) Current Liabilities` + +`Quick Ratio` = ( + (`Cash & Cash Equivalents` + + `Short-Term Investments or (Current) Marketable Securities` + + `(Net) Accounts Receivable, a.k.a. (Net) (Trade) Receivables`) + / `(Total) Current Liabilities` +) + +`Operating Cash Flow Ratio` = ( + `(Net) Cash Flows from Operations, a.k.a. (Net) Operating Cash Flows` + / `(Total) Current Liabilities` +) + +`Free Cash Flow, a.k.a. FCF` = ( + `(Net) Cash Flows from Operations, a.k.a. (Net) Operating Cash Flows` - + `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)` +) + +`Free Cash Flow Conversion Ratio` = `Free Cash Flow, a.k.a. FCF` / `Earnings before Interest, Tax, Depreciation & Amortization, a.k.a. EBITDA` + +`Days Inventory Outstanding, a.k.a. DIO` = ( + 365 * `average (Total) (Net) Inventory(ies), typically between two consecutive fiscal year-ends` + / `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` +) + +`Days Payable Outstanding, a.k.a. DPO` = ( + 365 * `average Accounts Payable, typically between two consecutive fiscal year-ends` + / (`(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` + + `change in (Total) (Net) Inventory(ies), typically between two consecutive fiscal year-ends`) +) + +`Days Sales Oustanding, a.k.a. DSO` = ( + 365 * `average (Net) Accounts Receivable, a.k.a. (Net) (Trade) Receivables, typically between two consecutive fiscal year-ends` + / `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` +) + +`Cash Conversion Cycle, a.k.a. CCC` = ( + `Days Inventory Outstanding, a.k.a. DIO` + `Days Sales Oustanding, a.k.a. DSO` - `Days Payable Outstanding, a.k.a. DPO` +) + + +CAPITAL-INTENSIVENESS EVALUATION +================================ + +Capital-intensive businesses tend to have one or several of the following characteristics: + +- high `(Net) Fixed Assets, a.k.a. (Net) Property, Plant & Equipment (PP&E)` as proportion of `Total Assets`, + e.g., over 25%; + +- high `Total Assets` relative to `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`, + e.g., over 2 times; + +- high `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)` + relative to `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`, + e.g., over 10%; + + and/or + +- low `Return on (Total) Assets, a.k.a. RoA or RoTA`, + e.g., under 10% + + +FINANCIAL-ANALYSIS LANGUAGE/WORDING +=================================== + +- When we see the word "average" used before a Balance-Sheet line item in financial-analysis contexts, + it often means the simple arithmetic mean of that line item's values at two consecutive fiscal year-ends + +- When we see the word "growth" or the the phrase "top-line performance" + used in the context of product categories/segments or geographies, unless otherwise specified, + it often concerns the year-on-year proportional/relative growth rates in `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` + from such product categories/segments or geographies + +- When we see the word "margin" in financial-analysis contexts, + we usually need to divide a certain Profit-and-Loss (P&L) line item by the `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` + for the concerned financial reporting period(s) + +- When we see the word "turnover ratio" used after a Balance-Sheet line item in financial-analysis contexts, + we usually need to divide the `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` for the fiscal year + by the average of that Balance-Sheet line item between the latest fiscal year-end and the immediately-preceeding fiscal year-end + + +PHYSICAL-PRODUCT COMPANY PERFORMANCE METRICS vs. FINANCIAL-SERVICES COMPANY PERFORMANCE METRICS +=============================================================================================== + +Margin metrics are generally relevant/useful performance indicators for evaluating companies making physical products, +but generally irrelevant / not useful for evaluating companies delivering financial services + + +PULICLY LISTED & TRADED DEBT SECURITIES +======================================= + +If there are debt securities registered to trade on a national securities exchange under a company's name, +then such debt securities are enumerated on SEC filings' 1st page, alongside the company's public equity shares/stock. + +If only equity shares/stock are enumerated on SEC filings' 1st page, +then there are no debt securities registered to trade on a national securities exchange under a company's name. diff --git a/examples/FinanceBench-Lite/log.py b/examples/FinanceBench-Lite/log.py new file mode 100644 index 000000000..874f12f53 --- /dev/null +++ b/examples/FinanceBench-Lite/log.py @@ -0,0 +1,39 @@ +from pathlib import Path +# import sys + +from loguru import logger + +from data_and_knowledge import FbId, DOC_NAMES_BY_FB_ID + + +LOG_DIR_PATH: Path = Path(__file__).parent / '.log' +CURRENT_LOG_HANDLER_ID: int | None = None + + +# loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.add +# logger.add(sink=sys.stdout, level='DEBUG', +# # format=..., +# filter=None, +# colorize=True, +# serialize=False, +# backtrace=True, diagnose=True, +# enqueue=False, context=None, +# catch=True) + + +def switch_log_file(fb_id: FbId, output_name: str): + global CURRENT_LOG_HANDLER_ID # pylint: disable=global-statement + + if CURRENT_LOG_HANDLER_ID is not None: + logger.remove(handler_id=CURRENT_LOG_HANDLER_ID) + + CURRENT_LOG_HANDLER_ID = logger.add(sink=(Path(LOG_DIR_PATH) / + DOC_NAMES_BY_FB_ID[fb_id] / fb_id[16:] / f'{output_name}.log'), + level='DEBUG', + # format=..., + filter=None, + colorize=True, + serialize=False, + backtrace=True, diagnose=True, + enqueue=False, context=None, + catch=True) diff --git a/examples/FinanceBench-Lite/program-store.yml b/examples/FinanceBench-Lite/program-store.yml new file mode 100644 index 000000000..b1cadf35b --- /dev/null +++ b/examples/FinanceBench-Lite/program-store.yml @@ -0,0 +1,1136 @@ +# TURNOVER METRIC EVALUATION +# ========================== + +asset-turnover-ratio: + task: |- + Calculate `(Total) Asset Turnover Ratio` of {COMPANY} for {PERIOD} annual fiscal period + as decimal value according to formula: + + `(Total) Asset Turnover Ratio` = ( + `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` / + `average Total Assets, typically between two consecutive fiscal year-ends` + ) + + sub-htps: + - task: >- + What is value in dollars of `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` + (or most similar-meaning reported line item) + + on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for {PERIOD} annual fiscal period? + + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; + # retrieve individual starting & ending balance values only, without taking simple arithmetic average + # because RAG LMs may not be good at calculation & mathematical reasoning + - task: |- + What are values in dollars of `Total Assets` (or most similar-meaning reported line item) + + on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` + (or most similar-meaning statement) of {COMPANY} + (and NOT Balance Sheets of its acquired and/or divested companies) + + as at following two annual fiscal period ends: + - previous annual fiscal period end immediately preceding {PERIOD}; and + - current {PERIOD} annual fiscal period end? + + +fa-turnover-ratio: + task: |- + Calculate `Fixed Asset Turnover Ratio` of {COMPANY} for {PERIOD} annual fiscal period + as decimal value according to formula: + + `Fixed Asset Turnover Ratio` = ( + `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` / + `average (Net) Fixed Assets, a.k.a. (Net) Property, Plant & Equipment (PP&E), typically between two consecutive fiscal year-ends` + ) + + sub-htps: + - task: >- + What is value in dollars of `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` + (or most similar-meaning reported line item) + + on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for {PERIOD} annual fiscal period? + + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; + # retrieve individual starting & ending balance values only, without taking simple arithmetic average + # because RAG LMs may not be good at calculation & mathematical reasoning + - task: |- + What are values in dollars of `(Net) Fixed Assets, a.k.a. (Net) Property, Plant & Equipment (PP&E)` + (or most similar-meaning reported line item) + + on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` + (or most similar-meaning statement) of {COMPANY} + (and NOT Balance Sheets of its acquired and/or divested companies) + + as at following two annual fiscal period ends: + - previous annual fiscal period end immediately preceding {PERIOD}; and + - current {PERIOD} annual fiscal period end? + + +inv-turnover-ratio: + task: |- + Calculate `Inventory Turnover Ratio` of {COMPANY} for {PERIOD} annual fiscal period + as decimal value according to formula: + + `Inventory Turnover Ratio, a.k.a. Inventory Conversion Ratio` = ( + `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` / + `average (Total) (Net) Inventory(ies), typically between two consecutive fiscal year-ends` + ) + + sub-htps: + - task: >- + What is value in dollars of + `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` + (or most similar-meaning reported line item) + + on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for {PERIOD} annual fiscal period? + + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; + # retrieve individual starting & ending balance values only, without taking simple arithmetic average + # because RAG LMs may not be good at calculation & mathematical reasoning + - task: |- + What are values in dollars of `(Total) (Net) Inventory(ies)` (or most similar-meaning reported line item) + + on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` + (or most similar-meaning statement) of {COMPANY} + (and NOT Balance Sheets of its acquired and/or divested companies) + + as at following two annual fiscal period ends: + - previous annual fiscal period end immediately preceding {PERIOD}; and + - current {PERIOD} annual fiscal period end? + + +# INCOME & PROFITABILITY METRIC EVALUATION +# ======================================== + +cogs-margin: + task: |- + Calculate `Cost of Goods Sold (COGS) Margin` of {COMPANY} for {PERIOD} fiscal period + as percentage value according to formula: + + `Cost of Goods Sold (COGS) Margin` = ( + `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` / + `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` + ) + + sub-htps: + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; + # retrieve individual numerator & denominator balance values only, without taking division + # because RAG LMs may not be good at calculation & mathematical reasoning + - task: |- + What are values in dollars of: + - `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue`; and + - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` + (or most similar-meaning reported line items to those) + + on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for {PERIOD} fiscal period? + + +cogs-margin-3y-avg: + task: |- + Calculate 3-year average `Cost of Goods Sold (COGS) Margin` of {COMPANY} as percentage value + + sub-htps: + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; + # retrieve individual numerator & denominator balance values only, without taking division + # because RAG LMs may not be good at calculation & mathematical reasoning + - task: |- + What are values in dollars of: + - `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue`; and + - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` + (or most similar-meaning reported line items to those) + + on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for past 3 fiscal years? + + - task: >- + Calculate 3-year average `Cost of Goods Sold (COGS) Margin` + by dividing sum of `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` + by sum of `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`, + and return division result as percentage value + + +gross-margin-comp: + task: >- + Calculate change and assess degradation/improvement in `Gross (Income or Profit or Earnings) Margin` of {COMPANY} + from corresponding one-year-preceding previous annual fiscal period to current {PERIOD} annual fiscal period + + sub-htps: + - task: |- + Calculate `Gross (Income or Profit or Earnings) Margin` of {COMPANY} as percentage values according to formula: + + `Gross (Income or Profit or Earnings) Margin` = ( + `Gross Income, a.k.a. Gross Profit, or Gross Earnings (or Loss(es))` / + `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` + ) + + for following two annual fiscal periods: + - previous annual fiscal period immediately preceding {PERIOD}; and + - current {PERIOD} annual fiscal period + + sub-htps: + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; + # retrieve individual numerator & denominator balance values only, without taking division + # because RAG LMs may not be good at calculation & mathematical reasoning + - task: |- + What are values in dollars of: + - `Gross Income, a.k.a. Gross Profit, or Gross Earnings (or Loss(es))`; and + - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` + (or most similar-meaning reported line items to those) + + on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for following two annual fiscal periods: + - previous annual fiscal period immediately preceding {PERIOD}; and + - current {PERIOD} annual fiscal period? + + - task: >- + Calculate difference between two calculated `Gross (Income or Profit or Earnings) Margin` percentage values + and assess whether `Gross (Income or Profit or Earnings) Margin` meaningfully degraded or improved + + +op-margin-3y-avg: + task: >- + Calculate 3-year average `(Unadjusted) Operating (Income or Profit or Earnings) Margin` of {COMPANY} as percentage value + + sub-htps: + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; + # retrieve individual numerator & denominator balance values only, without taking division + # because RAG LMs may not be good at calculation & mathematical reasoning + - task: |- + What are values in dollars of: + - `(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))`; and + - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` + (or most similar-meaning reported line items to those) + + on one same `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for past 3 fiscal years? + + - task: >- + Calculate 3-year average `(Unadjusted) Operating (Income or Profit or Earnings) Margin` + by dividing sum of `(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))` + by sum of `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`, + and return division result as percentage value + + +op-margin-comp: + task: >- + Calculate change and assess degradation/improvement in + `(Unadjusted) Operating (Income or Profit or Earnings) Margin` of {COMPANY} + from corresponding one-year-preceding previous annual fiscal period to current {PERIOD} annual fiscal period + + sub-htps: + - task: |- + Calculate `(Unadjusted) Operating (Income or Profit or Earnings) Margin` of {COMPANY} + as percentage values according to formula: + + `(Unadjusted) Operating (Income or Profit or Earnings) Margin` = ( + `(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))` / + `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` + ) + + for following two annual fiscal periods: + - previous annual fiscal period immediately preceding {PERIOD}; and + - current {PERIOD} annual fiscal period + + sub-htps: + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; + # retrieve individual numerator & denominator balance values only, without taking division + # because RAG LMs may not be good at calculation & mathematical reasoning + - task: |- + What are values in dollars of: + - `(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))`; and + - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` + (or most similar-meaning reported line items to those) + + on one same `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for following two annual fiscal periods: + - previous annual fiscal period immediately preceding {PERIOD}; and + - current {PERIOD} annual fiscal period? + + - task: >- + Calculate difference between two calculated `(Unadjusted) Operating (Income or Profit or Earnings) Margin` percentage values + and assess whether `(Unadjusted) Operating (Income or Profit or Earnings) Margin` meaningfully degraded or improved + + +da-margin: + task: |- + Calculate `Depreciation & Amortization (D&A) Margin` of {COMPANY} for {PERIOD} fiscal period + as percentage value according to formula: + + `Depreciation & Amortization (D&A) Margin` = ( + `Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E))` / + `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` + ) + + sub-htps: + - task: >- + What is value in dollars of `Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E))` + (or most similar-meaning reported line item) + + on `(Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows` + (or most similar-meaning statement) + + of {COMPANY} for {PERIOD} fiscal period? + + - task: |- + What is value in dollars of `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` + (or most similar-meaning reported line item) + + on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for {PERIOD} fiscal period? + + +ebitda: + task: >- + Calculate `(Unadjusted) Earnings before Interest, Tax, Depreciation & Amortization, a.k.a. EBITDA` + of {COMPANY} for {PERIOD} fiscal period in dollars according to formula: + + `(Unadjusted) Earnings before Interest, Tax, Depreciation & Amortization, a.k.a. EBITDA` = ( + `(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))` + + `Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E))` + ) + + sub-htps: + - task: >- + What is value in dollars of `(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))` + (or most similar-meaning reported line item) + + on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for {PERIOD} fiscal period? + + # retrieving CapEx as extra, as it is asked for sometimes + - task: |- + What are values in dollars of: + - `Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E))`; and + - `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)` + (or most similar-meaning reported line items to those) + + on `(Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows` + (or most similar-meaning statement) + + of {COMPANY} for {PERIOD} fiscal period? + + +ebitda-margin: + task: |- + Calculate `(Unadjusted) EBITDA Margin` of {COMPANY} for {PERIOD} fiscal period as percentage value according to formula: + + `(Unadjusted) EBITDA Margin` = ( + (`(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))` + + `Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E))`) + / `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` + ) + + sub-htps: + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency + - task: |- + What are values in dollars of: + - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`; and + - `(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))` + (or most similar-meaning reported line items to those) + + on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for {PERIOD} fiscal period? + + - task: >- + What is value in dollars of `Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E))` + (or most similar-meaning reported line item) + + on `(Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows` + (or most similar-meaning statement) + + of {COMPANY} for {PERIOD} fiscal period? + + - task: |- + Calculate `(Unadjusted) EBITDA Margin` of {COMPANY} for {PERIOD} fiscal period + as percentage value according to formula: + + `(Unadjusted) EBITDA Margin` = ( + (`(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))` + + `Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E))`) + / `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` + ) + + +ebitda-margin-3y-avg: + task: >- + Calculate 3-year average `(Unadjusted) EBITDA Margin` of {COMPANY} as percentage value + + sub-htps: + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; + - task: |- + What are values in dollars of: + - `(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))`; and + - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` + (or most similar-meaning reported line items to those) + + on one same `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for past 3 fiscal years? + + - task: >- + What are values in dollars of `Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E))` + (or most similar-meaning reported line item) + + on one same `(Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows` + (or most similar-meaning statement) + + of {COMPANY} for past 3 fiscal years? + + - task: >- + Calculate 3-year average `(Unadjusted) EBITDA Margin` + by adding sum of `(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))` + to sum of `Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E))`, + then dividing that combined sum by sum of `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`, + and return division result as percentage value + + +net-margin-3y-avg: + task: >- + Calculate 3-year average `Net (Income or Profit or Earnings) Margin` of {COMPANY} as percentage value + + sub-htps: + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; + # retrieve individual numerator & denominator balance values only, without taking division + # because RAG LMs may not be good at calculation & mathematical reasoning + - task: |- + What are values in dollars of: + - `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)`; and + - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` + (or most similar-meaning reported line items to those) + + on one same `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for past 3 fiscal years? + + - task: >- + Calculate 3-year average `Net (Income or Profit or Earnings) Margin` + by dividing sum of `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` + by sum of `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`, + and return division result as percentage value + + +# PROFIT-UTILIZATION / CAPITAL-RETURN METRIC EVALUATION +# ===================================================== + +int-cov-ratio: + task: >- + Calculate `Interest Coverage Ratio` of {COMPANY} for {PERIOD} fiscal period as decimal value according to formula: + + `Interest Coverage Ratio` = `Earnings before Interest & Tax, a.k.a. EBIT` / `Interest Expense` + + sub-htps: + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; + # retrieve individual numerator & denominator balance values only, without taking division + # because RAG LMs may not be good at calculation & mathematical reasoning + - task: |- + What are values in dollars of: + - `Earnings before Interest & Tax, a.k.a. EBIT`; and + - `Interest Expense` + (or most similar-meaning reported line items to those) + + on one same `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for {PERIOD} fiscal period? + + - task: >- + Calculate `Interest Coverage Ratio` of {COMPANY} for {PERIOD} fiscal period as decimal value according to formula: + + `Interest Coverage Ratio` = `Earnings before Interest & Tax, a.k.a. EBIT` / `Interest Expense` + + (note that if `Earnings before Interest & Tax, a.k.a. EBIT` is negative, + it is conventional to say `Interest Coverage Ratio` is zero) + + +effective-tax-rate-comp: + task: >- + Assess change in `Effective (Income) Tax Rate` of {COMPANY} + from corresponding one-year-preceding previous annual fiscal period to current {PERIOD} annual fiscal period + + sub-htps: + - task: >- + Calculate `Effective (Income) Tax Rate` of {COMPANY} for {PERIOD} fiscal period as percentage value according to formula: + + `Effective (Income) Tax Rate` = `(Income) Tax Expense` / `Income or Profit or Earnings (or Loss(es)) before (Income) Tax(es)` + + for following two annual fiscal periods: + - previous annual fiscal period immediately preceding {PERIOD}; and + - current {PERIOD} annual fiscal period + + sub-htps: + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; + # retrieve individual numerator & denominator balance values only, without taking division + # because RAG LMs may not be good at calculation & mathematical reasoning + - task: |- + What are values in dollars of: + - `(Income) Tax Expense`; and + - `Income or Profit or Earnings (or Loss(es)) before (Income) Tax(es)` + (or most similar-meaning reported line items to those) + + on one same `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for following two annual fiscal periods: + - previous annual fiscal period immediately preceding {PERIOD}; and + - current {PERIOD} annual fiscal period? + + +div-payout-ratio: + task: |- + Calculate `Dividend Payout Ratio` of {COMPANY} for {PERIOD} fiscal period as decimal value according to formula: + + `Dividend Payout Ratio` = ( + `Cash Dividends` / + `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` + ) + + sub-htps: + - task: >- + What is value in dollars of `Cash Dividends` (or most similar-meaning reported line item) + + on `(Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows` + (or most similar-meaning statement) + + of {COMPANY} for {PERIOD} fiscal period? + + - task: |- + What is value in dollars of `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` + (or most similar-meaning reported line item) + + on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for {PERIOD} fiscal period? + + +retention-ratio: + task: |- + Calculate `Retention Ratio` of {COMPANY} for {PERIOD} fiscal period as decimal value according to formula: + + `Retention Ratio` = 1 - ( + `Cash Dividends` / + `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` + ) + + sub-htps: + - task: >- + What is value in dollars of `Cash Dividends` (or most similar-meaning reported line item) + + on `(Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows` + (or most similar-meaning statement) + + of {COMPANY} for {PERIOD} fiscal period? + + - task: |- + What is value in dollars of `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` + (or most similar-meaning reported line item) + + on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for {PERIOD} fiscal period? + + +# LIQUIDITY METRIC EVALUATION +# =========================== + +net-work-cap: + task: |- + Calculate `(Net) Working Capital` of {COMPANY} as at {PERIOD} fiscal period end, in dollars according to formula: + + `(Net) Working Capital` = `(Total) Current Assets` - `(Total) Current Liabilities` + + and assess whether `(Net) Working Capital` is positive or negative + + sub-htps: + - task: |- + What is value in dollars of `(Total) Current Assets` (or most similar-meaning reported line item) + + on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` + (or most similar-meaning statement) of {COMPANY} + (and NOT Balance Sheets of its acquired and/or divested companies) + + as at {PERIOD} fiscal period end? + + - task: |- + What is value in dollars of `(Total) Current Liabilities` (or most similar-meaning reported line item) + + on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` + (or most similar-meaning statement) of {COMPANY} + (and NOT Balance Sheets of its acquired and/or divested companies) + + as at {PERIOD} fiscal period end? + + +work-cap-ratio: + task: |- + Calculate `Working Capital Ratio` of {COMPANY} as at {PERIOD} fiscal period end as decimal value according to formula: + + `Working Capital Ratio` = `(Total) Current Assets` / `(Total) Current Liabilities` + + sub-htps: + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; + # retrieve individual numerator & denominator balance values only, without taking division + # because RAG LMs may not be good at calculation & mathematical reasoning + - task: |- + What are values in dollars of: + - `(Total) Current Assets`; and + - `(Total) Current Liabilities` + (or most similar-meaning reported line items to those) + + on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` + (or most similar-meaning statement) of {COMPANY} + (and NOT Balance Sheets of its acquired and/or divested companies) + + as at {PERIOD} fiscal period end? + + +quick-ratio: + task: Assess liquidity health of {COMPANY} through its `Quick Ratio` as at {PERIOD} fiscal period end + + sub-htps: + - task: |- + Calculate `Quick Ratio` of {COMPANY} as at {PERIOD} fiscal period end as decimal value according to formula: + + `Quick Ratio` = ( + (`Cash & Cash Equivalents` + + `Short-Term Investments or (Current) Marketable Securities` + + `(Net) Accounts Receivable, a.k.a. (Net) (Trade) Receivables`) + / `(Total) Current Liabilities` + ) + + sub-htps: + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; + # retrieve individual numerator & denominator balance values only, without taking division + # because RAG LMs may not be good at calculation & mathematical reasoning + - task: |- + What are values in dollars of: + - `Cash & Cash Equivalents`; + - `Short-Term Investments or (Current) Marketable Securities`; + - `(Net) Accounts Receivable, a.k.a. (Net) (Trade) Receivables`; and + - `(Total) Current Liabilities` + (or most similar-meaning reported line items to those) + + on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` + (or most similar-meaning statement) of {COMPANY} + (and NOT Balance Sheets of its acquired and/or divested companies) + + as at {PERIOD} fiscal period end? + + - task: |- + Compare calculated `Quick Ratio` decimal value against 1.00 and make assessment: + - `Quick Ratio` >= 1.00: liquidity is healthy; or + - `Quick Ratio` < 1.00: liquidity is not very healthy + + +quick-ratio-comp: + task: >- + Calculate change and assess degradation/improvement in `Quick Ratio` of {COMPANY} + from corresponding one-year-preceding previous annual fiscal period end to current {PERIOD} annual fiscal period end + + sub-htps: + - task: |- + Calculate `Quick Ratio` of {COMPANY} as decimal values according to formula: + + `Quick Ratio` = ( + (`Cash & Cash Equivalents` + + `Short-Term Investments or (Current) Marketable Securities` + + `(Net) Accounts Receivable, a.k.a. (Net) (Trade) Receivables`) + / `(Total) Current Liabilities` + ) + + as at following two annual fiscal period ends: + - previous annual fiscal period end immediately preceding {PERIOD}; and + - current {PERIOD} annual fiscal period end + + sub-htps: + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; + # retrieve individual numerator & denominator balance values only, without taking division + # because RAG LMs may not be good at calculation & mathematical reasoning + - task: |- + What are values in dollars of: + - `Cash & Cash Equivalents`; + - `Short-Term Investments or (Current) Marketable Securities`; + - `(Net) Accounts Receivable, a.k.a. (Net) (Trade) Receivables`; and + - `(Total) Current Liabilities` + (or most similar-meaning reported line items to those) + + on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` + (or most similar-meaning statement) of {COMPANY} + (and NOT Balance Sheets of its acquired and/or divested companies) + + as at following two annual fiscal period ends: + - previous annual fiscal period end immediately preceding {PERIOD}; and + - current {PERIOD} annual fiscal period end? + + - task: >- + Calculate difference between two calculated `Quick Ratio` decimal values + and assess whether `Quick Ratio` meaningfully degraded or improved + + +fcf: + task: |- + Calculate `Free Cash Flow, a.k.a. FCF` of {COMPANY} for {PERIOD} fiscal period in dollars according to formula: + + `Free Cash Flow, a.k.a. FCF` = ( + `(Net) Cash Flows from Operations, a.k.a. (Net) Operating Cash Flows` - + `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)` + ) + + sub-htps: + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; + # retrieve individual balance values only, without taking difference + # because RAG LMs may not be good at calculation & mathematical reasoning + - task: |- + What are values in dollars of: + - `(Net) Cash Flows from Operations, a.k.a. (Net) Operating Cash Flows`; and + - `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)` + (or most similar-meaning reported line items to those) + + on one same `(Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows` + (or most similar-meaning statement) + + of {COMPANY} for {PERIOD} fiscal period? + + +fcf-conv-comp: + task: >- + Calculate change and assess degradation/improvement in `Free Cash Flow Conversion Ratio` of {COMPANY} + from corresponding one-year-preceding previous annual fiscal period to current {PERIOD} annual fiscal period + + sub-htps: + - task: |- + Calculate `Free Cash Flow Conversion Ratio` of {COMPANY} as percentage values according to formula: + + `Free Cash Flow Conversion Ratio` = ( + (`(Net) Cash Flows from Operations, a.k.a. (Net) Operating Cash Flows` - + `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)`) + / `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` + ) + + for following two annual fiscal periods: + - previous annual fiscal period immediately preceding {PERIOD}; and + - current {PERIOD} annual fiscal period + + sub-htps: + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; + # retrieve individual balance values only, without taking difference + # because RAG LMs may not be good at calculation & mathematical reasoning + - task: |- + What are values in dollars of: + - `(Net) Cash Flows from Operations, a.k.a. (Net) Operating Cash Flows`; and + - `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)` + (or most similar-meaning reported line items to those) + + on one same `(Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows` + (or most similar-meaning statement) + + of {COMPANY} for following two annual fiscal periods: + - previous annual fiscal period immediately preceding {PERIOD}; and + - current {PERIOD} annual fiscal period? + + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency + - task: |- + What are values in dollars of `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` + (or most similar-meaning reported line item) + + on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for following two annual fiscal periods: + - previous annual fiscal period immediately preceding {PERIOD}; and + - current {PERIOD} annual fiscal period? + + - task: >- + Calculate difference between two calculated `Free Cash Flow Conversion Ratio` percentage values + and assess whether `Free Cash Flow Conversion Ratio` meaningfully degraded or improved + + +op-cf-ratio: + task: |- + Calculate Operating Cash Flow Ratio of {COMPANY} for {PERIOD} annual fiscal period + as decimal value according to formula: + + `Operating Cash Flow Ratio` = ( + `(Net) Cash Flows from Operations, a.k.a. (Net) Operating Cash Flows` + / `(Total) Current Liabilities` + ) + + sub-htps: + - task: >- + What is value in dollars of `(Net) Cash Flows from Operations, a.k.a. (Net) Operating Cash Flows` + (or most similar-meaning reported line item) + + on `(Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows` + (or most similar-meaning statement) + + of {COMPANY} for {PERIOD} annual fiscal period? + + - task: >- + What is value in dollars of `(Total) Current Liabilities` (or most similar-meaning reported line item) + + on `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` + (or most similar-meaning statement) of {COMPANY} + (and NOT Balance Sheets of its acquired and/or divested companies) + + as at {PERIOD} annual fiscal period end? + + +days-payable-outstanding: + task: |- + Calculate `Days Payable Outstanding, a.k.a. DPO` for {COMPANY} for {PERIOD} annual fiscal period + as decimal value according to formula: + + `Days Payable Outstanding, a.k.a. DPO` = ( + 365 * `average Accounts Payable, typically between two consecutive fiscal year-ends` + / (`(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` + + `change in (Total) (Net) Inventory(ies), typically between two consecutive fiscal year-ends`) + ) + + sub-htps: + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; + # retrieve individual starting & ending balance values only, without taking difference or simple arithmetic average + # because RAG LMs may not be good at calculation & mathematical reasoning + - task: |- + What are values in dollars of: + - `Accounts Payable`; and + - `(Total) (Net) Inventory(ies)` + (or most similar-meaning reported line items to those) + + on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` + (or most similar-meaning statement) of {COMPANY} + (and NOT Balance Sheets of its acquired and/or divested companies) + + as at following two annual fiscal period ends: + - previous annual fiscal period end immediately preceding {PERIOD}; and + - current {PERIOD} annual fiscal period end? + + # TODO: remove/simplify: back-up task in case above fails + - task: |- + What are values in dollars of `Accounts Payable` (or most similar-meaning reported line item) + + on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` + (or most similar-meaning statement) of {COMPANY} + (and NOT Balance Sheets of its acquired and/or divested companies) + + as at following two annual fiscal period ends: + - previous annual fiscal period end immediately preceding {PERIOD}; and + - current {PERIOD} annual fiscal period end? + + - task: >- + What is value in dollars of + `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` + (or most similar-meaning reported line item) + + on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for {PERIOD} annual fiscal period? + + +cash-conv-cyc: + task: |- + Calculate `Cash Conversion Cycle, a.k.a. CCC` of {COMPANY} for {PERIOD} annual fiscal period + as decimal value according to formula: + + `Cash Conversion Cycle, a.k.a. CCC` = ( + `Days Inventory Outstanding, a.k.a. DIO` + `Days Sales Oustanding, a.k.a. DSO` - `Days Payable Outstanding, a.k.a. DPO` + ) + + sub-htps: + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; + # retrieve individual starting & ending balance values only, without taking difference or simple arithmetic average + # because RAG LMs may not be good at calculation & mathematical reasoning + - task: |- + What are values in dollars of: + - `(Total) (Net) Inventory(ies)`; + - `(Net) Accounts Receivable, a.k.a. (Net) (Trade) Receivables`; and + - `Accounts Payable` + (or most similar-meaning reported line items to those) + + on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` + (or most similar-meaning statement) of {COMPANY} + (and NOT Balance Sheets of its acquired and/or divested companies) + + as at following two annual fiscal period ends: + - previous annual fiscal period end immediately preceding {PERIOD}; and + - current {PERIOD} annual fiscal period end? + + - task: >- + What are values in dollars of: + - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`; and + - `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` + (or most similar-meaning reported line items to those) + + on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for {PERIOD} annual fiscal period? + + - task: |- + Calculate `Days Inventory Outstanding, a.k.a. DIO` for {COMPANY} for {PERIOD} annual fiscal period + as decimal value according to formula: + + `Days Inventory Outstanding, a.k.a. DIO` = ( + 365 * `average (Total) (Net) Inventory(ies), typically between two consecutive fiscal year-ends` + / `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` + ) + + - task: |- + Calculate `Days Sales Oustanding, a.k.a. DSO` for {COMPANY} for {PERIOD} annual fiscal period + as decimal value according to formula: + + `Days Sales Oustanding, a.k.a. DSO` = ( + 365 * `average (Net) Accounts Receivable, a.k.a. (Net) (Trade) Receivables, typically between two consecutive fiscal year-ends` + / `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` + ) + + - task: |- + Calculate `Days Payable Outstanding, a.k.a. DPO` for {COMPANY} for {PERIOD} annual fiscal period + as decimal value according to formula: + + `Days Payable Outstanding, a.k.a. DPO` = ( + 365 * `average Accounts Payable, typically between two consecutive fiscal year-ends` + / (`(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` + + `change in (Total) (Net) Inventory(ies), typically between two consecutive fiscal year-ends`) + ) + + +# LEVERAGE METRIC EVALUATION +# ========================== + +debt-comp: + task: >- + Calculate change and assess increase/decrease in `Total Debt` of {COMPANY} + from corresponding one-year-preceding previous annual fiscal period end to current {PERIOD} annual fiscal period end + + sub-htps: + - task: |- + Calculate `Total Debt` of {COMPANY} in dollar values according to formula: + + `Total Debt` = ( + `Long-Term Debt (EXCLUDING any current/short-term portion)` + + `Short-Term Debt, or Current Portion of (Long-Term) Debt` + ) + + as at following two annual fiscal period ends: + - previous annual fiscal period end immediately preceding {PERIOD}; and + - current {PERIOD} annual fiscal period end + + sub-htps: + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; + # retrieve individual balance values only, without taking sum + # because RAG LMs may not be good at calculation & mathematical reasoning + - task: |- + What are values in dollars of: + - `Long-Term Debt (EXCLUDING any current/short-term portion)`; and + - `Short-Term Debt, or Current Portion of (Long-Term) Debt` + (or most similar-meaning reported line items to those) + + on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` + (or most similar-meaning statement) of {COMPANY} + (and NOT Balance Sheets of its acquired and/or divested companies) + + as at following two annual fiscal period ends: + - previous annual fiscal period end immediately preceding {PERIOD}; and + - current {PERIOD} annual fiscal period end? + + - task: >- + Calculate difference between two calculated `Total Debt` dollar values + and assess whether `Total Debt` meaningfully degraded or improved + + +# CAPITAL-INTENSIVENESS METRIC EVALUATION +# ======================================= + +capex-as-pct-of-rev-3y-avg: + task: >- + Calculate 3-year average of + `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)` + as proportion of `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` + for {COMPANY} as percentage value + + sub-htps: + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency + - task: >- + What are values in dollars of + `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)` + (or most similar-meaning reported line item) + + on `(Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows` + (or most similar-meaning statement) + + of {COMPANY} for past 3 fiscal years? + + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency + - task: >- + What are values in dollars of `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` + (or most similar-meaning reported line item) + + on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for past 3 fiscal years? + + - task: >- + Calculate 3-year average of Capital Expenditure(s) (CapEx) as percentage of Revenue + by dividing sum of `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)` + by sum of `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`, + and return division result as percentage value + + +roa: + task: |- + Calculate `Return on (Total) Assets, a.k.a. RoA or RoTA` of {COMPANY} for {PERIOD} annual fiscal period + as percentage value according to formula: + + `Return on (Total) Assets, a.k.a. RoA or RoTA` = ( + `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` / + `average Total Assets, typically between two consecutive fiscal year-ends` + ) + + sub-htps: + - task: >- + What is value in dollars of `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` + (or most similar-meaning reported line item) + + on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for {PERIOD} annual fiscal period? + + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; + # retrieve individual balance values only, without taking simple arithmetic average + # because RAG LMs may not be good at calculation & mathematical reasoning + - task: |- + What are values in dollars of `Total Assets` (or most similar-meaning reported line item) + + on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` + (or most similar-meaning statement) of {COMPANY} + (and NOT Balance Sheets of its acquired and/or divested companies) + + as at following two annual fiscal period ends: + - previous annual fiscal period end immediately preceding {PERIOD}; and + - current {PERIOD} annual fiscal period end? + + +cap-intens: + task: >- + Assess whether {COMPANY} is capital-intensive according to {PERIOD} fiscal period data + + sub-htps: + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; + # retrieve individual starting & ending balance values only, without taking division or simple arithmetic average + # because RAG LMs may not be good at calculation & mathematical reasoning + - task: |- + What are values in dollars of: + - `(Net) Fixed Assets, a.k.a. (Net) Property, Plant & Equipment (PP&E)`; and + - `Total Assets` + (or most similar-meaning reported line item to those) + + on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` + (or most similar-meaning statement) of {COMPANY} + (and NOT Balance Sheets of its acquired and/or divested companies) + + as at following two annual fiscal period ends: + - previous annual fiscal period end immediately preceding {PERIOD}; and + - current {PERIOD} annual fiscal period end? + + - task: >- + What is value in dollars of + `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)` + (or most similar-meaning reported line item) + + on `(Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows` + (or most similar-meaning statement) + + of {COMPANY} for {PERIOD} fiscal period? + + # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency + - task: |- + What are values in dollars of: + - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`; and + - `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` + (or most similar-meaning reported line items to those) + + on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` + (or most similar-meaning statement) + + of {COMPANY} for {PERIOD} fiscal period? + + - task: |- + Assess whether {COMPANY} is capital-intensive according to {PERIOD} fiscal period data + + Capital-intensive businesses tend to have one or several of the following characteristics: + + - high `(Net) Fixed Assets, a.k.a. (Net) Property, Plant & Equipment (PP&E)` as proportion of `Total Assets`, + e.g., over 25%; + + - high `Total Assets` relative to `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`, + e.g., over 2 times; + + - high `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)` + relative to `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`, + e.g., over 10%; + + and/or + + - low `Return on (Total) Assets, a.k.a. RoA or RoTA`, + e.g., under 10%, + according to formula: + + `Return on (Total) Assets, a.k.a. RoA or RoTA` = ( + `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` / + `average Total Assets, typically between two consecutive fiscal year-ends` + ) diff --git a/examples/FinanceBench-Lite/rag-ground-truths.yml b/examples/FinanceBench-Lite/rag-ground-truths.yml new file mode 100644 index 000000000..6ef352009 --- /dev/null +++ b/examples/FinanceBench-Lite/rag-ground-truths.yml @@ -0,0 +1,914 @@ +defs: + + BS: (Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position + + cash-and-equiv: Cash & Cash Equivalents + st-invest: Short-Term Investments or (Current) Marketable Securities + recvables: (Net) Accounts Receivable, a.k.a. (Net) (Trade) Receivables + invent: (Total) (Net) Inventory(ies) + curr-assets: (Total) Current Assets + fixed-assets: (Net) Fixed Assets, a.k.a. (Net) Property, Plant & Equipment (PP&E) + total-assets: Total Assets + + payables: Accounts Payable + st-debt: Short-Term Debt, or Current Portion of (Long-Term) Debt + curr-liabs: (Total) Current Liabilities + lt-debt: Long-Term Debt (EXCLUDING any current/short-term portion) + + + CF: (Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows + + d&a: Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E)) + op-cf: (Net) Cash Flows from Operations, a.k.a. (Net) Operating Cash Flows + + capex: Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s) + + div: Cash Dividends + + + P&L: >- + (Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, + or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement + + rev: (Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales + cogs: (Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue + gross: Gross Income, a.k.a. Gross Profit, or Gross Earnings (or Loss(es)) + op: (Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es)) + ebitda: (Unadjusted) Earnings before Interest, Tax, Depreciation & Amortization, a.k.a. EBITDA + ebit: Earnings before Interest & Tax, a.k.a. EBIT + int: Interest Expense + ebt: Income or Profit or Earnings (or Loss(es)) before (Income) Tax(es) + inc-tax: (Income) Tax Expense + net: Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders) + + +ground-truths: + + 3M_2018_10K: + BS: + fixed-assets: + 2018: 8,738 million or 8.7 billion + 2017: 8,866 million or 8.9 billion # unreliable + + + 3M_2022_10K: + BS: + fixed-assets: + 2022: 9,178 million + 2021: 9,429 million + + total-assets: + 2022: 46,455 million + 2021: 47,072 million + + CF: + capex: + 2022: 1,749 million + 2021: 1,603 million + 2020: 1,501 million # unreliable + + P&L: + rev: + 2022: 34,229 million + 2021: 35,355 million + 2020: 32,184 million + + net: + 2022: 5,777 million + 2021: 5,921 million + 2020: 5,449 million + + + 3M_2023Q2_10Q: + BS: + cash-and-equiv: + 2023Q2: 4,258 million # unreliable + 2022: 3,655 million + + st-invest: + 2023Q2: 56 million + 2022: 238 million + + recvables: + 2023Q2: 4,947 million + 2022: 4,532 million + + invent: + 2023Q2: 5,280 million + 2022: 5,372 million + + curr-assets: + 2023Q2: 15,754 million + 2022: 14,688 million + + curr-liabs: + 2023Q2: 10,936 million + 2022: 9,523 million + + + ACTIVISIONBLIZZARD_2019_10K: + BS: + fixed-assets: + 2019: 253 million + 2018: 282 million + + CF: + capex: + 2019: 116 million + 2018: 131 million + 2017: 155 million # unreliable + + P&L: + rev: + 2019: 6,489 million + 2018: 7,500 million + 2017: 7,017 million + + + ADOBE_2015_10K: + BS: + curr-liabs: + 2015: 2,213.556 million or 2,213.6 million or 2.21 billion or 2.2 billion + 2014: 2,494.435 million or 2,494.4 million or 2.49 billion or 2.5 billion + + CF: + op-cf: + 2015: 1,469.502 million or 1,469.5 million or 1.47 billion or 1.5 billion + 2014: 1,287.482 million or 1,287.5 million or 1.29 billion or 1.3 billion + 2013: 1,151.686 million or 1,151.6 million or 1.15 billion or 1.2 billion + + + ADOBE_2016_10K: + P&L: + op: + 2016: 1,493.602 million or 1,493.6 million or 1.49 billion or 1.5 billion # unreliable + 2015: 903.095 million or 903.1 million or 0.9 billion # unreliable + 2014: 412.685 million or 412.7 million or 0.41 billion or 0.4 billion # unreliable + + + ADOBE_2017_10K: + BS: + curr-liabs: + 2017: 3,527.457 million or 3,527.5 million or 3.53 billion or 3.5 billion + 2016: 2,811.635 million or 2,811.6 million or 2.81 billion or 2.8 billion + + CF: + op-cf: + 2017: 2,912.853 million or 2,912.9 million or 2.91 billion or 2.9 billion + 2016: 2,199.728 million or 2,199.7 million or 2.2 billion + 2013: 1,469.502 million or 1,469.5 million or 1.47 billion or 1.5 billion # unreliable + + + ADOBE_2022_10K: + CF: + op-cf: + 2022: 7,838 million + 2021: 7,230 million + 2020: 5,727 million + + capex: + 2022: 442 million # unreliable + 2021: 348 million # unreliable + 2020: 419 million # unreliable + + P&L: + rev: + 2022: 17,606 million # unreliable + 2021: 15,785 million + 2020: 12,868 million + + op: + 2022: 6,098 million + 2021: 5,802 million + 2020: 4,237 million + + net: + 2022: 4,756 million + 2021: 4,822 million + 2020: 5,260 million + + + AES_2022_10K: + BS: + invent: + 2022: 1,055 million + 2021: 604 million + + total-assets: + 2022: 38,363 million + 2021: 32,963 million + + P&L: + cogs: + 2022: 10,069 million # unreliable + 2021: 8,430 million # unreliable + 2020: 6,967 million # unreliable + + net: + 2022: negative (loss) 546 million + 2021: negative (loss) 409 million # unreliable + 2020: 46 million + + + AMAZON_2017_10K: + BS: + invent: + 2017: 16,047 million + 2016: 11,461 million # unreliable + + payables: + 2017: 34,616 million + 2016: 25,309 million + + P&L: + rev: + 2017: 177,866 million + 2016: 135,987 million + 2015: 107,006 million + + cogs: + 2017: 111,934 million # unreliable: often mistaken for Total Operating Expenses $173,760 million + 2016: 88,265 million # unreliable: often mistaken for Total Operating Expenses $131,801 million + 2015: 71,651 million + + + AMCOR_2020_10K: + BS: + recvables: + 2020: 1,615.9 million # unreliable + 2019: 1,864.3 million # unreliable + + + AMCOR_2023_10K: + BS: + cash-and-equiv: + 2023: 689 million + 2022: 775 million + + st-invest: + 2023: 0 (or not explicitly reported) + 2022: 0 (or not explicitly reported) + + recvables: + 2023: 1,875 million # unreliable + 2022: 1,935 million + + invent: + 2023: 992 million + 1,221 million, or 2,213 million + 2022: 1,114 million + 1,325 million, or 2,439 million + + curr-assets: + 2023: 5,308 million + 2022: 5,853 million + + curr-liabs: + 2023: 4,476 million + 2022: 5,103 million + + P&L: + rev: + 2023: 14,694 million + 2022: 14,544 million + 2021: 12,861 million + + gross: + 2023: 2,725 million + 2022: 2,820 million + 2021: 2,732 million + + + AMCOR_2023Q4_EARNINGS: + P&L: + rev: + 2023Q4: 3,673 million + 2023FY: 14,694 million + 2022Q4: 3,909 million + 2022FY: 14,544 million + + ebitda: + 2023Q4: 540 million # unreliable: FY & Quarter numbers often mistaken for each other + 2023FY: 2,018 million # unreliable: FY & Quarter numbers often mistaken for each other + + + AMD_2015_10K: + CF: + d&a: + 2015: 167 million + 2014: 203 million + 2013: 236 million + + P&L: + rev: + 2015: 3,991 million + 2014: 5,506 million + 2013: 5,299 million + + + AMD_2022_10K: + BS: + cash-and-equiv: + 2022: 4,835 million # unreliable + 2021: 2,535 million # unreliable + + st-invest: + 2022: 1,020 million + 2021: 1,073 million + + recvables: + 2022: 4,126 million # unreliable + 2021: 2,706 million # unreliable + + invent: + 2022: 3,771 million + 2021: 1,955 million # unreliable + + curr-assets: + 2022: 15,019 million + 2021: 8,583 million + + curr-liabs: + 2022: 6,369 million + 2021: 4,240 million + + + AMERICANWATERWORKS_2021_10K: + CF: + d&a: + 2021: 636 million # unreliable + 2020: 604 million # unreliable + 2019: 582 million # unreliable + + P&L: + op: + 2021: 1,196 million + 2020: 1,248 million + 2019: 1,214 million + + + AMERICANWATERWORKS_2022_10K: + BS: + curr-assets: + 2022: 1,250 million + 2021: 1,554 million + + curr-liabs: + 2022: 2,811 million + 2021: 2,141 million + + + BESTBUY_2017_10K: + P&L: + rev: + 2017: 39,403 million + 2016: 39,528 million + 2015: 40,339 million + + net: + 2017: 1,228 million # unreliable: often mistaken for Net Earnings (Loss) from Continuing Operations $1,207m + 2016: 897 million # unreliable: often mistaken for Net Earnings (Loss) from Continuing Operations $807m + 2015: 1,233 million # unreliable: often mistaken for Net Earnings (Loss) from Continuing Operations $1,246m + + + BESTBUY_2019_10K: + BS: + invent: + 2019: 5,409 million + 2018: 5,209 million + + + BESTBUY_2023_10K: + P&L: + rev: + 2023: 46,298 million or 46.3 billion + 2022: 51,761 million or 51.8 billion + 2021: 47,262 million or 47.3 billion + + gross: + 2023: 9,912 million or 9.9 billion # unreliable + 2022: 11,640 million or 11.6 billion + 2021: 10,573 million or 10.6 billion + + + BLOCK_2016_10K: + BS: + curr-assets: + 2016: 1,001,425 or 1,001.4 million or 1.0 billion + 2015: 705,563 or 705.6 million or 0.7 billion + + curr-liabs: + 2016: 577,464 or 577.5 million or 0.6 billion # unreliable + 2015: 334,202 or 334.2 million or 0.3 billion # unreliable + + + BOEING_2018_10K: + BS: + fixed-assets: + 2018: 12,645 million # unreliable: 2018 & 2017 numbers often mixed up + 2017: 12,672 million # unreliable: 2018 & 2017 numbers often mixed up + + + BOEING_2022_10K: + P&L: + rev: + 2022: 66,608 million + 2021: 62,286 million + 2020: 58,158 million + + gross: + 2022: 3,502 million # unreliable because of missing line-time label + 2021: 3,017 million # unreliable because of missing line-time label + 2020: negative (loss) 5,685 million # unreliable because of missing line-time label + + ebt: + 2022: negative (loss) 5,022 million + 2021: negative (loss) 5,033 million + 2020: negative (loss) 14,476 million + + inc-tax: + 2022: tax of 31 million + 2021: tax benefit of 743 million + 2020: tax benefit of 2,535 million + + + COCACOLA_2017_10K: + BS: + total-assets: + 2017: 36,545 million # unreliable + 2016: 34,010 million # unreliable + + P&L: + net: + 2017: 1,248 million + 2016: 6,527 million + 2015: 7,351 million + + + COCACOLA_2021_10K: + P&L: + rev: + 2021: 38,655 million + 2020: 33,014 million + 2019: 37,266 million + + cogs: + 2021: 15,357 million + 2020: 13,433 million # unreliable + 2019: 14,619 million # unreliable + + + COCACOLA_2022_10K: + CF: + div: + 2022: 7,616 million + 2021: 7,252 million + 2020: 7,047 million + + P&L: + net: + 2022: 9,542 million + 2021: 9,771 million + 2020: 7,747 million + + + CORNING_2020_10K: + BS: + invent: + 2020: 2,438 million + 2019: 2,320 million + + payables: + 2020: 1,174 million # unreliable: often mistaken for Other Accrued Liabilities #2,437m + 2019: 1,587 million # unreliable: often mistaken for Other Accrued Liabilities $1,923m + + P&L: + cogs: + 2020: 7,772 million # unreliable: often failing to be retrieved at all + 2019: 7,468 million # unreliable: often failing to be retrieved at all + 2018: 6,829 million # unreliable: often failing to be retrieved at all + + + CORNING_2021_10K: + P&L: + rev: + 2021: 14,082 million # unreliable + 2020: 11,303 million + 2019: 11,503 million + + op: + 2021: 2,112 million + 2020: 509 million + 2019: 1,306 million + + + CORNING_2022_10K: + BS: + curr-assets: + 2022: 7,453 million + 2021: 7,659 million + + curr-liabs: + 2022: 5,175 million + 2021: 4,806 million + + + CVSHEALTH_2018_10K: + BS: + fixed-assets: + 2018: 11,349 million # unreliable: often failing to be retrieved at all + 2017: 10,292 million # unreliable: often failing to be retrieved at all + + P&L: + rev: + 2018: 194,579 million # unreliable: often mistaken for Pharmacy Services 2018 revenue $134,128m or Retail/LTC 2018 revenue $83,989m + 2017: 184,786 million # unreliable: often mistaken for Pharmacy Services 2017 revenue $130,601m + 2016: 177,546 million + + + CVSHEALTH_2022_10K: + BS: + fixed-assets: + 2022: 12,873 million # unreliable + 2021: 12,896 million + + total-assets: + 2022: 228,275 million + 2021: 232,999 million + + CF: + capex: + 2022: 2,727 million or 2.7 billion + 2021: 2,520 million or 2.5 billion + 2020: 2,437 million or 2.4 billion + + P&L: + rev: + 2022: 322,467 million + 2021: 292,111 million + 2020: 268,706 million + + net: + 2022: 4,149 million + 2021: 7,910 million # unreliable + 2020: 7,179 million # unreliable + + + GENERALMILLS_2019_10K: + BS: + recvables: + 2019: 1,679.7 million + 2018: 1,684.2 million # unreliable + + invent: + 2019: 1,559.3 million + 2018: 1,642.2 million # unreliable + + payables: + 2019: 2,854.1 million + 2018: 2,746.2 million # unreliable + + P&L: + rev: + 2019: 16,865.2 million + 2018: 15,740.4 million + 2017: 15,619.8 million + + cogs: + 2019: 11,108.4 million + 2018: 10,304.8 million + 2017: 10,052.0 million + + + GENERALMILLS_2020_10K: + BS: + curr-assets: + 2020: 5,121.3 million + 2019: 4,186.5 million + + curr-liabs: + 2020: 7,491.5 million + 2019: 7,087.1 million + + CF: + op-cf: + 2020: 3,676.2 million + 2019: 2,807.0 million + 2018: 2,841.0 million + + capex: + 2020: 460.8 million + 2019: 537.6 million + 2018: 622.7 million + + + GENERALMILLS_2022_10K: + CF: + div: + 2022: 1,244.5 million + 2021: 1,246.4 million + 2020: 1,195.8 million + + P&L: + net: + 2022: 2,707.3 million # unreliable + 2021: 2,339.8 million # unreliable + 2020: 2,181.2 million # unreliable + + + JOHNSON_JOHNSON_2022_10K: + BS: + invent: + 2022: 12,483 million + 2021: 10,387 million + + P&L: + cogs: + 2022: 31,089 million + 2021: 29,855 million + 2020: 28,427 million + + + KRAFTHEINZ_2019_10K: + BS: + invent: + 2019: 2,721 million + 2018: 2,667 million + + P&L: + cogs: + 2019: 16,830 million + 2018: 17,347 million # unreliable + 2017: 17,043 million + + + LOCKHEEDMARTIN_2020_10K: + BS: + total-assets: + 2020: 50,710 million + 2019: 47,528 million + + P&L: + rev: + 2020: 65,398 million + 2019: 59,812 million # unreliable + 2018: 53,762 million + + + LOCKHEEDMARTIN_2021_10K: + BS: + curr-assets: + 2021: 19,815 million + 2020: 19,378 million + + curr-liabs: + 2021: 13,997 million + 2020: 13,933 million + + + LOCKHEEDMARTIN_2022_10K: + P&L: + rev: + 2022: 65,984 million + 2021: 67,044 million + 2020: 65,398 million + + + MGMRESORTS_2018_10K: + BS: + payables: + 2018: 302.578 million or 302.6 million or 0.3 billion + 2017: 255.028 million or 255 million or 0.26 billion or 0.3 billion + + + MGMRESORTS_2020_10K: + CF: + capex: + 2020: 270.579 million or 271 million + 2019: 739.006 million or 739 million # unreliable + 2018: 1,486.843 million or 1,487 million # unreliable + + P&L: + rev: + 2020: 5,162.082 million or 5,162 million + 2019: 12,899.672 million or 12,900 million # unreliable + 2018: 11,763.096 million or 11,763 million + + + # MGMRESORTS_2022Q4_EARNINGS: + # P&L: + # ebit: + # int: + + + MICROSOFT_2016_10K: + P&L: + cogs: + 2016: 32,780 million # unreliable + 2015: 33,038 million # unreliable + 2014: 27,078 million # unreliable + + + MICROSOFT_2023_10K: + BS: + st-debt: + 2023: 5,247 million + 2022: 2,749 million + + lt-debt: + 2023: 41,990 million + 2022: 47,032 million + + + NETFLIX_2015_10K: + CF: + d&a: + 2015: 62.283 million or 62 million # unreliable: often failing to be retrieved at all + 2014: 54.028 million or 54 million # unreliable: often failing to be retrieved at all + 2013: 48.374 million or 48 million # unreliable: often failing to be retrieved at all + + P&L: + rev: + 2015: 6,779.511 million or 6,780 million + 2014: 5,504.656 million or 5,505 million + 2013: 4,374.562 million or 4,375 million + + op: + 2015: 305.826 million or 306 million + 2014: 402.648 million or 403 million + 2013: 228.347 million or 228 million + + + NIKE_2018_10K: + P&L: + rev: + 2018: 36,397 million + 2017: 34,350 million + 2016: 32,376 million + + cogs: + 2018: 20,441 million + 2017: 19,038 million + 2016: 17,405 million + + + NIKE_2021_10K: + BS: + invent: + 2021: 6,854 million + 2020: 7,367 million + + P&L: + cogs: + 2021: 24,576 million + 2020: 21,162 million # unreliable + 2019: 21,643 million + + + PAYPAL_2022_10K: + BS: + curr-assets: + 2022: 57,517 million + 2021: 52,574 million + + curr-liabs: + 2022: 45,101 million + 2021: 43,029 million + + + PEPSICO_2021_10K: + CF: + capex: + 2021: 4,625 million + 2020: 4,240 million + 2019: 4,232 million + + + PEPSICO_2022_10K: + CF: + d&a: + 2022: 2,763 million # unreliable + 2021: 2,710 million # unreliable + 2020: 2,548 million + + capex: + 2022: 5,207 million + 2021: 4,625 million + 2020: 4,240 million + + P&L: + rev: + 2022: 86,392 million # unreliable + 2021: 79,474 million # unreliable + 2020: 70,372 million # unreliable + + op: + 2022: 11,512 million + 2021: 11,162 million + 2020: 10,080 million + + + PFIZER_2021_10K: + BS: + fixed-assets: + 2021: 14,882 million # unreliable + 2020: 13,745 million # unreliable + + + VERIZON_2022_10K: + BS: + cash-and-equiv: + 2022: 2,605 million + 2021: 2,921 million + + st-invest: + 2022: 0 (or not explicitly reported) + 2021: 0 (or not explicitly reported) + + recvables: + 2022: 24,506 million # unreliable + 2021: 23,846 million # unreliable + + invent: + 2022: 2,388 million + 2021: 3,055 million + + curr-assets: + 2022: 37,857 million + 2021: 36,728 million + + fixed-assets: + 2022: 107,434 million + 2021: 99,696 million + + total-assets: + 2022: 379,680 million + 2021: 366,596 million + + curr-liabs: + 2022: 50,171 million + 2021: 47,160 million + + CF: + capex: + 2022: 23,087 million # unreliable + 2021: 20,286 million # unreliable + 2020: 18,192 million # unreliable + + P&L: + rev: + 2022: 136,835 million + 2021: 133,613 million + 2020: 128,292 million + + net: + 2022: 21,256 million # unreliable + 2021: 22,065 million + 2020: 17,801 million + + + WALMART_2018_10K: + BS: + invent: + 2018: 43,783 million + 2017: 43,046 million + + payables: + 2018: 46,092 million + 2017: 41,433 million + + P&L: + cogs: + 2018: 373,396 million # unreliable + 2017: 361,256 million # unreliable + 2016: 360,984 million # unreliable + + + WALMART_2019_10K: + P&L: + rev: + 2019: 514,405 million # unreliable + 2018: 500,343 million # unreliable + 2017: 485,873 million + + op: + 2019: 21,957 million + 2018: 20,437 million + 2017: 22,764 million # unreliable + + + WALMART_2020_10K: + CF: + d&a: + 2020: 10,987 million + 2019: 10,678 million + 2018: 10,529 million + + P&L: + rev: + 2020: 523,964 million # unreliable + 2019: 514,405 million # unreliable + 2018: 500,343 million + + op: + 2020: 20,568 million + 2019: 21,957 million + 2018: 20,437 million diff --git a/examples/FinanceBench-Lite/util.py b/examples/FinanceBench-Lite/util.py new file mode 100644 index 000000000..3025beadb --- /dev/null +++ b/examples/FinanceBench-Lite/util.py @@ -0,0 +1,77 @@ +from __future__ import annotations + +from collections.abc import Callable +from dataclasses import dataclass +from functools import wraps +from typing import TYPE_CHECKING + +from loguru import logger +from tqdm import tqdm + +from data_and_knowledge import FbId, Answer, FB_IDS, DOC_NAMES_BY_FB_ID, QS_BY_FB_ID, OUTPUT_FILE_PATH, get_or_create_output_df # noqa: E501 +from eval import eval_correctness, eval_all +from log import switch_log_file + +if TYPE_CHECKING: + from pandas import DataFrame + + +type QAFunc = Callable[[FbId], Answer] + + +@dataclass +class enable_batch_qa_and_eval: # noqa: N801 + output_name: str + + def __call__(self, qa_func: QAFunc) -> QAFunc: + @wraps(wrapped=qa_func) + def decorated_qa_func(fb_id: FbId) -> Answer | None: + if 'all' in fb_id.lower(): + for _fb_id in tqdm(FB_IDS): + # run inferencing and preliminarily evaluate + eval_correctness(fb_id=_fb_id, answer=qa_func(_fb_id), output_name=self.output_name, human=False) + + # rigorously evaluate again, including human evaluation for difficult cases + eval_all(output_name=self.output_name, refresh=True) + return None + + if 'from:' in fb_id.lower(): + for _fb_id in tqdm(FB_IDS[FB_IDS.index(fb_id[5:]):]): + # run inferencing and preliminarily evaluate + eval_correctness(fb_id=_fb_id, answer=qa_func(_fb_id), output_name=self.output_name, human=False) + + # rigorously evaluate again, including human evaluation for difficult cases + eval_all(output_name=self.output_name, refresh=True) + return None + + # run inferencing and evaluate + eval_correctness(fb_id=fb_id, answer=(answer := qa_func(fb_id)), output_name=self.output_name, human=True) + return answer + + return decorated_qa_func + + +@dataclass +class log_qa_and_update_output_file: # noqa: N801 + output_name: str + + def __call__(self, qa_func: QAFunc) -> QAFunc: + @wraps(wrapped=qa_func) + def decorated_qa_func(fb_id: FbId) -> Answer: + switch_log_file(fb_id=fb_id, output_name=self.output_name) + + logger.info((question := f'\n{fb_id}\n{DOC_NAMES_BY_FB_ID[fb_id]}:\n{QS_BY_FB_ID[fb_id]}\n') + + '\n... solving process starting ...\n', + depth=1) + + logger.info(question + (f'\n{self.output_name.upper()}:\n' + f'{(answer := qa_func(fb_id)).replace('{', '{{').replace('}', '}}')}\n'), + depth=1) + + output_df: DataFrame = get_or_create_output_df() + output_df.loc[fb_id, self.output_name]: str = answer + output_df.to_csv(OUTPUT_FILE_PATH, index=True) + + return answer + + return decorated_qa_func From 215b058fcea6a8beca82a646b0fdd23131780587 Mon Sep 17 00:00:00 2001 From: radiangle Date: Wed, 2 Oct 2024 16:37:42 -0700 Subject: [PATCH 5/9] simplify knowledge and program stores --- examples/FinanceBench-Lite/README.md | 8 +- .../FinanceBench-Lite/knowledge-store.txt | 232 ---- examples/FinanceBench-Lite/program-store.yml | 1100 ----------------- 3 files changed, 3 insertions(+), 1337 deletions(-) diff --git a/examples/FinanceBench-Lite/README.md b/examples/FinanceBench-Lite/README.md index cea149ebb..93b529d8c 100644 --- a/examples/FinanceBench-Lite/README.md +++ b/examples/FinanceBench-Lite/README.md @@ -3,7 +3,7 @@ # OpenSSA-FinanceBench Lite benchmarking This is a lite version of the benchmarking of `OpenSSA` performance -on the `FinanceBench` dataset. +on the `FinanceBench` dataset. We will use 1 question from the dataset to demonstrate the use of `OpenSSA` with `DANA` architecture. ## [`FinanceBench` Dataset](https://github.com/patronus-ai/financebench/blob/main/financebench_sample_150.csv) @@ -16,8 +16,6 @@ __`make install`__. Create `.env` file following the `.env.template` and fill in necessary credentials. -__Solve__ the problem corresponding to a specific `financebench_id`: -__`make dana-solve id=...`__. (eg: `make dana-solve id=00807`) +__Solve__ the problem corresponding to a problem `00807` `financebench_id`: +__`make dana-solve id=00807`__. -- refer to `FinanceBench` dataset above for `financebench_id`s -and corresponding information diff --git a/examples/FinanceBench-Lite/knowledge-store.txt b/examples/FinanceBench-Lite/knowledge-store.txt index 5e2ab51b1..e623a859d 100644 --- a/examples/FinanceBench-Lite/knowledge-store.txt +++ b/examples/FinanceBench-Lite/knowledge-store.txt @@ -1,177 +1,3 @@ -FINANCIAL SYNONYMS -================== - -- "(Consolidated) Balance Sheet(s)", - "Statement(s) of (Consolidated) Financial Position", "(Consolidated) Statement(s) of Financial Position" - -- "(Consolidated) Cash Flow(s) Statement(s)", "(Consolidated) Statement(s) of Cash Flows" - -- "(Consolidated) Income Statement(s)", "Statement(s) of (Consolidated) Income", "(Consolidated) Statement(s) of Income", - "(Consolidated) Profit-and-Loss Statement(s)", "(Consolidated) P&L (Statement(s))", - "(Consolidated) Earnings Statement(s)", "Statement(s) of (Consolidated) Earnings", "(Consolidated) Statement(s) of Earnings", - "(Consolidated) Operations Statement(s)", "Statement(s) of (Consolidated) Operations", "(Consolidated) Statement(s) of Operations" - - -Balance-Sheet Line-Item Synonyms --------------------------------- - -- "Total Assets", "TA(s)" - -- "(Net) Fixed Assets", "(Net) FA(s)", - "(Net) Property, Plant & Equipment", "(Net) PP&E", "(Net) PPNE", - "(Net) Property & Equipment", "(Net) Plant & Equipment", "(Net) Property, Equipment & Intangibles" - -- "(Total) (Net) Inventory", "(Total) (Net) Inventories", - "(Total) (Net) Merchandise Inventory", "(Total) (Net) Merchandise Inventories" - -- "(Net) Accounts Receivable", "(Net) AR", "(Net) (Trade) Receivables" - -- "(Net) Accounts Payable", "(Net) AP" - - -Cash-Flow-Statement Line-Item Synonyms --------------------------------------- - -- "(Net) Cash (Flows) from Operations", "(Net) Cash (Flows) from Operating Activities", "(Net) Operating Cash Flows" - -- "(Net) Cash (Flows) from Investments", "(Net) Cash (Flows) from Investing Activities", "(Net) Investing Cash Flows" - -- "Capital Expenditure(s)", "CapEx", "Capital Spending", "Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)" - -- "(Net) Cash (Flows) from Financing", "(Net) Cash (Flows) from Financing Activities", "(Net) Financing Cash Flows" - - -Income-Statement / Profit-and-Loss- (P&L-) Statement / Earnings-Statement / Operations-Statement Line-Item Synonyms -------------------------------------------------------------------------------------------------------------------- - -- "(Total) (Net) (Operating) Revenue(s)", "(Total) (Net) Sales" - -- "(Total) Cost of Goods Sold", "(Total) COGS", "(Total) Cost of Sales", "(Total) Cost of Revenue" - -- "Gross Income (or Loss)", "Gross Profit (or Loss)", "Gross Earnings (or Loss(es))" - -- "Operating Expenditure(s)", "Operating Expenses", "OpEx" - -- "Selling, General & Administrative (Expenses)", "SG&A (Expenses)" - -- "(Unadjusted) Operating Income", "(Unadjusted) Operating Profit" - -- "Earnings before Interest, Tax, Depreciation & Amortization", "EBITDA" - -- "Depreciation & Amortization", "D&A", - "Depreciation & Amortization of Fixed Assets", "Depreciation & Amortization of Property, Plant & Equipment (PP&E)" - -- "Earnings before Interest & Tax", "EBIT" - -- "Net Income (Attributable to Shareholders)", "Net Profit (Attributable to Shareholders)" - - -FINANCIAL METRIC FORMULAS -========================= - - -Turnover Ratio Metric Formulas ------------------------------- - -`(Total) Asset Turnover Ratio` = ( - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` / - `average Total Assets, typically between two consecutive fiscal year-ends` -) - -`Fixed Asset Turnover Ratio` = ( - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` / - `average (Net) Fixed Assets, a.k.a. (Net) Property, Plant & Equipment (PP&E), typically between two consecutive fiscal year-ends` -) - -`Inventory Turnover Ratio, a.k.a. Inventory Conversion Ratio` = ( - `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` / - `average (Total) (Net) Inventory(ies), typically between two consecutive fiscal year-ends` -) - - -Adjusted Income Metric Formulas -------------------------------- - -`(Unadjusted) Earnings before Interest, Tax, Depreciation & Amortization, a.k.a. EBITDA` = ( - `(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))` + - `Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E))` -) - - -Profitability Margin Metric Formulas ------------------------------------- - -`Cost of Goods Sold (COGS) Margin` = ( - `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` / - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` -) - -`Gross (Income or Profit or Earnings) Margin` = ( - `Gross Income, a.k.a. Gross Profit, or Gross Earnings (or Loss(es))` / - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` -) - -`(Unadjusted) Operating (Income or Profit or Earnings) Margin` = ( - `(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))` / - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` -) - -`(Unadjusted) EBITDA Margin` = ( - `(Unadjusted) Earnings before Interest, Tax, Depreciation & Amortization, a.k.a. EBITDA` / - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` -) - -`Depreciation & Amortization (D&A) Margin` = ( - `Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E))` / - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` -) - -`EBIT Margin` = ( - `Earnings before Interest & Tax, a.k.a. EBIT` / - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` -) - -`Net (Income or Profit or Earnings) Margin` = ( - `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` / - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` -) - - -Profit-Utilization / Capital-Return Metric Formulas ---------------------------------------------------- - -`Interest Coverage Ratio` = `Earnings before Interest & Tax, a.k.a. EBIT` / `Interest Expense` - -`Effective (Income) Tax Rate` = `(Income) Tax Expense` / `Income or Profit or Earnings (or Loss(es)) before (Income) Tax(es)` - -`Dividend Payout Ratio` = ( - `Cash Dividends` / - `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` -) - -`Retention Ratio` = 1 - `Dividend Payout Ratio` - - -Capital-Intensiveness / Return-on-Capital Metric Formulas ---------------------------------------------------------- - -`Capital Intensity Ratio` = `Total Assets` / `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` - -`Return on (Total) Assets, a.k.a. RoA or RoTA` = ( - `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` / - `average Total Assets, typically between two consecutive fiscal year-ends` -) - - -Leverage Metric Formulas ------------------------- - -`Total Debt` = ( - `Long-Term Debt (EXCLUDING any current/short-term portion)` + - `Short-Term Debt, or Current Portion of (Long-Term) Debt` -) - - Liquidity Metric Formulas ------------------------- @@ -217,61 +43,3 @@ Liquidity Metric Formulas `Cash Conversion Cycle, a.k.a. CCC` = ( `Days Inventory Outstanding, a.k.a. DIO` + `Days Sales Oustanding, a.k.a. DSO` - `Days Payable Outstanding, a.k.a. DPO` ) - - -CAPITAL-INTENSIVENESS EVALUATION -================================ - -Capital-intensive businesses tend to have one or several of the following characteristics: - -- high `(Net) Fixed Assets, a.k.a. (Net) Property, Plant & Equipment (PP&E)` as proportion of `Total Assets`, - e.g., over 25%; - -- high `Total Assets` relative to `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`, - e.g., over 2 times; - -- high `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)` - relative to `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`, - e.g., over 10%; - - and/or - -- low `Return on (Total) Assets, a.k.a. RoA or RoTA`, - e.g., under 10% - - -FINANCIAL-ANALYSIS LANGUAGE/WORDING -=================================== - -- When we see the word "average" used before a Balance-Sheet line item in financial-analysis contexts, - it often means the simple arithmetic mean of that line item's values at two consecutive fiscal year-ends - -- When we see the word "growth" or the the phrase "top-line performance" - used in the context of product categories/segments or geographies, unless otherwise specified, - it often concerns the year-on-year proportional/relative growth rates in `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` - from such product categories/segments or geographies - -- When we see the word "margin" in financial-analysis contexts, - we usually need to divide a certain Profit-and-Loss (P&L) line item by the `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` - for the concerned financial reporting period(s) - -- When we see the word "turnover ratio" used after a Balance-Sheet line item in financial-analysis contexts, - we usually need to divide the `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` for the fiscal year - by the average of that Balance-Sheet line item between the latest fiscal year-end and the immediately-preceeding fiscal year-end - - -PHYSICAL-PRODUCT COMPANY PERFORMANCE METRICS vs. FINANCIAL-SERVICES COMPANY PERFORMANCE METRICS -=============================================================================================== - -Margin metrics are generally relevant/useful performance indicators for evaluating companies making physical products, -but generally irrelevant / not useful for evaluating companies delivering financial services - - -PULICLY LISTED & TRADED DEBT SECURITIES -======================================= - -If there are debt securities registered to trade on a national securities exchange under a company's name, -then such debt securities are enumerated on SEC filings' 1st page, alongside the company's public equity shares/stock. - -If only equity shares/stock are enumerated on SEC filings' 1st page, -then there are no debt securities registered to trade on a national securities exchange under a company's name. diff --git a/examples/FinanceBench-Lite/program-store.yml b/examples/FinanceBench-Lite/program-store.yml index b1cadf35b..36e65732c 100644 --- a/examples/FinanceBench-Lite/program-store.yml +++ b/examples/FinanceBench-Lite/program-store.yml @@ -1,635 +1,3 @@ -# TURNOVER METRIC EVALUATION -# ========================== - -asset-turnover-ratio: - task: |- - Calculate `(Total) Asset Turnover Ratio` of {COMPANY} for {PERIOD} annual fiscal period - as decimal value according to formula: - - `(Total) Asset Turnover Ratio` = ( - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` / - `average Total Assets, typically between two consecutive fiscal year-ends` - ) - - sub-htps: - - task: >- - What is value in dollars of `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` - (or most similar-meaning reported line item) - - on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for {PERIOD} annual fiscal period? - - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; - # retrieve individual starting & ending balance values only, without taking simple arithmetic average - # because RAG LMs may not be good at calculation & mathematical reasoning - - task: |- - What are values in dollars of `Total Assets` (or most similar-meaning reported line item) - - on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` - (or most similar-meaning statement) of {COMPANY} - (and NOT Balance Sheets of its acquired and/or divested companies) - - as at following two annual fiscal period ends: - - previous annual fiscal period end immediately preceding {PERIOD}; and - - current {PERIOD} annual fiscal period end? - - -fa-turnover-ratio: - task: |- - Calculate `Fixed Asset Turnover Ratio` of {COMPANY} for {PERIOD} annual fiscal period - as decimal value according to formula: - - `Fixed Asset Turnover Ratio` = ( - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` / - `average (Net) Fixed Assets, a.k.a. (Net) Property, Plant & Equipment (PP&E), typically between two consecutive fiscal year-ends` - ) - - sub-htps: - - task: >- - What is value in dollars of `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` - (or most similar-meaning reported line item) - - on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for {PERIOD} annual fiscal period? - - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; - # retrieve individual starting & ending balance values only, without taking simple arithmetic average - # because RAG LMs may not be good at calculation & mathematical reasoning - - task: |- - What are values in dollars of `(Net) Fixed Assets, a.k.a. (Net) Property, Plant & Equipment (PP&E)` - (or most similar-meaning reported line item) - - on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` - (or most similar-meaning statement) of {COMPANY} - (and NOT Balance Sheets of its acquired and/or divested companies) - - as at following two annual fiscal period ends: - - previous annual fiscal period end immediately preceding {PERIOD}; and - - current {PERIOD} annual fiscal period end? - - -inv-turnover-ratio: - task: |- - Calculate `Inventory Turnover Ratio` of {COMPANY} for {PERIOD} annual fiscal period - as decimal value according to formula: - - `Inventory Turnover Ratio, a.k.a. Inventory Conversion Ratio` = ( - `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` / - `average (Total) (Net) Inventory(ies), typically between two consecutive fiscal year-ends` - ) - - sub-htps: - - task: >- - What is value in dollars of - `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` - (or most similar-meaning reported line item) - - on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for {PERIOD} annual fiscal period? - - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; - # retrieve individual starting & ending balance values only, without taking simple arithmetic average - # because RAG LMs may not be good at calculation & mathematical reasoning - - task: |- - What are values in dollars of `(Total) (Net) Inventory(ies)` (or most similar-meaning reported line item) - - on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` - (or most similar-meaning statement) of {COMPANY} - (and NOT Balance Sheets of its acquired and/or divested companies) - - as at following two annual fiscal period ends: - - previous annual fiscal period end immediately preceding {PERIOD}; and - - current {PERIOD} annual fiscal period end? - - -# INCOME & PROFITABILITY METRIC EVALUATION -# ======================================== - -cogs-margin: - task: |- - Calculate `Cost of Goods Sold (COGS) Margin` of {COMPANY} for {PERIOD} fiscal period - as percentage value according to formula: - - `Cost of Goods Sold (COGS) Margin` = ( - `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` / - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` - ) - - sub-htps: - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; - # retrieve individual numerator & denominator balance values only, without taking division - # because RAG LMs may not be good at calculation & mathematical reasoning - - task: |- - What are values in dollars of: - - `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue`; and - - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` - (or most similar-meaning reported line items to those) - - on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for {PERIOD} fiscal period? - - -cogs-margin-3y-avg: - task: |- - Calculate 3-year average `Cost of Goods Sold (COGS) Margin` of {COMPANY} as percentage value - - sub-htps: - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; - # retrieve individual numerator & denominator balance values only, without taking division - # because RAG LMs may not be good at calculation & mathematical reasoning - - task: |- - What are values in dollars of: - - `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue`; and - - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` - (or most similar-meaning reported line items to those) - - on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for past 3 fiscal years? - - - task: >- - Calculate 3-year average `Cost of Goods Sold (COGS) Margin` - by dividing sum of `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` - by sum of `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`, - and return division result as percentage value - - -gross-margin-comp: - task: >- - Calculate change and assess degradation/improvement in `Gross (Income or Profit or Earnings) Margin` of {COMPANY} - from corresponding one-year-preceding previous annual fiscal period to current {PERIOD} annual fiscal period - - sub-htps: - - task: |- - Calculate `Gross (Income or Profit or Earnings) Margin` of {COMPANY} as percentage values according to formula: - - `Gross (Income or Profit or Earnings) Margin` = ( - `Gross Income, a.k.a. Gross Profit, or Gross Earnings (or Loss(es))` / - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` - ) - - for following two annual fiscal periods: - - previous annual fiscal period immediately preceding {PERIOD}; and - - current {PERIOD} annual fiscal period - - sub-htps: - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; - # retrieve individual numerator & denominator balance values only, without taking division - # because RAG LMs may not be good at calculation & mathematical reasoning - - task: |- - What are values in dollars of: - - `Gross Income, a.k.a. Gross Profit, or Gross Earnings (or Loss(es))`; and - - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` - (or most similar-meaning reported line items to those) - - on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for following two annual fiscal periods: - - previous annual fiscal period immediately preceding {PERIOD}; and - - current {PERIOD} annual fiscal period? - - - task: >- - Calculate difference between two calculated `Gross (Income or Profit or Earnings) Margin` percentage values - and assess whether `Gross (Income or Profit or Earnings) Margin` meaningfully degraded or improved - - -op-margin-3y-avg: - task: >- - Calculate 3-year average `(Unadjusted) Operating (Income or Profit or Earnings) Margin` of {COMPANY} as percentage value - - sub-htps: - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; - # retrieve individual numerator & denominator balance values only, without taking division - # because RAG LMs may not be good at calculation & mathematical reasoning - - task: |- - What are values in dollars of: - - `(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))`; and - - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` - (or most similar-meaning reported line items to those) - - on one same `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for past 3 fiscal years? - - - task: >- - Calculate 3-year average `(Unadjusted) Operating (Income or Profit or Earnings) Margin` - by dividing sum of `(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))` - by sum of `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`, - and return division result as percentage value - - -op-margin-comp: - task: >- - Calculate change and assess degradation/improvement in - `(Unadjusted) Operating (Income or Profit or Earnings) Margin` of {COMPANY} - from corresponding one-year-preceding previous annual fiscal period to current {PERIOD} annual fiscal period - - sub-htps: - - task: |- - Calculate `(Unadjusted) Operating (Income or Profit or Earnings) Margin` of {COMPANY} - as percentage values according to formula: - - `(Unadjusted) Operating (Income or Profit or Earnings) Margin` = ( - `(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))` / - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` - ) - - for following two annual fiscal periods: - - previous annual fiscal period immediately preceding {PERIOD}; and - - current {PERIOD} annual fiscal period - - sub-htps: - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; - # retrieve individual numerator & denominator balance values only, without taking division - # because RAG LMs may not be good at calculation & mathematical reasoning - - task: |- - What are values in dollars of: - - `(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))`; and - - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` - (or most similar-meaning reported line items to those) - - on one same `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for following two annual fiscal periods: - - previous annual fiscal period immediately preceding {PERIOD}; and - - current {PERIOD} annual fiscal period? - - - task: >- - Calculate difference between two calculated `(Unadjusted) Operating (Income or Profit or Earnings) Margin` percentage values - and assess whether `(Unadjusted) Operating (Income or Profit or Earnings) Margin` meaningfully degraded or improved - - -da-margin: - task: |- - Calculate `Depreciation & Amortization (D&A) Margin` of {COMPANY} for {PERIOD} fiscal period - as percentage value according to formula: - - `Depreciation & Amortization (D&A) Margin` = ( - `Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E))` / - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` - ) - - sub-htps: - - task: >- - What is value in dollars of `Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E))` - (or most similar-meaning reported line item) - - on `(Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows` - (or most similar-meaning statement) - - of {COMPANY} for {PERIOD} fiscal period? - - - task: |- - What is value in dollars of `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` - (or most similar-meaning reported line item) - - on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for {PERIOD} fiscal period? - - -ebitda: - task: >- - Calculate `(Unadjusted) Earnings before Interest, Tax, Depreciation & Amortization, a.k.a. EBITDA` - of {COMPANY} for {PERIOD} fiscal period in dollars according to formula: - - `(Unadjusted) Earnings before Interest, Tax, Depreciation & Amortization, a.k.a. EBITDA` = ( - `(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))` + - `Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E))` - ) - - sub-htps: - - task: >- - What is value in dollars of `(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))` - (or most similar-meaning reported line item) - - on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for {PERIOD} fiscal period? - - # retrieving CapEx as extra, as it is asked for sometimes - - task: |- - What are values in dollars of: - - `Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E))`; and - - `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)` - (or most similar-meaning reported line items to those) - - on `(Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows` - (or most similar-meaning statement) - - of {COMPANY} for {PERIOD} fiscal period? - - -ebitda-margin: - task: |- - Calculate `(Unadjusted) EBITDA Margin` of {COMPANY} for {PERIOD} fiscal period as percentage value according to formula: - - `(Unadjusted) EBITDA Margin` = ( - (`(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))` + - `Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E))`) - / `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` - ) - - sub-htps: - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency - - task: |- - What are values in dollars of: - - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`; and - - `(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))` - (or most similar-meaning reported line items to those) - - on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for {PERIOD} fiscal period? - - - task: >- - What is value in dollars of `Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E))` - (or most similar-meaning reported line item) - - on `(Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows` - (or most similar-meaning statement) - - of {COMPANY} for {PERIOD} fiscal period? - - - task: |- - Calculate `(Unadjusted) EBITDA Margin` of {COMPANY} for {PERIOD} fiscal period - as percentage value according to formula: - - `(Unadjusted) EBITDA Margin` = ( - (`(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))` + - `Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E))`) - / `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` - ) - - -ebitda-margin-3y-avg: - task: >- - Calculate 3-year average `(Unadjusted) EBITDA Margin` of {COMPANY} as percentage value - - sub-htps: - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; - - task: |- - What are values in dollars of: - - `(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))`; and - - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` - (or most similar-meaning reported line items to those) - - on one same `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for past 3 fiscal years? - - - task: >- - What are values in dollars of `Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E))` - (or most similar-meaning reported line item) - - on one same `(Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows` - (or most similar-meaning statement) - - of {COMPANY} for past 3 fiscal years? - - - task: >- - Calculate 3-year average `(Unadjusted) EBITDA Margin` - by adding sum of `(Unadjusted) Operating Income, a.k.a. Operating Profit, or Operating Earnings (or Loss(es))` - to sum of `Depreciation & Amortization, a.k.a. D&A (of Fixed Assets or Property, Plant & Equipment (PP&E))`, - then dividing that combined sum by sum of `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`, - and return division result as percentage value - - -net-margin-3y-avg: - task: >- - Calculate 3-year average `Net (Income or Profit or Earnings) Margin` of {COMPANY} as percentage value - - sub-htps: - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; - # retrieve individual numerator & denominator balance values only, without taking division - # because RAG LMs may not be good at calculation & mathematical reasoning - - task: |- - What are values in dollars of: - - `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)`; and - - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` - (or most similar-meaning reported line items to those) - - on one same `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for past 3 fiscal years? - - - task: >- - Calculate 3-year average `Net (Income or Profit or Earnings) Margin` - by dividing sum of `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` - by sum of `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`, - and return division result as percentage value - - -# PROFIT-UTILIZATION / CAPITAL-RETURN METRIC EVALUATION -# ===================================================== - -int-cov-ratio: - task: >- - Calculate `Interest Coverage Ratio` of {COMPANY} for {PERIOD} fiscal period as decimal value according to formula: - - `Interest Coverage Ratio` = `Earnings before Interest & Tax, a.k.a. EBIT` / `Interest Expense` - - sub-htps: - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; - # retrieve individual numerator & denominator balance values only, without taking division - # because RAG LMs may not be good at calculation & mathematical reasoning - - task: |- - What are values in dollars of: - - `Earnings before Interest & Tax, a.k.a. EBIT`; and - - `Interest Expense` - (or most similar-meaning reported line items to those) - - on one same `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for {PERIOD} fiscal period? - - - task: >- - Calculate `Interest Coverage Ratio` of {COMPANY} for {PERIOD} fiscal period as decimal value according to formula: - - `Interest Coverage Ratio` = `Earnings before Interest & Tax, a.k.a. EBIT` / `Interest Expense` - - (note that if `Earnings before Interest & Tax, a.k.a. EBIT` is negative, - it is conventional to say `Interest Coverage Ratio` is zero) - - -effective-tax-rate-comp: - task: >- - Assess change in `Effective (Income) Tax Rate` of {COMPANY} - from corresponding one-year-preceding previous annual fiscal period to current {PERIOD} annual fiscal period - - sub-htps: - - task: >- - Calculate `Effective (Income) Tax Rate` of {COMPANY} for {PERIOD} fiscal period as percentage value according to formula: - - `Effective (Income) Tax Rate` = `(Income) Tax Expense` / `Income or Profit or Earnings (or Loss(es)) before (Income) Tax(es)` - - for following two annual fiscal periods: - - previous annual fiscal period immediately preceding {PERIOD}; and - - current {PERIOD} annual fiscal period - - sub-htps: - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; - # retrieve individual numerator & denominator balance values only, without taking division - # because RAG LMs may not be good at calculation & mathematical reasoning - - task: |- - What are values in dollars of: - - `(Income) Tax Expense`; and - - `Income or Profit or Earnings (or Loss(es)) before (Income) Tax(es)` - (or most similar-meaning reported line items to those) - - on one same `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for following two annual fiscal periods: - - previous annual fiscal period immediately preceding {PERIOD}; and - - current {PERIOD} annual fiscal period? - - -div-payout-ratio: - task: |- - Calculate `Dividend Payout Ratio` of {COMPANY} for {PERIOD} fiscal period as decimal value according to formula: - - `Dividend Payout Ratio` = ( - `Cash Dividends` / - `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` - ) - - sub-htps: - - task: >- - What is value in dollars of `Cash Dividends` (or most similar-meaning reported line item) - - on `(Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows` - (or most similar-meaning statement) - - of {COMPANY} for {PERIOD} fiscal period? - - - task: |- - What is value in dollars of `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` - (or most similar-meaning reported line item) - - on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for {PERIOD} fiscal period? - - -retention-ratio: - task: |- - Calculate `Retention Ratio` of {COMPANY} for {PERIOD} fiscal period as decimal value according to formula: - - `Retention Ratio` = 1 - ( - `Cash Dividends` / - `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` - ) - - sub-htps: - - task: >- - What is value in dollars of `Cash Dividends` (or most similar-meaning reported line item) - - on `(Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows` - (or most similar-meaning statement) - - of {COMPANY} for {PERIOD} fiscal period? - - - task: |- - What is value in dollars of `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` - (or most similar-meaning reported line item) - - on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for {PERIOD} fiscal period? - - -# LIQUIDITY METRIC EVALUATION -# =========================== - -net-work-cap: - task: |- - Calculate `(Net) Working Capital` of {COMPANY} as at {PERIOD} fiscal period end, in dollars according to formula: - - `(Net) Working Capital` = `(Total) Current Assets` - `(Total) Current Liabilities` - - and assess whether `(Net) Working Capital` is positive or negative - - sub-htps: - - task: |- - What is value in dollars of `(Total) Current Assets` (or most similar-meaning reported line item) - - on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` - (or most similar-meaning statement) of {COMPANY} - (and NOT Balance Sheets of its acquired and/or divested companies) - - as at {PERIOD} fiscal period end? - - - task: |- - What is value in dollars of `(Total) Current Liabilities` (or most similar-meaning reported line item) - - on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` - (or most similar-meaning statement) of {COMPANY} - (and NOT Balance Sheets of its acquired and/or divested companies) - - as at {PERIOD} fiscal period end? - - -work-cap-ratio: - task: |- - Calculate `Working Capital Ratio` of {COMPANY} as at {PERIOD} fiscal period end as decimal value according to formula: - - `Working Capital Ratio` = `(Total) Current Assets` / `(Total) Current Liabilities` - - sub-htps: - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; - # retrieve individual numerator & denominator balance values only, without taking division - # because RAG LMs may not be good at calculation & mathematical reasoning - - task: |- - What are values in dollars of: - - `(Total) Current Assets`; and - - `(Total) Current Liabilities` - (or most similar-meaning reported line items to those) - - on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` - (or most similar-meaning statement) of {COMPANY} - (and NOT Balance Sheets of its acquired and/or divested companies) - - as at {PERIOD} fiscal period end? - - quick-ratio: task: Assess liquidity health of {COMPANY} through its `Quick Ratio` as at {PERIOD} fiscal period end @@ -666,471 +34,3 @@ quick-ratio: Compare calculated `Quick Ratio` decimal value against 1.00 and make assessment: - `Quick Ratio` >= 1.00: liquidity is healthy; or - `Quick Ratio` < 1.00: liquidity is not very healthy - - -quick-ratio-comp: - task: >- - Calculate change and assess degradation/improvement in `Quick Ratio` of {COMPANY} - from corresponding one-year-preceding previous annual fiscal period end to current {PERIOD} annual fiscal period end - - sub-htps: - - task: |- - Calculate `Quick Ratio` of {COMPANY} as decimal values according to formula: - - `Quick Ratio` = ( - (`Cash & Cash Equivalents` + - `Short-Term Investments or (Current) Marketable Securities` + - `(Net) Accounts Receivable, a.k.a. (Net) (Trade) Receivables`) - / `(Total) Current Liabilities` - ) - - as at following two annual fiscal period ends: - - previous annual fiscal period end immediately preceding {PERIOD}; and - - current {PERIOD} annual fiscal period end - - sub-htps: - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; - # retrieve individual numerator & denominator balance values only, without taking division - # because RAG LMs may not be good at calculation & mathematical reasoning - - task: |- - What are values in dollars of: - - `Cash & Cash Equivalents`; - - `Short-Term Investments or (Current) Marketable Securities`; - - `(Net) Accounts Receivable, a.k.a. (Net) (Trade) Receivables`; and - - `(Total) Current Liabilities` - (or most similar-meaning reported line items to those) - - on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` - (or most similar-meaning statement) of {COMPANY} - (and NOT Balance Sheets of its acquired and/or divested companies) - - as at following two annual fiscal period ends: - - previous annual fiscal period end immediately preceding {PERIOD}; and - - current {PERIOD} annual fiscal period end? - - - task: >- - Calculate difference between two calculated `Quick Ratio` decimal values - and assess whether `Quick Ratio` meaningfully degraded or improved - - -fcf: - task: |- - Calculate `Free Cash Flow, a.k.a. FCF` of {COMPANY} for {PERIOD} fiscal period in dollars according to formula: - - `Free Cash Flow, a.k.a. FCF` = ( - `(Net) Cash Flows from Operations, a.k.a. (Net) Operating Cash Flows` - - `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)` - ) - - sub-htps: - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; - # retrieve individual balance values only, without taking difference - # because RAG LMs may not be good at calculation & mathematical reasoning - - task: |- - What are values in dollars of: - - `(Net) Cash Flows from Operations, a.k.a. (Net) Operating Cash Flows`; and - - `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)` - (or most similar-meaning reported line items to those) - - on one same `(Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows` - (or most similar-meaning statement) - - of {COMPANY} for {PERIOD} fiscal period? - - -fcf-conv-comp: - task: >- - Calculate change and assess degradation/improvement in `Free Cash Flow Conversion Ratio` of {COMPANY} - from corresponding one-year-preceding previous annual fiscal period to current {PERIOD} annual fiscal period - - sub-htps: - - task: |- - Calculate `Free Cash Flow Conversion Ratio` of {COMPANY} as percentage values according to formula: - - `Free Cash Flow Conversion Ratio` = ( - (`(Net) Cash Flows from Operations, a.k.a. (Net) Operating Cash Flows` - - `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)`) - / `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` - ) - - for following two annual fiscal periods: - - previous annual fiscal period immediately preceding {PERIOD}; and - - current {PERIOD} annual fiscal period - - sub-htps: - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; - # retrieve individual balance values only, without taking difference - # because RAG LMs may not be good at calculation & mathematical reasoning - - task: |- - What are values in dollars of: - - `(Net) Cash Flows from Operations, a.k.a. (Net) Operating Cash Flows`; and - - `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)` - (or most similar-meaning reported line items to those) - - on one same `(Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows` - (or most similar-meaning statement) - - of {COMPANY} for following two annual fiscal periods: - - previous annual fiscal period immediately preceding {PERIOD}; and - - current {PERIOD} annual fiscal period? - - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency - - task: |- - What are values in dollars of `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` - (or most similar-meaning reported line item) - - on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for following two annual fiscal periods: - - previous annual fiscal period immediately preceding {PERIOD}; and - - current {PERIOD} annual fiscal period? - - - task: >- - Calculate difference between two calculated `Free Cash Flow Conversion Ratio` percentage values - and assess whether `Free Cash Flow Conversion Ratio` meaningfully degraded or improved - - -op-cf-ratio: - task: |- - Calculate Operating Cash Flow Ratio of {COMPANY} for {PERIOD} annual fiscal period - as decimal value according to formula: - - `Operating Cash Flow Ratio` = ( - `(Net) Cash Flows from Operations, a.k.a. (Net) Operating Cash Flows` - / `(Total) Current Liabilities` - ) - - sub-htps: - - task: >- - What is value in dollars of `(Net) Cash Flows from Operations, a.k.a. (Net) Operating Cash Flows` - (or most similar-meaning reported line item) - - on `(Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows` - (or most similar-meaning statement) - - of {COMPANY} for {PERIOD} annual fiscal period? - - - task: >- - What is value in dollars of `(Total) Current Liabilities` (or most similar-meaning reported line item) - - on `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` - (or most similar-meaning statement) of {COMPANY} - (and NOT Balance Sheets of its acquired and/or divested companies) - - as at {PERIOD} annual fiscal period end? - - -days-payable-outstanding: - task: |- - Calculate `Days Payable Outstanding, a.k.a. DPO` for {COMPANY} for {PERIOD} annual fiscal period - as decimal value according to formula: - - `Days Payable Outstanding, a.k.a. DPO` = ( - 365 * `average Accounts Payable, typically between two consecutive fiscal year-ends` - / (`(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` + - `change in (Total) (Net) Inventory(ies), typically between two consecutive fiscal year-ends`) - ) - - sub-htps: - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; - # retrieve individual starting & ending balance values only, without taking difference or simple arithmetic average - # because RAG LMs may not be good at calculation & mathematical reasoning - - task: |- - What are values in dollars of: - - `Accounts Payable`; and - - `(Total) (Net) Inventory(ies)` - (or most similar-meaning reported line items to those) - - on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` - (or most similar-meaning statement) of {COMPANY} - (and NOT Balance Sheets of its acquired and/or divested companies) - - as at following two annual fiscal period ends: - - previous annual fiscal period end immediately preceding {PERIOD}; and - - current {PERIOD} annual fiscal period end? - - # TODO: remove/simplify: back-up task in case above fails - - task: |- - What are values in dollars of `Accounts Payable` (or most similar-meaning reported line item) - - on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` - (or most similar-meaning statement) of {COMPANY} - (and NOT Balance Sheets of its acquired and/or divested companies) - - as at following two annual fiscal period ends: - - previous annual fiscal period end immediately preceding {PERIOD}; and - - current {PERIOD} annual fiscal period end? - - - task: >- - What is value in dollars of - `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` - (or most similar-meaning reported line item) - - on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for {PERIOD} annual fiscal period? - - -cash-conv-cyc: - task: |- - Calculate `Cash Conversion Cycle, a.k.a. CCC` of {COMPANY} for {PERIOD} annual fiscal period - as decimal value according to formula: - - `Cash Conversion Cycle, a.k.a. CCC` = ( - `Days Inventory Outstanding, a.k.a. DIO` + `Days Sales Oustanding, a.k.a. DSO` - `Days Payable Outstanding, a.k.a. DPO` - ) - - sub-htps: - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; - # retrieve individual starting & ending balance values only, without taking difference or simple arithmetic average - # because RAG LMs may not be good at calculation & mathematical reasoning - - task: |- - What are values in dollars of: - - `(Total) (Net) Inventory(ies)`; - - `(Net) Accounts Receivable, a.k.a. (Net) (Trade) Receivables`; and - - `Accounts Payable` - (or most similar-meaning reported line items to those) - - on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` - (or most similar-meaning statement) of {COMPANY} - (and NOT Balance Sheets of its acquired and/or divested companies) - - as at following two annual fiscal period ends: - - previous annual fiscal period end immediately preceding {PERIOD}; and - - current {PERIOD} annual fiscal period end? - - - task: >- - What are values in dollars of: - - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`; and - - `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` - (or most similar-meaning reported line items to those) - - on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for {PERIOD} annual fiscal period? - - - task: |- - Calculate `Days Inventory Outstanding, a.k.a. DIO` for {COMPANY} for {PERIOD} annual fiscal period - as decimal value according to formula: - - `Days Inventory Outstanding, a.k.a. DIO` = ( - 365 * `average (Total) (Net) Inventory(ies), typically between two consecutive fiscal year-ends` - / `(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` - ) - - - task: |- - Calculate `Days Sales Oustanding, a.k.a. DSO` for {COMPANY} for {PERIOD} annual fiscal period - as decimal value according to formula: - - `Days Sales Oustanding, a.k.a. DSO` = ( - 365 * `average (Net) Accounts Receivable, a.k.a. (Net) (Trade) Receivables, typically between two consecutive fiscal year-ends` - / `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` - ) - - - task: |- - Calculate `Days Payable Outstanding, a.k.a. DPO` for {COMPANY} for {PERIOD} annual fiscal period - as decimal value according to formula: - - `Days Payable Outstanding, a.k.a. DPO` = ( - 365 * `average Accounts Payable, typically between two consecutive fiscal year-ends` - / (`(Total) Cost of Goods Sold, a.k.a. (Total) COGS, or (Total) Cost of Sales, or (Total) Cost of Revenue` + - `change in (Total) (Net) Inventory(ies), typically between two consecutive fiscal year-ends`) - ) - - -# LEVERAGE METRIC EVALUATION -# ========================== - -debt-comp: - task: >- - Calculate change and assess increase/decrease in `Total Debt` of {COMPANY} - from corresponding one-year-preceding previous annual fiscal period end to current {PERIOD} annual fiscal period end - - sub-htps: - - task: |- - Calculate `Total Debt` of {COMPANY} in dollar values according to formula: - - `Total Debt` = ( - `Long-Term Debt (EXCLUDING any current/short-term portion)` + - `Short-Term Debt, or Current Portion of (Long-Term) Debt` - ) - - as at following two annual fiscal period ends: - - previous annual fiscal period end immediately preceding {PERIOD}; and - - current {PERIOD} annual fiscal period end - - sub-htps: - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; - # retrieve individual balance values only, without taking sum - # because RAG LMs may not be good at calculation & mathematical reasoning - - task: |- - What are values in dollars of: - - `Long-Term Debt (EXCLUDING any current/short-term portion)`; and - - `Short-Term Debt, or Current Portion of (Long-Term) Debt` - (or most similar-meaning reported line items to those) - - on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` - (or most similar-meaning statement) of {COMPANY} - (and NOT Balance Sheets of its acquired and/or divested companies) - - as at following two annual fiscal period ends: - - previous annual fiscal period end immediately preceding {PERIOD}; and - - current {PERIOD} annual fiscal period end? - - - task: >- - Calculate difference between two calculated `Total Debt` dollar values - and assess whether `Total Debt` meaningfully degraded or improved - - -# CAPITAL-INTENSIVENESS METRIC EVALUATION -# ======================================= - -capex-as-pct-of-rev-3y-avg: - task: >- - Calculate 3-year average of - `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)` - as proportion of `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` - for {COMPANY} as percentage value - - sub-htps: - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency - - task: >- - What are values in dollars of - `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)` - (or most similar-meaning reported line item) - - on `(Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows` - (or most similar-meaning statement) - - of {COMPANY} for past 3 fiscal years? - - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency - - task: >- - What are values in dollars of `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales` - (or most similar-meaning reported line item) - - on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for past 3 fiscal years? - - - task: >- - Calculate 3-year average of Capital Expenditure(s) (CapEx) as percentage of Revenue - by dividing sum of `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)` - by sum of `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`, - and return division result as percentage value - - -roa: - task: |- - Calculate `Return on (Total) Assets, a.k.a. RoA or RoTA` of {COMPANY} for {PERIOD} annual fiscal period - as percentage value according to formula: - - `Return on (Total) Assets, a.k.a. RoA or RoTA` = ( - `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` / - `average Total Assets, typically between two consecutive fiscal year-ends` - ) - - sub-htps: - - task: >- - What is value in dollars of `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` - (or most similar-meaning reported line item) - - on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for {PERIOD} annual fiscal period? - - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; - # retrieve individual balance values only, without taking simple arithmetic average - # because RAG LMs may not be good at calculation & mathematical reasoning - - task: |- - What are values in dollars of `Total Assets` (or most similar-meaning reported line item) - - on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` - (or most similar-meaning statement) of {COMPANY} - (and NOT Balance Sheets of its acquired and/or divested companies) - - as at following two annual fiscal period ends: - - previous annual fiscal period end immediately preceding {PERIOD}; and - - current {PERIOD} annual fiscal period end? - - -cap-intens: - task: >- - Assess whether {COMPANY} is capital-intensive according to {PERIOD} fiscal period data - - sub-htps: - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency; - # retrieve individual starting & ending balance values only, without taking division or simple arithmetic average - # because RAG LMs may not be good at calculation & mathematical reasoning - - task: |- - What are values in dollars of: - - `(Net) Fixed Assets, a.k.a. (Net) Property, Plant & Equipment (PP&E)`; and - - `Total Assets` - (or most similar-meaning reported line item to those) - - on one same `(Consolidated) Balance Sheet, a.k.a. Statement of (Consolidated) Financial Position` - (or most similar-meaning statement) of {COMPANY} - (and NOT Balance Sheets of its acquired and/or divested companies) - - as at following two annual fiscal period ends: - - previous annual fiscal period end immediately preceding {PERIOD}; and - - current {PERIOD} annual fiscal period end? - - - task: >- - What is value in dollars of - `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)` - (or most similar-meaning reported line item) - - on `(Consolidated) Cash Flow(s) Statement(s), a.k.a. (Consolidated) Statement(s) of Cash Flows` - (or most similar-meaning statement) - - of {COMPANY} for {PERIOD} fiscal period? - - # 1 single Retrieval task for multiple quantities on same statement, for both efficiency & mutual consistency - - task: |- - What are values in dollars of: - - `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`; and - - `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` - (or most similar-meaning reported line items to those) - - on `(Consolidated) Income Statement, a.k.a. (Consolidated) Profit-and-Loss (P&L) Statement, - or (Consolidated) Earnings Statement, or (Consolidated) Operations Statement` - (or most similar-meaning statement) - - of {COMPANY} for {PERIOD} fiscal period? - - - task: |- - Assess whether {COMPANY} is capital-intensive according to {PERIOD} fiscal period data - - Capital-intensive businesses tend to have one or several of the following characteristics: - - - high `(Net) Fixed Assets, a.k.a. (Net) Property, Plant & Equipment (PP&E)` as proportion of `Total Assets`, - e.g., over 25%; - - - high `Total Assets` relative to `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`, - e.g., over 2 times; - - - high `Capital Expenditure(s), a.k.a. CapEx, or Capital Spending, or Property, Plant & Equipment (PP&E) Expenditure(s)/Purchase(s)` - relative to `(Total) (Net) (Operating) Revenue(s), a.k.a. (Total) (Net) Sales`, - e.g., over 10%; - - and/or - - - low `Return on (Total) Assets, a.k.a. RoA or RoTA`, - e.g., under 10%, - according to formula: - - `Return on (Total) Assets, a.k.a. RoA or RoTA` = ( - `Net Income, a.k.a. Net Profit, or Net Earnings (or Loss(es)) (Attributable to Shareholders)` / - `average Total Assets, typically between two consecutive fiscal year-ends` - ) From 8960f61cc9c6bdeec9a544fc863364099b82150a Mon Sep 17 00:00:00 2001 From: radiangle Date: Wed, 2 Oct 2024 17:02:24 -0700 Subject: [PATCH 6/9] update FinanceBench-Lite example --- examples/FinanceBench-Lite/README.md | 38 +++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/examples/FinanceBench-Lite/README.md b/examples/FinanceBench-Lite/README.md index 93b529d8c..638517d2f 100644 --- a/examples/FinanceBench-Lite/README.md +++ b/examples/FinanceBench-Lite/README.md @@ -7,7 +7,7 @@ on the `FinanceBench` dataset. We will use 1 question from the dataset to demons ## [`FinanceBench` Dataset](https://github.com/patronus-ai/financebench/blob/main/financebench_sample_150.csv) -## Running Aitomatic SSA benchmarking project +## Getting Started with DANA Agent Have Python 3.12 installed. @@ -19,3 +19,39 @@ Create `.env` file following the `.env.template` and fill in necessary credentia __Solve__ the problem corresponding to a problem `00807` `financebench_id`: __`make dana-solve id=00807`__. + +**Question**: + +`Does 3M have a reasonably healthy liquidity profile based on its quick ratio for Q2 of FY2023? If the quick ratio is not relevant to measure liquidity, please state that and explain why.` + +**Knowledge** + +To solve this question, you can add knowledge related to `liquidity`. See the example below: + +- Liquidity Metric Formulas + - `(Net) Working Capital` = `(Total) Current Assets` - `(Total) Current Liabilities` + - `Working Capital Ratio` = `(Total) Current Assets` / `(Total) Current Liabilities` + +Go to `knowledge-store.txt` to add relevant knowledge yourself and see how it helps the agent to solve this question. + +**Program** + +With the above-provided knowledge, the program we can provide to the agent could be as below: +- Goal: To assess liquidity health of a company, calculate `quick ratio` + - Task: To calculate `quick ratio`, use this formula + `Quick Ratio` = ( + (`Cash & Cash Equivalents` + + `Short-Term Investments or (Current) Marketable Securities` + + `(Net) Accounts Receivable, a.k.a. (Net) (Trade) Receivables`) + / `(Total) Current Liabilities` + ) + - Sub-task 1: What are values in dollars of `Cash & Cash Equivalents`? + - Sub-task 2: What are values in dollars of `Short-Term Investments or (Current) Marketable Securities`? + - Sub-task 3: What are values in dollars of `(Net) Accounts Receivable, a.k.a. (Net) (Trade) Receivables`? + - Sub-task 4: What are values in dolloars of `(Total) Current Liabilities`? + +Go to `program-store.yml` to see details of the program yourself! You can experimenting with different plans to see how it helps the agent solve the problem as well. + +## Advancing DANA Agent with Domain Knowledge and Program Store +- To solve the question with added domain knowledge, run `make dana-solve-w-knowledge id=00807` +- To solve the question with added domain knowledge and program store, run `make dana-solve-w-knowledge-and-prog-store id=00807` From 3252329705653d3881ce27c9f71c29ac0aff935c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?The=20Vinh=20LUONG=20=28L=C6=AF=C6=A0NG=20Th=E1=BA=BF=20Vi?= =?UTF-8?q?nh=29?= Date: Sat, 5 Oct 2024 23:10:45 -0700 Subject: [PATCH 7/9] update examples/FinanceBench-lite/README --- examples/FinanceBench-Lite/README.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/examples/FinanceBench-Lite/README.md b/examples/FinanceBench-Lite/README.md index 638517d2f..2857b1395 100644 --- a/examples/FinanceBench-Lite/README.md +++ b/examples/FinanceBench-Lite/README.md @@ -3,7 +3,7 @@ # OpenSSA-FinanceBench Lite benchmarking This is a lite version of the benchmarking of `OpenSSA` performance -on the `FinanceBench` dataset. We will use 1 question from the dataset to demonstrate the use of `OpenSSA` with `DANA` architecture. +on the `FinanceBench` dataset. We will use 1 question from the dataset to demonstrate the use of `OpenSSA` with `DANA` architecture. ## [`FinanceBench` Dataset](https://github.com/patronus-ai/financebench/blob/main/financebench_sample_150.csv) @@ -19,26 +19,26 @@ Create `.env` file following the `.env.template` and fill in necessary credentia __Solve__ the problem corresponding to a problem `00807` `financebench_id`: __`make dana-solve id=00807`__. - -**Question**: +### Question `Does 3M have a reasonably healthy liquidity profile based on its quick ratio for Q2 of FY2023? If the quick ratio is not relevant to measure liquidity, please state that and explain why.` -**Knowledge** +### Knowledge To solve this question, you can add knowledge related to `liquidity`. See the example below: - Liquidity Metric Formulas - - `(Net) Working Capital` = `(Total) Current Assets` - `(Total) Current Liabilities` - - `Working Capital Ratio` = `(Total) Current Assets` / `(Total) Current Liabilities` + - `(Net) Working Capital` = `(Total) Current Assets` - `(Total) Current Liabilities` + - `Working Capital Ratio` = `(Total) Current Assets` / `(Total) Current Liabilities` Go to `knowledge-store.txt` to add relevant knowledge yourself and see how it helps the agent to solve this question. -**Program** +### Program + +With the above-provided knowledge, the program we can provide to the agent could be as below: -With the above-provided knowledge, the program we can provide to the agent could be as below: - Goal: To assess liquidity health of a company, calculate `quick ratio` - - Task: To calculate `quick ratio`, use this formula + - Task: To calculate `quick ratio`, use this formula `Quick Ratio` = ( (`Cash & Cash Equivalents` + `Short-Term Investments or (Current) Marketable Securities` + @@ -53,5 +53,6 @@ With the above-provided knowledge, the program we can provide to the agent could Go to `program-store.yml` to see details of the program yourself! You can experimenting with different plans to see how it helps the agent solve the problem as well. ## Advancing DANA Agent with Domain Knowledge and Program Store + - To solve the question with added domain knowledge, run `make dana-solve-w-knowledge id=00807` - To solve the question with added domain knowledge and program store, run `make dana-solve-w-knowledge-and-prog-store id=00807` From 99576a7fee6f64c06843ff224f21ce652cf70b59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?The=20Vinh=20LUONG=20=28L=C6=AF=C6=A0NG=20Th=E1=BA=BF=20Vi?= =?UTF-8?q?nh=29?= Date: Sat, 5 Oct 2024 23:13:21 -0700 Subject: [PATCH 8/9] update examples/FinanceBench-lite/README --- examples/FinanceBench-Lite/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/FinanceBench-Lite/README.md b/examples/FinanceBench-Lite/README.md index 2857b1395..6b27245db 100644 --- a/examples/FinanceBench-Lite/README.md +++ b/examples/FinanceBench-Lite/README.md @@ -1,4 +1,4 @@ - + # OpenSSA-FinanceBench Lite benchmarking From 80df9a07fec3670734c548c1cb8d093db6f48bd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?The=20Vinh=20LUONG=20=28L=C6=AF=C6=A0NG=20Th=E1=BA=BF=20Vi?= =?UTF-8?q?nh=29?= Date: Mon, 7 Oct 2024 06:33:04 -0700 Subject: [PATCH 9/9] update README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f27c43a24..74770e1eb 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,8 @@ # OpenSSA: Neurosymbolic Agentic AI for Industrial Problem-Solving OpenSSA is an open-source neurosymbolic agentic AI framework -designed to solve complex, high-stakes problems in industries like semiconductor, manufacturing and finance, -where consistency, accuracy and deterministic outcomes are essential. +designed to solve complex, high-stakes problems in industries like semiconductor, energy and finance, +where consistency, accuracy and deterministic outcomes are paramount. At the core of OpenSSA is the [__Domain-Aware Neurosymbolic Agent (DANA)__](https://arxiv.org/abs/2410.02823) architecture, advancing generative AI from basic pattern matching and information retrieval to industrial-grade problem solving.