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
+```
+
+
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