-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathsystem_metrics.py
43 lines (37 loc) · 1.75 KB
/
system_metrics.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
"""# System Metrics Module
Implementation of Policies for the calculation of various System Metrics and KPIs.
"""
def policy_system_metrics(params, substep, state_history, previous_state):
"""## System Metrics Policy
Calculation of standard System Metrics such as the Stable Backing Ratio, Collateralization Ratio, etc.
"""
# Parameters
dt = params["dt"]
# State Variables
total_pcv = previous_state["total_pcv"]
total_stable_asset_pcv = previous_state["total_stable_asset_pcv"]
total_user_circulating_fei = previous_state["total_user_circulating_fei"]
fei_price = previous_state["fei_price"]
pcv_yield = previous_state["pcv_yield"]
psm_mint_redeem_fees = previous_state["psm_mint_redeem_fees"]
total_protocol_owned_fei = previous_state["total_protocol_owned_fei"]
total_fei_supply = previous_state["total_fei_supply"]
# PCV System Metrics
stable_backing_ratio = total_stable_asset_pcv / total_user_circulating_fei
stable_pcv_ratio = total_stable_asset_pcv / total_pcv
collateralization_ratio = total_pcv / total_user_circulating_fei
pcv_yield_rate = pcv_yield / total_pcv * 365 / dt
# Protocol System Metrics
protocol_equity = total_pcv - (total_user_circulating_fei * fei_price)
protocol_revenue = pcv_yield + psm_mint_redeem_fees
# NOTE: QUIZ 1
# reserve_ratio = (total_pcv + total_protocol_owned_fei) / total_fei_supply
return {
"stable_backing_ratio": stable_backing_ratio,
"stable_pcv_ratio": stable_pcv_ratio,
"collateralization_ratio": collateralization_ratio,
# "reserve_ratio": reserve_ratio, # NOTE: QUIZ 1
"pcv_yield_rate": pcv_yield_rate,
"protocol_equity": protocol_equity,
"protocol_revenue": protocol_revenue,
}