James McCool
commited on
Commit
·
02245bb
1
Parent(s):
fbbb0e8
Add team ownership calculation in hedging_preset.py to enhance lineup generation. Introduced a new function to sum hitter ownership by team and adjusted lineup target calculations for improved accuracy. This change allows for better team-based lineup strategies.
Browse files
global_func/hedging_preset.py
CHANGED
@@ -2,6 +2,7 @@ import pandas as pd
|
|
2 |
import math
|
3 |
from global_func.small_field_preset import small_field_preset
|
4 |
from global_func.large_field_preset import large_field_preset
|
|
|
5 |
|
6 |
def hedging_preset(portfolio: pd.DataFrame, lineup_target: int, projections_file: pd.DataFrame):
|
7 |
|
@@ -12,6 +13,28 @@ def hedging_preset(portfolio: pd.DataFrame, lineup_target: int, projections_file
|
|
12 |
check_own_df = check_own_df.sort_values(by='ownership', ascending=False)
|
13 |
top_owned = check_own_df['player_names'].head(list_size).tolist()
|
14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
concat_portfolio = pd.DataFrame(columns=portfolio.columns)
|
16 |
|
17 |
for player in top_owned:
|
@@ -33,9 +56,16 @@ def hedging_preset(portfolio: pd.DataFrame, lineup_target: int, projections_file
|
|
33 |
locked_df = working_df[lock_mask]
|
34 |
print(locked_df.head(10))
|
35 |
|
36 |
-
removed_lineups = small_field_preset(removed_df, math.ceil(lineup_target / (list_size *
|
37 |
-
locked_lineups = large_field_preset(locked_df, math.ceil(lineup_target / (list_size *
|
38 |
|
39 |
concat_portfolio = pd.concat([concat_portfolio, removed_lineups, locked_lineups])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
|
41 |
return concat_portfolio.head(lineup_target)
|
|
|
2 |
import math
|
3 |
from global_func.small_field_preset import small_field_preset
|
4 |
from global_func.large_field_preset import large_field_preset
|
5 |
+
from global_func.get_portfolio_names import trim_portfolio
|
6 |
|
7 |
def hedging_preset(portfolio: pd.DataFrame, lineup_target: int, projections_file: pd.DataFrame):
|
8 |
|
|
|
13 |
check_own_df = check_own_df.sort_values(by='ownership', ascending=False)
|
14 |
top_owned = check_own_df['player_names'].head(list_size).tolist()
|
15 |
|
16 |
+
def get_team_hitter_ownership(projections_file: pd.DataFrame):
|
17 |
+
"""
|
18 |
+
Calculate the sum ownership of hitters on each team.
|
19 |
+
Excludes SP and P positions and sums ownership by team.
|
20 |
+
|
21 |
+
Args:
|
22 |
+
projections_file (pd.DataFrame): DataFrame with 'position', 'team', and 'ownership' columns
|
23 |
+
|
24 |
+
Returns:
|
25 |
+
pd.Series: Series with team names as index and total hitter ownership as values, sorted descending
|
26 |
+
"""
|
27 |
+
# Filter out pitchers (SP and P positions)
|
28 |
+
hitters_df = projections_file[~projections_file['position'].isin(['P', 'SP'])]
|
29 |
+
|
30 |
+
# Group by team and sum ownership
|
31 |
+
team_ownership = hitters_df.groupby('team')['ownership'].sum().sort_values(ascending=False)
|
32 |
+
|
33 |
+
return team_ownership
|
34 |
+
|
35 |
+
team_ownership = get_team_hitter_ownership(projections_file)
|
36 |
+
top_owned_teams = team_ownership.head(list_size).index.tolist()
|
37 |
+
|
38 |
concat_portfolio = pd.DataFrame(columns=portfolio.columns)
|
39 |
|
40 |
for player in top_owned:
|
|
|
56 |
locked_df = working_df[lock_mask]
|
57 |
print(locked_df.head(10))
|
58 |
|
59 |
+
removed_lineups = small_field_preset(removed_df, math.ceil(lineup_target / (list_size * 3)), excluded_cols)
|
60 |
+
locked_lineups = large_field_preset(locked_df, math.ceil(lineup_target / (list_size * 3)), excluded_cols)
|
61 |
|
62 |
concat_portfolio = pd.concat([concat_portfolio, removed_lineups, locked_lineups])
|
63 |
+
|
64 |
+
for team in top_owned_teams:
|
65 |
+
working_df = portfolio.copy()
|
66 |
+
teams_df = working_df[working_df['Stack'] == team]
|
67 |
+
|
68 |
+
team_lineups = large_field_preset(teams_df, math.ceil(lineup_target / (list_size * 3)), excluded_cols)
|
69 |
+
concat_portfolio = pd.concat([concat_portfolio, team_lineups])
|
70 |
|
71 |
return concat_portfolio.head(lineup_target)
|