Jelajahi Sumber

[research/lotterysim] replace apy with apr

police 3 tahun lalu
induk
melakukan
2f497332f9
100 mengubah file dengan 15 tambahan dan 31 penghapusan
  1. 1 1
      script/research/lotterysim/acc_vs_staked_ratio.py
  2. 3 3
      script/research/lotterysim/core/constants.py
  3. 6 22
      script/research/lotterysim/core/darkie.py
  4. 2 2
      script/research/lotterysim/core/lottery.py
  5. 1 1
      script/research/lotterysim/core/strategy.py
  6. 2 2
      script/research/lotterysim/discrete_instance.py
  7. 0 0
      script/research/lotterysim/log/darkie0.log
  8. 0 0
      script/research/lotterysim/log/darkie1.log
  9. 0 0
      script/research/lotterysim/log/darkie10.log
  10. 0 0
      script/research/lotterysim/log/darkie11.log
  11. 0 0
      script/research/lotterysim/log/darkie12.log
  12. 0 0
      script/research/lotterysim/log/darkie13.log
  13. 0 0
      script/research/lotterysim/log/darkie14.log
  14. 0 0
      script/research/lotterysim/log/darkie15.log
  15. 0 0
      script/research/lotterysim/log/darkie16.log
  16. 0 0
      script/research/lotterysim/log/darkie17.log
  17. 0 0
      script/research/lotterysim/log/darkie18.log
  18. 0 0
      script/research/lotterysim/log/darkie19.log
  19. 0 0
      script/research/lotterysim/log/darkie2.log
  20. 0 0
      script/research/lotterysim/log/darkie20.log
  21. 0 0
      script/research/lotterysim/log/darkie21.log
  22. 0 0
      script/research/lotterysim/log/darkie22.log
  23. 0 0
      script/research/lotterysim/log/darkie23.log
  24. 0 0
      script/research/lotterysim/log/darkie24.log
  25. 0 0
      script/research/lotterysim/log/darkie25.log
  26. 0 0
      script/research/lotterysim/log/darkie26.log
  27. 0 0
      script/research/lotterysim/log/darkie27.log
  28. 0 0
      script/research/lotterysim/log/darkie28.log
  29. 0 0
      script/research/lotterysim/log/darkie29.log
  30. 0 0
      script/research/lotterysim/log/darkie3.log
  31. 0 0
      script/research/lotterysim/log/darkie30.log
  32. 0 0
      script/research/lotterysim/log/darkie31.log
  33. 0 0
      script/research/lotterysim/log/darkie32.log
  34. 0 0
      script/research/lotterysim/log/darkie33.log
  35. 0 0
      script/research/lotterysim/log/darkie34.log
  36. 0 0
      script/research/lotterysim/log/darkie35.log
  37. 0 0
      script/research/lotterysim/log/darkie36.log
  38. 0 0
      script/research/lotterysim/log/darkie37.log
  39. 0 0
      script/research/lotterysim/log/darkie38.log
  40. 0 0
      script/research/lotterysim/log/darkie39.log
  41. 0 0
      script/research/lotterysim/log/darkie4.log
  42. 0 0
      script/research/lotterysim/log/darkie40.log
  43. 0 0
      script/research/lotterysim/log/darkie41.log
  44. 0 0
      script/research/lotterysim/log/darkie42.log
  45. 0 0
      script/research/lotterysim/log/darkie43.log
  46. 0 0
      script/research/lotterysim/log/darkie44.log
  47. 0 0
      script/research/lotterysim/log/darkie45.log
  48. 0 0
      script/research/lotterysim/log/darkie46.log
  49. 0 0
      script/research/lotterysim/log/darkie47.log
  50. 0 0
      script/research/lotterysim/log/darkie48.log
  51. 0 0
      script/research/lotterysim/log/darkie49.log
  52. 0 0
      script/research/lotterysim/log/darkie5.log
  53. 0 0
      script/research/lotterysim/log/darkie50.log
  54. 0 0
      script/research/lotterysim/log/darkie51.log
  55. 0 0
      script/research/lotterysim/log/darkie52.log
  56. 0 0
      script/research/lotterysim/log/darkie53.log
  57. 0 0
      script/research/lotterysim/log/darkie54.log
  58. 0 0
      script/research/lotterysim/log/darkie55.log
  59. 0 0
      script/research/lotterysim/log/darkie56.log
  60. 0 0
      script/research/lotterysim/log/darkie57.log
  61. 0 0
      script/research/lotterysim/log/darkie58.log
  62. 0 0
      script/research/lotterysim/log/darkie59.log
  63. 0 0
      script/research/lotterysim/log/darkie6.log
  64. 0 0
      script/research/lotterysim/log/darkie60.log
  65. 0 0
      script/research/lotterysim/log/darkie61.log
  66. 0 0
      script/research/lotterysim/log/darkie62.log
  67. 0 0
      script/research/lotterysim/log/darkie63.log
  68. 0 0
      script/research/lotterysim/log/darkie64.log
  69. 0 0
      script/research/lotterysim/log/darkie65.log
  70. 0 0
      script/research/lotterysim/log/darkie66.log
  71. 0 0
      script/research/lotterysim/log/darkie67.log
  72. 0 0
      script/research/lotterysim/log/darkie68.log
  73. 0 0
      script/research/lotterysim/log/darkie69.log
  74. 0 0
      script/research/lotterysim/log/darkie7.log
  75. 0 0
      script/research/lotterysim/log/darkie70.log
  76. 0 0
      script/research/lotterysim/log/darkie71.log
  77. 0 0
      script/research/lotterysim/log/darkie72.log
  78. 0 0
      script/research/lotterysim/log/darkie73.log
  79. 0 0
      script/research/lotterysim/log/darkie74.log
  80. 0 0
      script/research/lotterysim/log/darkie75.log
  81. 0 0
      script/research/lotterysim/log/darkie76.log
  82. 0 0
      script/research/lotterysim/log/darkie77.log
  83. 0 0
      script/research/lotterysim/log/darkie78.log
  84. 0 0
      script/research/lotterysim/log/darkie79.log
  85. 0 0
      script/research/lotterysim/log/darkie8.log
  86. 0 0
      script/research/lotterysim/log/darkie80.log
  87. 0 0
      script/research/lotterysim/log/darkie81.log
  88. 0 0
      script/research/lotterysim/log/darkie82.log
  89. 0 0
      script/research/lotterysim/log/darkie83.log
  90. 0 0
      script/research/lotterysim/log/darkie84.log
  91. 0 0
      script/research/lotterysim/log/darkie85.log
  92. 0 0
      script/research/lotterysim/log/darkie86.log
  93. 0 0
      script/research/lotterysim/log/darkie87.log
  94. 0 0
      script/research/lotterysim/log/darkie88.log
  95. 0 0
      script/research/lotterysim/log/darkie89.log
  96. 0 0
      script/research/lotterysim/log/darkie9.log
  97. 0 0
      script/research/lotterysim/log/darkie90.log
  98. 0 0
      script/research/lotterysim/log/darkie91.log
  99. 0 0
      script/research/lotterysim/log/darkie92.log
  100. 0 0
      script/research/lotterysim/log/darkie93.log

+ 1 - 1
script/research/lotterysim/acc_vs_staked_ratio.py

@@ -26,7 +26,7 @@ for portion in range(1,11):
         dt = DarkfiTable(airdrop, RUNNING_TIME, CONTROLLER_TYPE_DISCRETE, kp=0.005999999999989028, ki=-0.005999999985257798, kd=0.01299999999999478)
         dt = DarkfiTable(airdrop, RUNNING_TIME, CONTROLLER_TYPE_DISCRETE, kp=0.005999999999989028, ki=-0.005999999985257798, kd=0.01299999999999478)
         for darkie in darkies:
         for darkie in darkies:
             dt.add_darkie(darkie)
             dt.add_darkie(darkie)
-        acc, apy, reward, staked_ratio, apr = dt.background_with_apy(rand_running_time=False)
+        acc, apy, reward, staked_ratio, apr = dt.background(rand_running_time=False)
         accs += [acc]
         accs += [acc]
     avg_acc = sum(accs)/EXPS*100
     avg_acc = sum(accs)/EXPS*100
     plot+=[(stake_portion, avg_acc)]
     plot+=[(stake_portion, avg_acc)]

+ 3 - 3
script/research/lotterysim/core/constants.py

@@ -12,14 +12,14 @@ F_MIN = 0.0001
 F_MAX = 0.9999
 F_MAX = 0.9999
 
 
 REWARD_MIN = 0
 REWARD_MIN = 0
-REWARD_MAX = 1000
+REWARD_MAX = 100
 
 
 SLOT = 90
 SLOT = 90
 ONE_YEAR = Num(365.25*24*60*60/SLOT)
 ONE_YEAR = Num(365.25*24*60*60/SLOT)
 
 
-TARGET_APY = Num(1)
+TARGET_APR = Num(1)
 
 
-PRIMARY_REWARD_TARGET = 0.33 # ratio of staked tokens
+PRIMARY_REWARD_TARGET = 0.5 # ratio of staked tokens
 SECONDARY_LEAD_TARGET = 1 #number of lead per slot
 SECONDARY_LEAD_TARGET = 1 #number of lead per slot
 
 
 EPSILON = 1
 EPSILON = 1

+ 6 - 22
script/research/lotterysim/core/darkie.py

@@ -14,33 +14,20 @@ class Darkie():
         self.epoch_len=epoch_len # epoch length during which the stake is static
         self.epoch_len=epoch_len # epoch length during which the stake is static
         self.strategy = strategy
         self.strategy = strategy
         self.slot = 0
         self.slot = 0
-        self.apys = []
 
 
     def clone(self):
     def clone(self):
         return Darkie(self.finalized_stake)
         return Darkie(self.finalized_stake)
 
 
-    '''
-    def apy(self):
-        staked_tokens = self.staked_tokens()
-        apy = (Num(self.stake) - staked_tokens) / staked_tokens if self.stake>0 else 0
-        #print('stake: {}, staked_tokens: {}'.format(self.stake, staked_tokens))
-        return Num(apy)
-    '''
-
-    '''
-    @rewards: array of reward per epoch
-    return apy during runnigntime with compound interest
-    '''
     def apy_scaled_to_runningtime(self, rewards):
     def apy_scaled_to_runningtime(self, rewards):
         avg_apy = 0
         avg_apy = 0
         for idx, reward in enumerate(rewards):
         for idx, reward in enumerate(rewards):
-            #print('slot: {}, idx: {} of {}, staked tokens: {}, initial stake: {}'.format(self.slot, idx, len(rewards), len(self.strategy.staked_tokens_ratio), len(self.initial_stake)))
             current_epoch_staked_tokens = Num(self.strategy.staked_tokens_ratio[idx-1]) * Num(self.initial_stake[idx-1])
             current_epoch_staked_tokens = Num(self.strategy.staked_tokens_ratio[idx-1]) * Num(self.initial_stake[idx-1])
             avg_apy += (Num(reward) / current_epoch_staked_tokens) if current_epoch_staked_tokens!=0 else 0
             avg_apy += (Num(reward) / current_epoch_staked_tokens) if current_epoch_staked_tokens!=0 else 0
-        return avg_apy * Num(ONE_YEAR/(self.slot/EPOCH_LENGTH)) if self.slot >0 else 0
+        return avg_apy * Num(ONE_YEAR/(self.slot/EPOCH_LENGTH)) if self.slot  and self.initial_stake[0]>0 >0 else 0
+
 
 
     def apr_scaled_to_runningtime(self):
     def apr_scaled_to_runningtime(self):
-        return Num(self.stake - self.initial_stake[0]) / Num(self.initial_stake[0]) *  Num(ONE_YEAR/(self.slot/EPOCH_LENGTH))
+        return Num(self.stake - self.initial_stake[0]) / Num(self.initial_stake[0]) *  Num(ONE_YEAR/(self.slot/EPOCH_LENGTH)) if self.slot> 0 and self.initial_stake[0]>0 else 0
 
 
     def staked_tokens(self):
     def staked_tokens(self):
         '''
         '''
@@ -64,7 +51,7 @@ class Darkie():
         self.slot = count
         self.slot = count
 
 
 
 
-    def run(self, rewards, hp=True):
+    def run(self, hp=True):
         k=N_TERM
         k=N_TERM
         def target(tune_parameter, stake):
         def target(tune_parameter, stake):
             x = (Num(1) if hp else 1)  - (Num(tune_parameter) if hp else tune_parameter)
             x = (Num(1) if hp else 1)  - (Num(tune_parameter) if hp else tune_parameter)
@@ -74,10 +61,9 @@ class Darkie():
             return scaled_target
             return scaled_target
 
 
         if self.slot % EPOCH_LENGTH ==0 and self.slot > 0:
         if self.slot % EPOCH_LENGTH ==0 and self.slot > 0:
-            apy = self.apy_scaled_to_runningtime(rewards)
-            self.apys+=[apy]
+            apr = self.apr_scaled_to_runningtime()
             # staked ratio is added in strategy
             # staked ratio is added in strategy
-            self.strategy.set_ratio(self.slot, apy)
+            self.strategy.set_ratio(self.slot, apr)
             # epoch stake is added
             # epoch stake is added
             self.initial_stake +=[self.finalized_stake]
             self.initial_stake +=[self.finalized_stake]
         T = target(self.f, self.strategy.staked_value(self.finalized_stake))
         T = target(self.f, self.strategy.staked_value(self.finalized_stake))
@@ -120,5 +106,3 @@ class Darkie():
             buf = 'initial stake:'+','.join([str(i) for i in self.initial_stake])
             buf = 'initial stake:'+','.join([str(i) for i in self.initial_stake])
             buf += '\r\n'
             buf += '\r\n'
             buf += 'staked ratio:'+','.join([str(i) for i in self.strategy.staked_tokens_ratio])
             buf += 'staked ratio:'+','.join([str(i) for i in self.strategy.staked_tokens_ratio])
-            buf += 'apys: '+','.join([str(i) for i in self.apys])
-            f.write(buf)

+ 2 - 2
script/research/lotterysim/core/lottery.py

@@ -20,7 +20,7 @@ class DarkfiTable:
     def add_darkie(self, darkie):
     def add_darkie(self, darkie):
         self.darkies+=[darkie]
         self.darkies+=[darkie]
 
 
-    def background_with_apy(self, rand_running_time=True, debug=False, hp=True):
+    def background(self, rand_running_time=True, debug=False, hp=True):
         self.debug=debug
         self.debug=debug
         self.start_time=time.time()
         self.start_time=time.time()
         feedback=0 # number leads in previous slot
         feedback=0 # number leads in previous slot
@@ -45,7 +45,7 @@ class DarkfiTable:
             #note! thread overhead is 10X slower than sequential node execution!
             #note! thread overhead is 10X slower than sequential node execution!
             for i in range(len(self.darkies)):
             for i in range(len(self.darkies)):
                 self.darkies[i].set_sigma_feedback(self.Sigma, feedback, f, count, hp)
                 self.darkies[i].set_sigma_feedback(self.Sigma, feedback, f, count, hp)
-                self.darkies[i].run(self.rewards, hp)
+                self.darkies[i].run(hp)
                 total_vesting_stake+=self.darkies[i].update_vesting()
                 total_vesting_stake+=self.darkies[i].update_vesting()
 
 
 
 

+ 1 - 1
script/research/lotterysim/core/strategy.py

@@ -5,7 +5,7 @@ class Strategy(object):
     def __init__(self, epoch_len=0):
     def __init__(self, epoch_len=0):
         self.epoch_len = epoch_len
         self.epoch_len = epoch_len
         self.staked_tokens_ratio = [1]
         self.staked_tokens_ratio = [1]
-        self.target_apy = TARGET_APY
+        self.target_apy = TARGET_APR
         self.type = 'base'
         self.type = 'base'
 
 
     def set_ratio(self, slot, apy):
     def set_ratio(self, slot, apy):

+ 2 - 2
script/research/lotterysim/discrete_instance.py

@@ -26,8 +26,8 @@ if __name__ == "__main__":
     dt = DarkfiTable(airdrop, RUNNING_TIME, CONTROLLER_TYPE_DISCRETE, kp=-0.010399999999938556, ki=-0.0365999996461878, kd=0.03840000000000491,  r_kp=-0.1345, r_ki=-0.5, r_kd=-0.5)
     dt = DarkfiTable(airdrop, RUNNING_TIME, CONTROLLER_TYPE_DISCRETE, kp=-0.010399999999938556, ki=-0.0365999996461878, kd=0.03840000000000491,  r_kp=-0.1345, r_ki=-0.5, r_kd=-0.5)
     for darkie in darkies:
     for darkie in darkies:
         dt.add_darkie(darkie)
         dt.add_darkie(darkie)
-    acc, avg_apy, avg_reward, stake_ratio, avg_apr = dt.background_with_apy(rand_running_time=False)
+    acc, avg_apy, avg_reward, stake_ratio, avg_apr = dt.background(rand_running_time=False)
     sum_zero_stake = sum([darkie.stake for darkie in darkies[NODES:]])
     sum_zero_stake = sum([darkie.stake for darkie in darkies[NODES:]])
-    print('acc: {}, avg(apy): {}, avg(apr): {}, avg(reward): {}, stake_ratio: {}'.format(acc, avg_apy, avg_apr, avg_reward, stake_ratio))
+    print('acc: {}, avg(apr): {}, avg(reward): {}, stake_ratio: {}'.format(acc, avg_apr, avg_reward, stake_ratio))
     print('total stake of 0mint: {}, ration: {}'.format(sum_zero_stake, sum_zero_stake/ERC20DRK))
     print('total stake of 0mint: {}, ration: {}'.format(sum_zero_stake, sum_zero_stake/ERC20DRK))
     dt.write()
     dt.write()

+ 0 - 0
script/research/lotterysim/log/darkie0.log


+ 0 - 0
script/research/lotterysim/log/darkie1.log


+ 0 - 0
script/research/lotterysim/log/darkie10.log


+ 0 - 0
script/research/lotterysim/log/darkie11.log


+ 0 - 0
script/research/lotterysim/log/darkie12.log


+ 0 - 0
script/research/lotterysim/log/darkie13.log


+ 0 - 0
script/research/lotterysim/log/darkie14.log


+ 0 - 0
script/research/lotterysim/log/darkie15.log


+ 0 - 0
script/research/lotterysim/log/darkie16.log


+ 0 - 0
script/research/lotterysim/log/darkie17.log


+ 0 - 0
script/research/lotterysim/log/darkie18.log


+ 0 - 0
script/research/lotterysim/log/darkie19.log


+ 0 - 0
script/research/lotterysim/log/darkie2.log


+ 0 - 0
script/research/lotterysim/log/darkie20.log


+ 0 - 0
script/research/lotterysim/log/darkie21.log


+ 0 - 0
script/research/lotterysim/log/darkie22.log


+ 0 - 0
script/research/lotterysim/log/darkie23.log


+ 0 - 0
script/research/lotterysim/log/darkie24.log


+ 0 - 0
script/research/lotterysim/log/darkie25.log


+ 0 - 0
script/research/lotterysim/log/darkie26.log


+ 0 - 0
script/research/lotterysim/log/darkie27.log


+ 0 - 0
script/research/lotterysim/log/darkie28.log


+ 0 - 0
script/research/lotterysim/log/darkie29.log


+ 0 - 0
script/research/lotterysim/log/darkie3.log


+ 0 - 0
script/research/lotterysim/log/darkie30.log


+ 0 - 0
script/research/lotterysim/log/darkie31.log


+ 0 - 0
script/research/lotterysim/log/darkie32.log


+ 0 - 0
script/research/lotterysim/log/darkie33.log


+ 0 - 0
script/research/lotterysim/log/darkie34.log


+ 0 - 0
script/research/lotterysim/log/darkie35.log


+ 0 - 0
script/research/lotterysim/log/darkie36.log


+ 0 - 0
script/research/lotterysim/log/darkie37.log


+ 0 - 0
script/research/lotterysim/log/darkie38.log


+ 0 - 0
script/research/lotterysim/log/darkie39.log


+ 0 - 0
script/research/lotterysim/log/darkie4.log


+ 0 - 0
script/research/lotterysim/log/darkie40.log


+ 0 - 0
script/research/lotterysim/log/darkie41.log


+ 0 - 0
script/research/lotterysim/log/darkie42.log


+ 0 - 0
script/research/lotterysim/log/darkie43.log


+ 0 - 0
script/research/lotterysim/log/darkie44.log


+ 0 - 0
script/research/lotterysim/log/darkie45.log


+ 0 - 0
script/research/lotterysim/log/darkie46.log


+ 0 - 0
script/research/lotterysim/log/darkie47.log


+ 0 - 0
script/research/lotterysim/log/darkie48.log


+ 0 - 0
script/research/lotterysim/log/darkie49.log


+ 0 - 0
script/research/lotterysim/log/darkie5.log


+ 0 - 0
script/research/lotterysim/log/darkie50.log


+ 0 - 0
script/research/lotterysim/log/darkie51.log


+ 0 - 0
script/research/lotterysim/log/darkie52.log


+ 0 - 0
script/research/lotterysim/log/darkie53.log


+ 0 - 0
script/research/lotterysim/log/darkie54.log


+ 0 - 0
script/research/lotterysim/log/darkie55.log


+ 0 - 0
script/research/lotterysim/log/darkie56.log


+ 0 - 0
script/research/lotterysim/log/darkie57.log


+ 0 - 0
script/research/lotterysim/log/darkie58.log


+ 0 - 0
script/research/lotterysim/log/darkie59.log


+ 0 - 0
script/research/lotterysim/log/darkie6.log


+ 0 - 0
script/research/lotterysim/log/darkie60.log


+ 0 - 0
script/research/lotterysim/log/darkie61.log


+ 0 - 0
script/research/lotterysim/log/darkie62.log


+ 0 - 0
script/research/lotterysim/log/darkie63.log


+ 0 - 0
script/research/lotterysim/log/darkie64.log


+ 0 - 0
script/research/lotterysim/log/darkie65.log


+ 0 - 0
script/research/lotterysim/log/darkie66.log


+ 0 - 0
script/research/lotterysim/log/darkie67.log


+ 0 - 0
script/research/lotterysim/log/darkie68.log


+ 0 - 0
script/research/lotterysim/log/darkie69.log


+ 0 - 0
script/research/lotterysim/log/darkie7.log


+ 0 - 0
script/research/lotterysim/log/darkie70.log


+ 0 - 0
script/research/lotterysim/log/darkie71.log


+ 0 - 0
script/research/lotterysim/log/darkie72.log


+ 0 - 0
script/research/lotterysim/log/darkie73.log


+ 0 - 0
script/research/lotterysim/log/darkie74.log


+ 0 - 0
script/research/lotterysim/log/darkie75.log


+ 0 - 0
script/research/lotterysim/log/darkie76.log


+ 0 - 0
script/research/lotterysim/log/darkie77.log


+ 0 - 0
script/research/lotterysim/log/darkie78.log


+ 0 - 0
script/research/lotterysim/log/darkie79.log


+ 0 - 0
script/research/lotterysim/log/darkie8.log


+ 0 - 0
script/research/lotterysim/log/darkie80.log


+ 0 - 0
script/research/lotterysim/log/darkie81.log


+ 0 - 0
script/research/lotterysim/log/darkie82.log


+ 0 - 0
script/research/lotterysim/log/darkie83.log


+ 0 - 0
script/research/lotterysim/log/darkie84.log


+ 0 - 0
script/research/lotterysim/log/darkie85.log


+ 0 - 0
script/research/lotterysim/log/darkie86.log


+ 0 - 0
script/research/lotterysim/log/darkie87.log


+ 0 - 0
script/research/lotterysim/log/darkie88.log


+ 0 - 0
script/research/lotterysim/log/darkie89.log


+ 0 - 0
script/research/lotterysim/log/darkie9.log


+ 0 - 0
script/research/lotterysim/log/darkie90.log


+ 0 - 0
script/research/lotterysim/log/darkie91.log


+ 0 - 0
script/research/lotterysim/log/darkie92.log


+ 0 - 0
script/research/lotterysim/log/darkie93.log


Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini