From 107ad03ffb85ca368997e58c3fbd3df59205f635 Mon Sep 17 00:00:00 2001 From: jose-donato <43375532+jose-donato@users.noreply.github.com> Date: Sat, 19 Mar 2022 12:03:55 +0000 Subject: [PATCH] Adds command to get anchor protocol stats (#1517) * added feature * updated image and failing test * typo * added command to test script Co-authored-by: jmaslek --- .../cryptocurrency/defi/cryptosaurio_model.py | 65 ++++++ .../cryptocurrency/defi/cryptosaurio_view.py | 86 ++++++++ .../cryptocurrency/defi/defi_controller.py | 47 ++++- .../cryptocurrency/defi/terraengineer_view.py | 4 +- scripts/test_crypto_defi.gst | 3 +- ...c0x8kr3sq8226myf4nmanmn2mrk9s5s9wsnz].yaml | 117 +++++++++++ ...nqgvg567ypvsvk6rwsga3srp7e3lg6u0elp8].yaml | 55 +++++ .../test_display_anchor_data.yaml | 119 +++++++++++ ...kc0x8kr3sq8226myf4nmanmn2mrk9s5s9wsnz].csv | 190 ++++++++++++++++++ .../defi/test_cryptosaurio_model.py | 19 ++ .../defi/test_cryptosaurio_view.py | 25 +++ .../test_display_anchor_data.txt | 10 + .../test_defi_controller/test_print_help.txt | 4 +- .../cryptocurrency/defi/anchor/_index.md | 22 ++ website/data/menu/main.yml | 4 +- 15 files changed, 764 insertions(+), 6 deletions(-) create mode 100644 gamestonk_terminal/cryptocurrency/defi/cryptosaurio_model.py create mode 100644 gamestonk_terminal/cryptocurrency/defi/cryptosaurio_view.py create mode 100644 tests/gamestonk_terminal/cryptocurrency/defi/cassettes/test_cryptosaurio_model/test_get_anchor_data[terra13kc0x8kr3sq8226myf4nmanmn2mrk9s5s9wsnz].yaml create mode 100644 tests/gamestonk_terminal/cryptocurrency/defi/cassettes/test_cryptosaurio_model/test_get_anchor_data[terra1tmnqgvg567ypvsvk6rwsga3srp7e3lg6u0elp8].yaml create mode 100644 tests/gamestonk_terminal/cryptocurrency/defi/cassettes/test_cryptosaurio_view/test_display_anchor_data.yaml create mode 100644 tests/gamestonk_terminal/cryptocurrency/defi/csv/test_cryptosaurio_model/test_get_anchor_data[terra13kc0x8kr3sq8226myf4nmanmn2mrk9s5s9wsnz].csv create mode 100644 tests/gamestonk_terminal/cryptocurrency/defi/test_cryptosaurio_model.py create mode 100644 tests/gamestonk_terminal/cryptocurrency/defi/test_cryptosaurio_view.py create mode 100644 tests/gamestonk_terminal/cryptocurrency/defi/txt/test_cryptosaurio_view/test_display_anchor_data.txt create mode 100644 website/content/terminal/cryptocurrency/defi/anchor/_index.md diff --git a/gamestonk_terminal/cryptocurrency/defi/cryptosaurio_model.py b/gamestonk_terminal/cryptocurrency/defi/cryptosaurio_model.py new file mode 100644 index 00000000000..afb35e74ea8 --- /dev/null +++ b/gamestonk_terminal/cryptocurrency/defi/cryptosaurio_model.py @@ -0,0 +1,65 @@ +"""Cryptosaurio model""" +__docformat__ = "numpy" + +import logging +from typing import Tuple, Any +import pandas as pd +import requests + +from gamestonk_terminal.decorators import log_start_end + +logger = logging.getLogger(__name__) + +api_url = "https://barney.cryptosaurio.com" + + +@log_start_end(log=logger) +def get_anchor_data(address: str = "") -> Tuple[Any, Any, str]: + """Returns anchor protocol earnings data of a certain terra address + [Source: https://cryptosaurio.com/] + + Parameters + ---------- + address : str + Terra address. Valid terra addresses start with 'terra' + Returns + ------- + Tuple: + - pandas.DataFrame: Earnings over time in UST + - pandas.DataFrame: History of transactions + - str: Overall statistics + """ + + if not address.startswith("terra"): + raise Exception( + "Select a valid address. Valid terra addresses start with 'terra'" + ) + + response = requests.get(f"{api_url}/get-anchor-protocol-data-v2/{address}") + if response.status_code != 200: + raise Exception(f"Status code: {response.status_code}. Reason: {response.text}") + + data = response.json() + df = pd.DataFrame(reversed(data["historicalData"])) + df["time"] = pd.to_datetime(df["time"]) + df["yield"] = df["yield"].astype("float64") + df_deposits = pd.DataFrame(data["deposits"], columns=["out", "fee", "time"]) + df_deposits["out"] = df_deposits["out"].astype("float64") + df_deposits["fee"] = df_deposits["fee"].astype("float64") + df_deposits["time"] = pd.to_datetime(df_deposits["time"]) + df_deposits["Type"] = df_deposits.apply( + lambda row: "Deposit" if row.out > 0 else "Withdrawal", axis=1 + ) + df_deposits.columns = ["Amount [UST]", "Fee [UST]", "Date", "Type"] + df_deposits = df_deposits[["Type", "Amount [UST]", "Fee [UST]", "Date"]] + + stats_str = f"""Current anchor APY is {data['currentRate']}% +Deposit amount in Anchor Earn of address {address} is {data["totalYield"]["ustHoldings"]} UST +which is generating approximately: +- {data["estimatedYield"]["perHour"]} UST hourly +- {data["estimatedYield"]["perDay"]} UST daily +- {data["estimatedYield"]["perWeek"]} UST weekly +- {data["estimatedYield"]["perMonth"]} UST monthly +- {data["estimatedYield"]["perYear"]} UST yearly""" + + return df, df_deposits, stats_str diff --git a/gamestonk_terminal/cryptocurrency/defi/cryptosaurio_view.py b/gamestonk_terminal/cryptocurrency/defi/cryptosaurio_view.py new file mode 100644 index 00000000000..bff53cf74b9 --- /dev/null +++ b/gamestonk_terminal/cryptocurrency/defi/cryptosaurio_view.py @@ -0,0 +1,86 @@ +"""Cryptosaurio View""" +__docformat__ = "numpy" + +import logging +import os +from typing import List, Optional +import matplotlib.pyplot as plt +from gamestonk_terminal import config_terminal as cfg +from gamestonk_terminal.config_plot import PLOT_DPI +from gamestonk_terminal.cryptocurrency.defi import ( + cryptosaurio_model, +) +from gamestonk_terminal.decorators import log_start_end +from gamestonk_terminal.helper_funcs import ( + export_data, + plot_autoscale, + print_rich_table, +) +from gamestonk_terminal.rich_config import console + + +logger = logging.getLogger(__name__) + + +@log_start_end(log=logger) +def display_anchor_data( + address: str = "", + export: str = "", + show_transactions: bool = False, + external_axes: Optional[List[plt.Axes]] = None, +) -> None: + """Displays anchor protocol earnings data of a certain terra address + [Source: https://cryptosaurio.com/] + + Parameters + ---------- + asset : str + Terra asset {ust,luna,sdt} + address : str + Terra address. Valid terra addresses start with 'terra' + show_transactions : bool + Flag to show history of transactions in Anchor protocol for address specified. Default False + export : str + Export dataframe data to csv,json,xlsx file + external_axes : Optional[List[plt.Axes]], optional + External axes (1 axis is expected in the list), by default None + """ + + df, df_deposits, stats_str = cryptosaurio_model.get_anchor_data(address=address) + + # This plot has 1 axis + if not external_axes: + _, ax = plt.subplots(figsize=plot_autoscale(), dpi=PLOT_DPI) + else: + if len(external_axes) != 1: + logger.error("Expected list of one axis item.") + console.print("[red]Expected list of one axis item./n[/red]") + return + (ax,) = external_axes + print("") + print(stats_str) + print("") + + if show_transactions: + print_rich_table( + df_deposits, + headers=list(df_deposits.columns), + show_index=False, + title="Transactions history in Anchor Earn", + ) + + ax.plot(df["time"], df["yield"]) + ax.set_ylabel("Earnings Value [UST]") + ax.set_title("Earnings in Anchor Earn") + + cfg.theme.style_primary_axis(ax) + + if not external_axes: + cfg.theme.visualize_output() + + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + "anchor", + df, + ) diff --git a/gamestonk_terminal/cryptocurrency/defi/defi_controller.py b/gamestonk_terminal/cryptocurrency/defi/defi_controller.py index c27e9e0e38d..d651a8cdd26 100644 --- a/gamestonk_terminal/cryptocurrency/defi/defi_controller.py +++ b/gamestonk_terminal/cryptocurrency/defi/defi_controller.py @@ -13,6 +13,7 @@ from gamestonk_terminal import feature_flags as gtff from gamestonk_terminal.cryptocurrency.defi import ( coindix_model, coindix_view, + cryptosaurio_view, defipulse_view, defirate_view, graph_model, @@ -69,6 +70,7 @@ class DefiController(BaseController): "sratio", "sreturn", "lcsc", + "anchor", ] PATH = "/crypto/defi/" @@ -131,10 +133,53 @@ class DefiController(BaseController): sratio Displays terra blockchain staking ratio history sreturn Displays terra blockchain staking returns history [src][Smartstake][/src] - lcsc Displays Luna circulating supply changes[/cmds] + lcsc Displays Luna circulating supply changes +[src][CryptoSaurio][/src] + anchor Display anchor earnings data[/cmds] """ console.print(text=help_text, menu="Cryptocurrency - Decentralized Finance") + @log_start_end(log=logger) + def call_anchor(self, other_args: List[str]): + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="anchor", + description=""" + Displays anchor protocol earnings data of a certain terra address + --transactions flag can be passed to show history of previous transactions + [Source: https://cryptosaurio.com/] + """, + ) + parser.add_argument( + "--address", + dest="address", + type=check_terra_address_format, + help="Terra address. Valid terra addresses start with 'terra'", + required="-h" not in other_args, + ) + parser.add_argument( + "--transactions", + action="store_true", + help="Flag to show transactions history in anchor earn", + dest="transactions", + default=False, + ) + + if other_args and not other_args[0][0] == "-": + other_args.insert(0, "--address") + + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED + ) + + if ns_parser: + cryptosaurio_view.display_anchor_data( + show_transactions=ns_parser.transactions, + export=ns_parser.export, + address=ns_parser.address, + ) + @log_start_end(log=logger) def call_aterra(self, other_args: List[str]): parser = argparse.ArgumentParser( diff --git a/gamestonk_terminal/cryptocurrency/defi/terraengineer_view.py b/gamestonk_terminal/cryptocurrency/defi/terraengineer_view.py index 31ed4401251..0d691665894 100644 --- a/gamestonk_terminal/cryptocurrency/defi/terraengineer_view.py +++ b/gamestonk_terminal/cryptocurrency/defi/terraengineer_view.py @@ -33,7 +33,7 @@ def display_terra_asset_history( external_axes: Optional[List[plt.Axes]] = None, ) -> None: """Displays the 30-day history of specified asset in terra address - [Source: https://docs.llama.fi/api] + [Source: https://terra.engineer/] Parameters ---------- @@ -86,7 +86,7 @@ def display_anchor_yield_reserve( export: str = "", external_axes: Optional[List[plt.Axes]] = None ) -> None: """Displays the 30-day history of the Anchor Yield Reserve. - [Source: https://docs.llama.fi/api] + [Source: https://terra.engineer/] Parameters ---------- diff --git a/scripts/test_crypto_defi.gst b/scripts/test_crypto_defi.gst index 63eb0bb2c73..de68042de90 100644 --- a/scripts/test_crypto_defi.gst +++ b/scripts/test_crypto_defi.gst @@ -15,4 +15,5 @@ pools swaps ayr aterra --asset luna --address terra1tmnqgvg567ypvsvk6rwsga3srp7e3lg6u0elp8 -exit \ No newline at end of file +anchor terra1tmnqgvg567ypvsvk6rwsga3srp7e3lg6u0elp8 +exit diff --git a/tests/gamestonk_terminal/cryptocurrency/defi/cassettes/test_cryptosaurio_model/test_get_anchor_data[terra13kc0x8kr3sq8226myf4nmanmn2mrk9s5s9wsnz].yaml b/tests/gamestonk_terminal/cryptocurrency/defi/cassettes/test_cryptosaurio_model/test_get_anchor_data[terra13kc0x8kr3sq8226myf4nmanmn2mrk9s5s9wsnz].yaml new file mode 100644 index 00000000000..6043741a166 --- /dev/null +++ b/tests/gamestonk_terminal/cryptocurrency/defi/cassettes/test_cryptosaurio_model/test_get_anchor_data[terra13kc0x8kr3sq8226myf4nmanmn2mrk9s5s9wsnz].yaml @@ -0,0 +1,117 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.27.1 + method: GET + uri: https://barney.cryptosaurio.com/get-anchor-protocol-data-v2/terra13kc0x8kr3sq8226myf4nmanmn2mrk9s5s9wsnz + response: + body: + string: !!binary | + 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 + headers: + Access-Control-Allow-Headers: + - Content-Type,If-None-Match + Access-Control-Allow-Methods: + - GET,PUT,PATCH + Access-Control-Allow-Origin: + - '*' + Access-Control-Expose-Headers: + - Etag + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 6ee01a03ef235d1f-LIS + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Fri, 18 Mar 2022 18:41:18 GMT + Expect-CT: + - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" + NEL: + - '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}' + Report-To: + - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=m3JG55jhXo%2F6aYPNNU3vddLvCWgQ5TgZ2YNDx0rJo9hSmhOib8LybeeKWmpFc4uFWuJNXsyAoS2kdBwP4S31vUwJmGRkXGjljj9FYIxelvYPW%2BKG2LlEkUBcLXS5IF4mNLZy2tgNxu8362DTGBIaICv07LNoeA%3D%3D"}],"group":"cf-nel","max_age":604800}' + Server: + - cloudflare + Transfer-Encoding: + - chunked + Via: + - 1.1 vegur, 1.1 vegur + X-Frame-Options: + - SAMEORIGIN + alt-svc: + - h3=":443"; ma=86400, h3-29=":443"; ma=86400 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/gamestonk_terminal/cryptocurrency/defi/cassettes/test_cryptosaurio_model/test_get_anchor_data[terra1tmnqgvg567ypvsvk6rwsga3srp7e3lg6u0elp8].yaml b/tests/gamestonk_terminal/cryptocurrency/defi/cassettes/test_cryptosaurio_model/test_get_anchor_data[terra1tmnqgvg567ypvsvk6rwsga3srp7e3lg6u0elp8].yaml new file mode 100644 index 00000000000..9aa3608670a --- /dev/null +++ b/tests/gamestonk_terminal/cryptocurrency/defi/cassettes/test_cryptosaurio_model/test_get_anchor_data[terra1tmnqgvg567ypvsvk6rwsga3srp7e3lg6u0elp8].yaml @@ -0,0 +1,55 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.27.1 + method: GET + uri: https://barney.cryptosaurio.com/get-anchor-protocol-data-v2/terra1tmnqgvg567ypvsvk6rwsga3srp7e3lg6u0elp8 + response: + body: + string: "\n\n\n\n\nApplication Error\n\n\n\n\n\n\n" + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 6ee0151308065d43-LIS + Cache-Control: + - no-cache, no-store + Connection: + - keep-alive + Content-Type: + - text/html; charset=utf-8 + Date: + - Fri, 18 Mar 2022 18:38:25 GMT + Expect-CT: + - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" + NEL: + - '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}' + Report-To: + - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=XyEZWHcMzbVFcTQ4BIxOFS7c1IuflqL3vPaBTun%2BRnyYJi5MJKwbWFppXcYoIIC2pT2N24MrHhO2JEvvpU7VpGxWpvbFuZ8hWBww1xFP%2FhHymthSjcRds7x82PnpgjIGUPJmh1KtLbl4%2Bli%2B6oDvpnRvRU9soQ%3D%3D"}],"group":"cf-nel","max_age":604800}' + Server: + - cloudflare + Transfer-Encoding: + - chunked + alt-svc: + - h3=":443"; ma=86400, h3-29=":443"; ma=86400 + status: + code: 503 + message: Service Unavailable +version: 1 diff --git a/tests/gamestonk_terminal/cryptocurrency/defi/cassettes/test_cryptosaurio_view/test_display_anchor_data.yaml b/tests/gamestonk_terminal/cryptocurrency/defi/cassettes/test_cryptosaurio_view/test_display_anchor_data.yaml new file mode 100644 index 00000000000..195a7cad158 --- /dev/null +++ b/tests/gamestonk_terminal/cryptocurrency/defi/cassettes/test_cryptosaurio_view/test_display_anchor_data.yaml @@ -0,0 +1,119 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.27.1 + method: GET + uri: https://barney.cryptosaurio.com/get-anchor-protocol-data-v2/terra13kc0x8kr3sq8226myf4nmanmn2mrk9s5s9wsnz + response: + body: + string: !!binary | + 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 + 8PfpDwAA//8DAEzb2aZlMgAA + headers: + Access-Control-Allow-Headers: + - Content-Type,If-None-Match + Access-Control-Allow-Methods: + - GET,PUT,PATCH + Access-Control-Allow-Origin: + - '*' + Access-Control-Expose-Headers: + - Etag + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 6ee011defc3603d6-LIS + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Fri, 18 Mar 2022 18:35:45 GMT + Expect-CT: + - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" + NEL: + - '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}' + Report-To: + - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=clAM5GqiOl%2BKfZB8u4PUSa1MsvfuitJbP5ZCJ9hrGsnucJwehwl9QzumkjVgYQPCc1nf56P3kwQnutlDTF4LY7UqUGMHBiFqukeIqobJruWy5nlhRHSbaSO3tMkgc%2BYxE4dusKCVR4Re2%2BXf5gutGw1LsRxj%2FA%3D%3D"}],"group":"cf-nel","max_age":604800}' + Server: + - cloudflare + Transfer-Encoding: + - chunked + Via: + - 1.1 vegur, 1.1 vegur + X-Frame-Options: + - SAMEORIGIN + alt-svc: + - h3=":443"; ma=86400, h3-29=":443"; ma=86400 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/gamestonk_terminal/cryptocurrency/defi/csv/test_cryptosaurio_model/test_get_anchor_data[terra13kc0x8kr3sq8226myf4nmanmn2mrk9s5s9wsnz].csv b/tests/gamestonk_terminal/cryptocurrency/defi/csv/test_cryptosaurio_model/test_get_anchor_data[terra13kc0x8kr3sq8226myf4nmanmn2mrk9s5s9wsnz].csv new file mode 100644 index 00000000000..ff080ec8390 --- /dev/null +++ b/tests/gamestonk_terminal/cryptocurrency/defi/csv/test_cryptosaurio_model/test_get_anchor_data[terra13kc0x8kr3sq8226myf4nmanmn2mrk9s5s9wsnz].csv @@ -0,0 +1,190 @@ +,time,yield +0,2021-09-11,0.0 +1,2021-09-12,1.63 +2,2021-09-13,4.24 +3,2021-09-14,6.87 +4,2021-09-15,9.7 +5,2021-09-16,12.47 +6,2021-09-17,14.9 +7,2021-09-18,17.55 +8,2021-09-19,20.69 +9,2021-09-20,23.31 +10,2021-09-21,25.89 +11,2021-09-22,28.75 +12,2021-09-23,31.12 +13,2021-09-24,34.21 +14,2021-09-25,36.51 +15,2021-09-26,39.63 +16,2021-09-27,42.13 +17,2021-09-28,44.96 +18,2021-09-29,47.5 +19,2021-09-30,50.11 +20,2021-10-01,51.77 +21,2021-10-02,54.53 +22,2021-10-03,56.58 +23,2021-10-04,59.43 +24,2021-10-05,61.94 +25,2021-10-06,64.26 +26,2021-10-07,66.84 +27,2021-10-08,69.18 +28,2021-10-09,71.5 +29,2021-10-10,74.08 +30,2021-10-11,76.86 +31,2021-10-12,79.81 +32,2021-10-13,82.62 +33,2021-10-14,85.48 +34,2021-10-15,88.43 +35,2021-10-16,91.09 +36,2021-10-17,94.2 +37,2021-10-18,97.18 +38,2021-10-19,100.27 +39,2021-10-20,103.2 +40,2021-10-21,106.04 +41,2021-10-22,109.77 +42,2021-10-23,113.2 +43,2021-10-24,116.97 +44,2021-10-25,120.34 +45,2021-10-26,123.84 +46,2021-10-27,127.64 +47,2021-10-28,131.12 +48,2021-10-29,134.71 +49,2021-10-30,137.95 +50,2021-10-31,141.9 +51,2021-11-01,145.93 +52,2021-11-02,148.58 +53,2021-11-03,152.27 +54,2021-11-04,156.76 +55,2021-11-05,159.14 +56,2021-11-06,162.5 +57,2021-11-07,166.38 +58,2021-11-08,170.61 +59,2021-11-09,173.56 +60,2021-11-10,177.4 +61,2021-11-11,181.52 +62,2021-11-12,185.44 +63,2021-11-13,189.58 +64,2021-11-14,193.22 +65,2021-11-15,197.01 +66,2021-11-16,201.18 +67,2021-11-17,204.81 +68,2021-11-18,209.26 +69,2021-11-19,212.81 +70,2021-11-20,217.18 +71,2021-11-21,221.17 +72,2021-11-22,224.9 +73,2021-11-23,229.15 +74,2021-11-24,233.65 +75,2021-11-25,236.8 +76,2021-11-26,240.14 +77,2021-11-27,244.8 +78,2021-11-28,249.15 +79,2021-11-29,252.66 +80,2021-11-30,256.98 +81,2021-12-01,261.86 +82,2021-12-02,264.28 +83,2021-12-03,268.58 +84,2021-12-04,272.57 +85,2021-12-05,277.38 +86,2021-12-06,280.61 +87,2021-12-07,284.36 +88,2021-12-08,289.02 +89,2021-12-09,292.88 +90,2021-12-10,296.59 +91,2021-12-11,300.2 +92,2021-12-12,303.89 +93,2021-12-13,309.16 +94,2021-12-14,311.78 +95,2021-12-15,315.18 +96,2021-12-16,318.2 +97,2021-12-17,321.6 +98,2021-12-18,325.36 +99,2021-12-19,328.17 +100,2021-12-20,331.01 +101,2021-12-21,335.59 +102,2021-12-22,337.6 +103,2021-12-23,341.1 +104,2021-12-24,344.42 +105,2021-12-25,347.81 +106,2021-12-26,351.08 +107,2021-12-27,354.47 +108,2021-12-28,357.45 +109,2021-12-29,360.59 +110,2021-12-30,363.86 +111,2021-12-31,367.18 +112,2022-01-01,370.48 +113,2022-01-02,373.34 +114,2022-01-03,377.09 +115,2022-01-04,380.19 +116,2022-01-05,384.1 +117,2022-01-06,386.81 +118,2022-01-07,390.08 +119,2022-01-08,393.7 +120,2022-01-09,396.95 +121,2022-01-10,400.19 +122,2022-01-11,403.71 +123,2022-01-12,406.17 +124,2022-01-13,409.21 +125,2022-01-14,412.64 +126,2022-01-15,415.01 +127,2022-01-16,418.44 +128,2022-01-17,422.22 +129,2022-01-18,424.45 +130,2022-01-19,428.3 +131,2022-01-20,431.53 +132,2022-01-21,434.88 +133,2022-01-22,436.75 +134,2022-01-23,439.34 +135,2022-01-24,441.78 +136,2022-01-25,444.4 +137,2022-01-26,446.89 +138,2022-01-27,449.43 +139,2022-01-28,451.83 +140,2022-01-29,453.79 +141,2022-01-30,456.69 +142,2022-01-31,458.6 +143,2022-02-01,461.27 +144,2022-02-02,463.79 +145,2022-02-03,466.12 +146,2022-02-04,468.88 +147,2022-02-05,471.2 +148,2022-02-06,473.91 +149,2022-02-07,476.85 +150,2022-02-08,479.4 +151,2022-02-09,482.24 +152,2022-02-10,485.44 +153,2022-02-11,488.47 +154,2022-02-12,490.97 +155,2022-02-13,494.59 +156,2022-02-14,497.94 +157,2022-02-15,500.97 +158,2022-02-16,504.32 +159,2022-02-17,507.0 +160,2022-02-18,510.29 +161,2022-02-19,513.29 +162,2022-02-20,516.26 +163,2022-02-21,519.09 +164,2022-02-22,522.0 +165,2022-02-23,524.44 +166,2022-02-24,527.48 +167,2022-02-25,529.94 +168,2022-02-26,532.49 +169,2022-02-27,535.38 +170,2022-02-28,538.9 +171,2022-03-01,541.5 +172,2022-03-02,544.28 +173,2022-03-03,547.37 +174,2022-03-04,550.59 +175,2022-03-05,552.93 +176,2022-03-06,555.94 +177,2022-03-07,558.78 +178,2022-03-08,561.83 +179,2022-03-09,564.73 +180,2022-03-10,567.68 +181,2022-03-11,570.58 +182,2022-03-12,573.48 +183,2022-03-13,576.72 +184,2022-03-14,579.63 +185,2022-03-15,582.49 +186,2022-03-16,585.53 +187,2022-03-17,588.52 +188,2022-03-18,590.71 diff --git a/tests/gamestonk_terminal/cryptocurrency/defi/test_cryptosaurio_model.py b/tests/gamestonk_terminal/cryptocurrency/defi/test_cryptosaurio_model.py new file mode 100644 index 00000000000..c8a632d535e --- /dev/null +++ b/tests/gamestonk_terminal/cryptocurrency/defi/test_cryptosaurio_model.py @@ -0,0 +1,19 @@ +# IMPORTATION STANDARD + +# IMPORTATION THIRDPARTY +import pytest + +# IMPORTATION INTERNAL +from gamestonk_terminal.cryptocurrency.defi import cryptosaurio_model + + +@pytest.mark.vcr +@pytest.mark.parametrize( + "address", + [("terra13kc0x8kr3sq8226myf4nmanmn2mrk9s5s9wsnz")], +) +def test_get_anchor_data(address, recorder): + df, _, _ = cryptosaurio_model.get_anchor_data( + address=address, + ) + recorder.capture(df) diff --git a/tests/gamestonk_terminal/cryptocurrency/defi/test_cryptosaurio_view.py b/tests/gamestonk_terminal/cryptocurrency/defi/test_cryptosaurio_view.py new file mode 100644 index 00000000000..efcce728bb0 --- /dev/null +++ b/tests/gamestonk_terminal/cryptocurrency/defi/test_cryptosaurio_view.py @@ -0,0 +1,25 @@ +# IMPORTATION STANDARD + +# IMPORTATION THIRDPARTY +import pytest + +# IMPORTATION INTERNAL +from gamestonk_terminal.cryptocurrency.defi import cryptosaurio_view + + +@pytest.mark.vcr +@pytest.mark.record_stdout +def test_display_anchor_data(mocker): + # MOCK EXPORT_DATA + mocker.patch( + target="gamestonk_terminal.cryptocurrency.defi.cryptosaurio_view.export_data" + ) + + # MOCK VISUALIZE_OUTPUT + mocker.patch( + target="gamestonk_terminal.helper_classes.TerminalStyle.visualize_output" + ) + + cryptosaurio_view.display_anchor_data( + address="terra13kc0x8kr3sq8226myf4nmanmn2mrk9s5s9wsnz" + ) diff --git a/tests/gamestonk_terminal/cryptocurrency/defi/txt/test_cryptosaurio_view/test_display_anchor_data.txt b/tests/gamestonk_terminal/cryptocurrency/defi/txt/test_cryptosaurio_view/test_display_anchor_data.txt new file mode 100644 index 00000000000..c0e90d9abcf --- /dev/null +++ b/tests/gamestonk_terminal/cryptocurrency/defi/txt/test_cryptosaurio_view/test_display_anchor_data.txt @@ -0,0 +1,10 @@ + +Current anchor APY is 19.41% +Deposit amount in Anchor Earn of address terra13kc0x8kr3sq8226myf4nmanmn2mrk9s5s9wsnz is 5471.90 UST +which is generating approximately: +- 0.12 UST hourly +- 2.91 UST daily +- 20.43 UST weekly +- 88.53 UST monthly +- 1062.35 UST yearly + diff --git a/tests/gamestonk_terminal/cryptocurrency/defi/txt/test_defi_controller/test_print_help.txt b/tests/gamestonk_terminal/cryptocurrency/defi/txt/test_defi_controller/test_print_help.txt index 2c57f00a0dd..ab0c49835af 100644 --- a/tests/gamestonk_terminal/cryptocurrency/defi/txt/test_defi_controller/test_print_help.txt +++ b/tests/gamestonk_terminal/cryptocurrency/defi/txt/test_defi_controller/test_print_help.txt @@ -27,5 +27,7 @@ sratio Displays terra blockchain staking ratio history sreturn Displays terra blockchain staking returns history [Smartstake] - lcsc Displays Luna circulating supply changes + lcsc Displays Luna circulating supply changes +[CryptoSaurio] + anchor Display anchor earnings data diff --git a/website/content/terminal/cryptocurrency/defi/anchor/_index.md b/website/content/terminal/cryptocurrency/defi/anchor/_index.md new file mode 100644 index 00000000000..1b99f48dbd7 --- /dev/null +++ b/website/content/terminal/cryptocurrency/defi/anchor/_index.md @@ -0,0 +1,22 @@ +``` +usage: anchor [--transactions] [--address ADDRESS] [-h] [--export {csv,json,xlsx}] +``` + +Displays anchor protocol earnings data of a certain terra address [Source: https://cryptosaurio.com/] + +``` +optional arguments: + --transactions Flag to show transactions history in anchor earn + --address ADDRESS Terra address. Valid terra addresses start with 'terra' (default: None) + -h, --help show this help message (default: False) + --export {csv,json,xlsx} + Export raw data into csv, json, xlsx (default: ) +``` + +Example: + +``` +2022 Mar 18, 14:29 (✨) /crypto/defi/ $ anchor terra13kc0x8kr3sq8226myf4nmanmn2mrk9s5s9wsnz --transactions +``` + +![anchor](https://user-images.githubusercontent.com/43375532/159065235-e8fb189d-f670-4391-a7fc-064640b9607d.png) diff --git a/website/data/menu/main.yml b/website/data/menu/main.yml index fbd42b347bd..ff1f7991d65 100755 --- a/website/data/menu/main.yml +++ b/website/data/menu/main.yml @@ -777,7 +777,7 @@ main: - name: stats ref: "/terminal/cryptocurrency/due_diligence/mcapdom" - name: nonzero - ref: "/terminal/cryptocurrency/due_diligence/nonzero" + ref: "/terminal/cryptocurrency/due_diligence/nonzero" - name: onchain ref: "/terminal/cryptocurrency/onchain" sub: @@ -880,6 +880,8 @@ main: - name: defi ref: "/terminal/cryptocurrency/defi" sub: + - name: anchor + ref: "/terminal/cryptocurrency/defi/anchor" - name: ldapps ref: "/terminal/cryptocurrency/defi/ldapps" - name: gdapps