James McCool commited on
Commit
5ef03d6
·
1 Parent(s): f591d4e

Refactor large_field_preset and small_field_preset functions to enhance lineup targeting: increase slack_var range, implement team-based filtering, and consolidate results into a single DataFrame for improved accuracy in portfolio adjustments.

Browse files
global_func/large_field_preset.py CHANGED
@@ -2,22 +2,25 @@ import pandas as pd
2
 
3
  def large_field_preset(portfolio: pd.DataFrame, lineup_target: int):
4
 
5
- for slack_var in range(1, 10):
6
- rows_to_drop = []
7
-
8
- working_portfolio = portfolio.sort_values(by='Finish_percentile', ascending = True)
9
- working_portfolio = working_portfolio[working_portfolio['Lineup Edge'] > 0]
10
- working_portfolio = working_portfolio.reset_index(drop=True)
11
- curr_own_type_max = working_portfolio.loc[0, 'Own'] + (slack_var / 10 * working_portfolio.loc[0, 'Own'])
 
 
12
 
13
- for i in range(1, len(working_portfolio)):
14
- if working_portfolio.loc[i, 'Own'] > curr_own_type_max:
15
- rows_to_drop.append(i)
16
- else:
17
- curr_own_type_max = working_portfolio.loc[i, 'Own'] + (slack_var / 10 * working_portfolio.loc[i, 'Own'])
18
 
19
- working_portfolio = working_portfolio.drop(rows_to_drop).reset_index(drop=True)
20
- if len(working_portfolio) >= lineup_target:
21
- return working_portfolio.sort_values(by='Finish_percentile', ascending=True).head(lineup_target)
 
22
 
23
- return working_portfolio.sort_values(by='Finish_percentile', ascending=True)
 
2
 
3
  def large_field_preset(portfolio: pd.DataFrame, lineup_target: int):
4
 
5
+ for slack_var in range(1, 20):
6
+ concat_portfolio = pd.DataFrame(columns=portfolio.columns)
7
+
8
+ for team in portfolio['Team'].unique():
9
+ rows_to_drop = []
10
+ working_portfolio = portfolio[portfolio['stack'] == team].sort_values(by='Finish_percentile', ascending = True)
11
+ working_portfolio = working_portfolio[working_portfolio['Lineup Edge'] > 0]
12
+ working_portfolio = working_portfolio.reset_index(drop=True)
13
+ curr_own_type_max = working_portfolio.loc[0, 'Own'] + (slack_var / 20 * working_portfolio.loc[0, 'Own'])
14
 
15
+ for i in range(1, len(working_portfolio)):
16
+ if working_portfolio.loc[i, 'Own'] > curr_own_type_max:
17
+ rows_to_drop.append(i)
18
+ else:
19
+ curr_own_type_max = working_portfolio.loc[i, 'Own'] + (slack_var / 20 * working_portfolio.loc[i, 'Own'])
20
 
21
+ working_portfolio = working_portfolio.drop(rows_to_drop).reset_index(drop=True)
22
+ concat_portfolio = pd.concat([concat_portfolio, working_portfolio])
23
+ if len(concat_portfolio) >= lineup_target:
24
+ return concat_portfolio.sort_values(by='Finish_percentile', ascending=True).head(lineup_target)
25
 
26
+ return concat_portfolio.sort_values(by='Finish_percentile', ascending=True)
global_func/small_field_preset.py CHANGED
@@ -1,22 +1,26 @@
1
  import pandas as pd
2
 
3
  def small_field_preset(portfolio: pd.DataFrame, lineup_target: int):
4
-
5
- for slack_var in range(1, 10):
6
- rows_to_drop = []
7
- working_portfolio = portfolio.sort_values(by='Own', ascending = False).reset_index(drop=True)
8
- working_portfolio = working_portfolio[working_portfolio['Finish_percentile'] <= .10]
9
- working_portfolio = working_portfolio.reset_index(drop=True)
10
- curr_own_type_max = working_portfolio.loc[0, 'Weighted Own'] + (slack_var / 10 * working_portfolio.loc[0, 'Weighted Own'])
11
 
12
- for i in range(1, len(working_portfolio)):
13
- if working_portfolio.loc[i, 'Weighted Own'] > curr_own_type_max:
14
- rows_to_drop.append(i)
15
- else:
16
- curr_own_type_max = working_portfolio.loc[i, 'Weighted Own'] + (slack_var / 10 * working_portfolio.loc[i, 'Weighted Own'])
 
 
 
 
 
 
 
 
 
 
17
 
18
- working_portfolio = working_portfolio.drop(rows_to_drop).reset_index(drop=True)
19
- if len(working_portfolio) >= lineup_target:
20
- return working_portfolio.sort_values(by='Own', ascending=False).head(lineup_target)
 
21
 
22
- return working_portfolio.sort_values(by='Own', ascending=False)
 
1
  import pandas as pd
2
 
3
  def small_field_preset(portfolio: pd.DataFrame, lineup_target: int):
 
 
 
 
 
 
 
4
 
5
+ for slack_var in range(1, 20):
6
+ concat_portfolio = pd.DataFrame(columns=portfolio.columns)
7
+
8
+ for team in portfolio['Team'].unique():
9
+ rows_to_drop = []
10
+ working_portfolio = portfolio[portfolio['stack'] == team].sort_values(by='Own', ascending = False).reset_index(drop=True)
11
+ working_portfolio = working_portfolio[working_portfolio['Finish_percentile'] <= .10]
12
+ working_portfolio = working_portfolio.reset_index(drop=True)
13
+ curr_own_type_max = working_portfolio.loc[0, 'Weighted Own'] + (slack_var / 20 * working_portfolio.loc[0, 'Weighted Own'])
14
+
15
+ for i in range(1, len(working_portfolio)):
16
+ if working_portfolio.loc[i, 'Weighted Own'] > curr_own_type_max:
17
+ rows_to_drop.append(i)
18
+ else:
19
+ curr_own_type_max = working_portfolio.loc[i, 'Weighted Own'] + (slack_var / 20 * working_portfolio.loc[i, 'Weighted Own'])
20
 
21
+ working_portfolio = working_portfolio.drop(rows_to_drop).reset_index(drop=True)
22
+ concat_portfolio = pd.concat([concat_portfolio, working_portfolio])
23
+ if len(concat_portfolio) >= lineup_target:
24
+ return concat_portfolio.sort_values(by='Own', ascending=False).head(lineup_target)
25
 
26
+ return concat_portfolio.sort_values(by='Own', ascending=False)