Spaces:
Running
Running
James McCool
commited on
Commit
·
5b60329
1
Parent(s):
b6fa50a
Finished Pick6 implementation
Browse files
app.py
CHANGED
@@ -58,6 +58,7 @@ prop_format = {'L5 Success': '{:.2%}', 'L10_Success': '{:.2%}', 'L20_success': '
|
|
58 |
'Implied Over': '{:.2%}', 'Implied Under': '{:.2%}', 'Over Edge': '{:.2%}', 'Under Edge': '{:.2%}'}
|
59 |
prop_table_options = ['NBA_GAME_PLAYER_POINTS', 'NBA_GAME_PLAYER_REBOUNDS', 'NBA_GAME_PLAYER_ASSISTS', 'NBA_GAME_PLAYER_3_POINTERS_MADE', 'NBA_GAME_PLAYER_POINTS_REBOUNDS_ASSISTS', 'NBA_GAME_PLAYER_POINTS_REBOUNDS', 'NBA_GAME_PLAYER_POINTS_ASSISTS', 'NBA_GAME_PLAYER_REBOUNDS_ASSISTS']
|
60 |
all_sim_vars = ['NBA_GAME_PLAYER_POINTS', 'NBA_GAME_PLAYER_REBOUNDS', 'NBA_GAME_PLAYER_ASSISTS', 'NBA_GAME_PLAYER_3_POINTERS_MADE', 'NBA_GAME_PLAYER_POINTS_REBOUNDS_ASSISTS', 'NBA_GAME_PLAYER_POINTS_REBOUNDS', 'NBA_GAME_PLAYER_POINTS_ASSISTS', 'NBA_GAME_PLAYER_REBOUNDS_ASSISTS']
|
|
|
61 |
sim_all_hold = pd.DataFrame(columns=['Player', 'Team', 'Book', 'Prop Type', 'Prop', 'Mean_Outcome', 'Imp Over', 'Over%', 'Imp Under', 'Under%', 'Bet?', 'Edge'])
|
62 |
|
63 |
def add_column(df):
|
@@ -393,14 +394,21 @@ with tab5:
|
|
393 |
mime='text/csv',
|
394 |
key='prop_source',
|
395 |
)
|
396 |
-
|
|
|
|
|
|
|
397 |
|
398 |
if st.button('Simulate Prop Category'):
|
399 |
with col2:
|
400 |
|
401 |
with df_hold_container.container():
|
402 |
if prop_type_var == 'All Props':
|
403 |
-
|
|
|
|
|
|
|
|
|
404 |
|
405 |
if game_select_var == 'Aggregate':
|
406 |
prop_df_raw = prop_frame[['Player', 'book', 'over_prop', 'over_line', 'under_line', 'prop_type']]
|
@@ -508,8 +516,6 @@ with tab5:
|
|
508 |
final_outcomes = sim_all_hold
|
509 |
|
510 |
elif prop_type_var != 'All Props':
|
511 |
-
|
512 |
-
|
513 |
if game_select_var == 'Aggregate':
|
514 |
prop_df_raw = prop_frame[['Player', 'book', 'over_prop', 'over_line', 'under_line', 'prop_type']]
|
515 |
elif game_select_var == 'Pick6':
|
@@ -520,7 +526,7 @@ with tab5:
|
|
520 |
if game_select_var == 'Pick6':
|
521 |
books = 'Pick6'
|
522 |
prop_df = prop_df_raw.loc[prop_df_raw['book'] == books]
|
523 |
-
if prop_type_var == "NBA_GAME_PLAYER_POINTS":
|
524 |
prop_df = prop_df.loc[prop_df['prop_type'] == 'NBA_GAME_PLAYER_POINTS']
|
525 |
prop_df = prop_df[['Player', 'book', 'over_prop', 'over_line', 'under_line']]
|
526 |
prop_df.rename(columns={"over_prop": "Prop"}, inplace = True)
|
@@ -529,7 +535,7 @@ with tab5:
|
|
529 |
prop_df['Over'] = 1 / prop_df['over_line']
|
530 |
prop_df['Under'] = 1 / prop_df['under_line']
|
531 |
df = pd.merge(player_stats, prop_df, how='left', left_on=['Player'], right_on = ['Player'])
|
532 |
-
elif prop_type_var == "NBA_GAME_PLAYER_REBOUNDS":
|
533 |
prop_df = prop_df.loc[prop_df['prop_type'] == 'NBA_GAME_PLAYER_REBOUNDS']
|
534 |
prop_df = prop_df[['Player', 'book', 'over_prop', 'over_line', 'under_line']]
|
535 |
prop_df.rename(columns={"over_prop": "Prop"}, inplace = True)
|
@@ -538,7 +544,7 @@ with tab5:
|
|
538 |
prop_df['Over'] = 1 / prop_df['over_line']
|
539 |
prop_df['Under'] = 1 / prop_df['under_line']
|
540 |
df = pd.merge(player_stats, prop_df, how='left', left_on=['Player'], right_on = ['Player'])
|
541 |
-
elif prop_type_var == "NBA_GAME_PLAYER_ASSISTS":
|
542 |
prop_df = prop_df.loc[prop_df['prop_type'] == 'NBA_GAME_PLAYER_ASSISTS']
|
543 |
prop_df = prop_df[['Player', 'book', 'over_prop', 'over_line', 'under_line']]
|
544 |
prop_df.rename(columns={"over_prop": "Prop"}, inplace = True)
|
@@ -547,7 +553,7 @@ with tab5:
|
|
547 |
prop_df['Over'] = 1 / prop_df['over_line']
|
548 |
prop_df['Under'] = 1 / prop_df['under_line']
|
549 |
df = pd.merge(player_stats, prop_df, how='left', left_on=['Player'], right_on = ['Player'])
|
550 |
-
elif prop_type_var == "NBA_GAME_PLAYER_3_POINTERS_MADE":
|
551 |
prop_df = prop_df.loc[prop_df['prop_type'] == 'NBA_GAME_PLAYER_3_POINTERS_MADE']
|
552 |
prop_df = prop_df[['Player', 'book', 'over_prop', 'over_line', 'under_line']]
|
553 |
prop_df.rename(columns={"over_prop": "Prop"}, inplace = True)
|
@@ -556,7 +562,7 @@ with tab5:
|
|
556 |
prop_df['Over'] = 1 / prop_df['over_line']
|
557 |
prop_df['Under'] = 1 / prop_df['under_line']
|
558 |
df = pd.merge(player_stats, prop_df, how='left', left_on=['Player'], right_on = ['Player'])
|
559 |
-
elif prop_type_var == "NBA_GAME_PLAYER_POINTS_REBOUNDS_ASSISTS":
|
560 |
prop_df = prop_df.loc[prop_df['prop_type'] == 'NBA_GAME_PLAYER_POINTS_REBOUNDS_ASSISTS']
|
561 |
prop_df = prop_df[['Player', 'book', 'over_prop', 'over_line', 'under_line']]
|
562 |
prop_df.rename(columns={"over_prop": "Prop"}, inplace = True)
|
@@ -565,7 +571,7 @@ with tab5:
|
|
565 |
prop_df['Over'] = 1 / prop_df['over_line']
|
566 |
prop_df['Under'] = 1 / prop_df['under_line']
|
567 |
df = pd.merge(player_stats, prop_df, how='left', left_on=['Player'], right_on = ['Player'])
|
568 |
-
elif prop_type_var == "NBA_GAME_PLAYER_POINTS_REBOUNDS":
|
569 |
prop_df = prop_df.loc[prop_df['prop_type'] == 'NBA_GAME_PLAYER_POINTS_REBOUNDS']
|
570 |
prop_df = prop_df[['Player', 'book', 'over_prop', 'over_line', 'under_line']]
|
571 |
prop_df.rename(columns={"over_prop": "Prop"}, inplace = True)
|
@@ -574,7 +580,7 @@ with tab5:
|
|
574 |
prop_df['Over'] = 1 / prop_df['over_line']
|
575 |
prop_df['Under'] = 1 / prop_df['under_line']
|
576 |
df = pd.merge(player_stats, prop_df, how='left', left_on=['Player'], right_on = ['Player'])
|
577 |
-
elif prop_type_var == "NBA_GAME_PLAYER_POINTS_ASSISTS":
|
578 |
prop_df = prop_df.loc[prop_df['prop_type'] == 'NBA_GAME_PLAYER_POINTS_ASSISTS']
|
579 |
prop_df = prop_df[['Player', 'book', 'over_prop', 'over_line', 'under_line']]
|
580 |
prop_df.rename(columns={"over_prop": "Prop"}, inplace = True)
|
@@ -583,7 +589,7 @@ with tab5:
|
|
583 |
prop_df['Over'] = 1 / prop_df['over_line']
|
584 |
prop_df['Under'] = 1 / prop_df['under_line']
|
585 |
df = pd.merge(player_stats, prop_df, how='left', left_on=['Player'], right_on = ['Player'])
|
586 |
-
elif prop_type_var == "NBA_GAME_PLAYER_REBOUNDS_ASSISTS":
|
587 |
prop_df = prop_df.loc[prop_df['prop_type'] == 'NBA_GAME_PLAYER_REBOUNDS_ASSISTS']
|
588 |
prop_df = prop_df[['Player', 'book', 'over_prop', 'over_line', 'under_line']]
|
589 |
prop_df.rename(columns={"over_prop": "Prop"}, inplace = True)
|
@@ -603,21 +609,21 @@ with tab5:
|
|
603 |
|
604 |
df.replace("", 0, inplace=True)
|
605 |
|
606 |
-
if prop_type_var == "NBA_GAME_PLAYER_POINTS":
|
607 |
df['Median'] = df['Points']
|
608 |
-
elif prop_type_var == "NBA_GAME_PLAYER_REBOUNDS":
|
609 |
df['Median'] = df['Rebounds']
|
610 |
-
elif prop_type_var == "NBA_GAME_PLAYER_ASSISTS":
|
611 |
df['Median'] = df['Assists']
|
612 |
-
elif prop_type_var == "NBA_GAME_PLAYER_3_POINTERS_MADE":
|
613 |
df['Median'] = df['3P']
|
614 |
-
elif prop_type_var == "NBA_GAME_PLAYER_POINTS_REBOUNDS_ASSISTS":
|
615 |
df['Median'] = df['PRA']
|
616 |
-
elif prop_type_var == "NBA_GAME_PLAYER_POINTS_REBOUNDS":
|
617 |
df['Median'] = df['Points'] + df['Rebounds']
|
618 |
-
elif prop_type_var == "NBA_GAME_PLAYER_POINTS_ASSISTS":
|
619 |
df['Median'] = df['Points'] + df['Assists']
|
620 |
-
elif prop_type_var == "NBA_GAME_PLAYER_REBOUNDS_ASSISTS":
|
621 |
df['Median'] = df['Rebounds'] + df['Assists']
|
622 |
|
623 |
flex_file = df
|
|
|
58 |
'Implied Over': '{:.2%}', 'Implied Under': '{:.2%}', 'Over Edge': '{:.2%}', 'Under Edge': '{:.2%}'}
|
59 |
prop_table_options = ['NBA_GAME_PLAYER_POINTS', 'NBA_GAME_PLAYER_REBOUNDS', 'NBA_GAME_PLAYER_ASSISTS', 'NBA_GAME_PLAYER_3_POINTERS_MADE', 'NBA_GAME_PLAYER_POINTS_REBOUNDS_ASSISTS', 'NBA_GAME_PLAYER_POINTS_REBOUNDS', 'NBA_GAME_PLAYER_POINTS_ASSISTS', 'NBA_GAME_PLAYER_REBOUNDS_ASSISTS']
|
60 |
all_sim_vars = ['NBA_GAME_PLAYER_POINTS', 'NBA_GAME_PLAYER_REBOUNDS', 'NBA_GAME_PLAYER_ASSISTS', 'NBA_GAME_PLAYER_3_POINTERS_MADE', 'NBA_GAME_PLAYER_POINTS_REBOUNDS_ASSISTS', 'NBA_GAME_PLAYER_POINTS_REBOUNDS', 'NBA_GAME_PLAYER_POINTS_ASSISTS', 'NBA_GAME_PLAYER_REBOUNDS_ASSISTS']
|
61 |
+
pick6_sim_vars = ['Points', 'Rebounds', 'Assists', '3-Pointers Made', 'Points + Assists + Rebounds', 'Points + Assists', 'Points + Rebounds', 'Assists + Rebounds']
|
62 |
sim_all_hold = pd.DataFrame(columns=['Player', 'Team', 'Book', 'Prop Type', 'Prop', 'Mean_Outcome', 'Imp Over', 'Over%', 'Imp Under', 'Under%', 'Bet?', 'Edge'])
|
63 |
|
64 |
def add_column(df):
|
|
|
394 |
mime='text/csv',
|
395 |
key='prop_source',
|
396 |
)
|
397 |
+
if game_select_var == 'Aggregate':
|
398 |
+
prop_type_var = st.selectbox('Select prop category', options = ['All Props', 'NBA_GAME_PLAYER_POINTS', 'NBA_GAME_PLAYER_REBOUNDS', 'NBA_GAME_PLAYER_ASSISTS', 'NBA_GAME_PLAYER_3_POINTERS_MADE', 'NBA_GAME_PLAYER_POINTS_REBOUNDS_ASSISTS', 'NBA_GAME_PLAYER_POINTS_REBOUNDS', 'NBA_GAME_PLAYER_POINTS_ASSISTS', 'NBA_GAME_PLAYER_REBOUNDS_ASSISTS'])
|
399 |
+
elif game_select_var == 'Pick6':
|
400 |
+
prop_type_var = st.selectbox('Select prop category', options = ['All Props', 'Points', 'Rebounds', 'Assists', '3-Pointers Made', 'Points + Assists + Rebounds', 'Points + Assists', 'Points + Rebounds', 'Assists + Rebounds'])
|
401 |
|
402 |
if st.button('Simulate Prop Category'):
|
403 |
with col2:
|
404 |
|
405 |
with df_hold_container.container():
|
406 |
if prop_type_var == 'All Props':
|
407 |
+
if game_select_var == 'Aggregate':
|
408 |
+
sim_vars = ['NBA_GAME_PLAYER_POINTS', 'NBA_GAME_PLAYER_REBOUNDS', 'NBA_GAME_PLAYER_ASSISTS', 'NBA_GAME_PLAYER_3_POINTERS_MADE', 'NBA_GAME_PLAYER_POINTS_REBOUNDS_ASSISTS', 'NBA_GAME_PLAYER_POINTS_REBOUNDS', 'NBA_GAME_PLAYER_POINTS_ASSISTS', 'NBA_GAME_PLAYER_REBOUNDS_ASSISTS']
|
409 |
+
elif game_select_var == 'Pick6':
|
410 |
+
sim_vars = ['Points', 'Rebounds', 'Assists', '3-Pointers Made', 'Points + Assists + Rebounds', 'Points + Assists', 'Points + Rebounds', 'Assists + Rebounds']
|
411 |
+
for prop in sim_vars:
|
412 |
|
413 |
if game_select_var == 'Aggregate':
|
414 |
prop_df_raw = prop_frame[['Player', 'book', 'over_prop', 'over_line', 'under_line', 'prop_type']]
|
|
|
516 |
final_outcomes = sim_all_hold
|
517 |
|
518 |
elif prop_type_var != 'All Props':
|
|
|
|
|
519 |
if game_select_var == 'Aggregate':
|
520 |
prop_df_raw = prop_frame[['Player', 'book', 'over_prop', 'over_line', 'under_line', 'prop_type']]
|
521 |
elif game_select_var == 'Pick6':
|
|
|
526 |
if game_select_var == 'Pick6':
|
527 |
books = 'Pick6'
|
528 |
prop_df = prop_df_raw.loc[prop_df_raw['book'] == books]
|
529 |
+
if prop_type_var == "NBA_GAME_PLAYER_POINTS" or prop_type_var == "Points":
|
530 |
prop_df = prop_df.loc[prop_df['prop_type'] == 'NBA_GAME_PLAYER_POINTS']
|
531 |
prop_df = prop_df[['Player', 'book', 'over_prop', 'over_line', 'under_line']]
|
532 |
prop_df.rename(columns={"over_prop": "Prop"}, inplace = True)
|
|
|
535 |
prop_df['Over'] = 1 / prop_df['over_line']
|
536 |
prop_df['Under'] = 1 / prop_df['under_line']
|
537 |
df = pd.merge(player_stats, prop_df, how='left', left_on=['Player'], right_on = ['Player'])
|
538 |
+
elif prop_type_var == "NBA_GAME_PLAYER_REBOUNDS" or prop_type_var == "Rebounds":
|
539 |
prop_df = prop_df.loc[prop_df['prop_type'] == 'NBA_GAME_PLAYER_REBOUNDS']
|
540 |
prop_df = prop_df[['Player', 'book', 'over_prop', 'over_line', 'under_line']]
|
541 |
prop_df.rename(columns={"over_prop": "Prop"}, inplace = True)
|
|
|
544 |
prop_df['Over'] = 1 / prop_df['over_line']
|
545 |
prop_df['Under'] = 1 / prop_df['under_line']
|
546 |
df = pd.merge(player_stats, prop_df, how='left', left_on=['Player'], right_on = ['Player'])
|
547 |
+
elif prop_type_var == "NBA_GAME_PLAYER_ASSISTS" or prop_type_var == "Assists":
|
548 |
prop_df = prop_df.loc[prop_df['prop_type'] == 'NBA_GAME_PLAYER_ASSISTS']
|
549 |
prop_df = prop_df[['Player', 'book', 'over_prop', 'over_line', 'under_line']]
|
550 |
prop_df.rename(columns={"over_prop": "Prop"}, inplace = True)
|
|
|
553 |
prop_df['Over'] = 1 / prop_df['over_line']
|
554 |
prop_df['Under'] = 1 / prop_df['under_line']
|
555 |
df = pd.merge(player_stats, prop_df, how='left', left_on=['Player'], right_on = ['Player'])
|
556 |
+
elif prop_type_var == "NBA_GAME_PLAYER_3_POINTERS_MADE" or prop_type_var == "3-Pointers Made":
|
557 |
prop_df = prop_df.loc[prop_df['prop_type'] == 'NBA_GAME_PLAYER_3_POINTERS_MADE']
|
558 |
prop_df = prop_df[['Player', 'book', 'over_prop', 'over_line', 'under_line']]
|
559 |
prop_df.rename(columns={"over_prop": "Prop"}, inplace = True)
|
|
|
562 |
prop_df['Over'] = 1 / prop_df['over_line']
|
563 |
prop_df['Under'] = 1 / prop_df['under_line']
|
564 |
df = pd.merge(player_stats, prop_df, how='left', left_on=['Player'], right_on = ['Player'])
|
565 |
+
elif prop_type_var == "NBA_GAME_PLAYER_POINTS_REBOUNDS_ASSISTS" or prop_type_var == "Points + Rebounds + Assists":
|
566 |
prop_df = prop_df.loc[prop_df['prop_type'] == 'NBA_GAME_PLAYER_POINTS_REBOUNDS_ASSISTS']
|
567 |
prop_df = prop_df[['Player', 'book', 'over_prop', 'over_line', 'under_line']]
|
568 |
prop_df.rename(columns={"over_prop": "Prop"}, inplace = True)
|
|
|
571 |
prop_df['Over'] = 1 / prop_df['over_line']
|
572 |
prop_df['Under'] = 1 / prop_df['under_line']
|
573 |
df = pd.merge(player_stats, prop_df, how='left', left_on=['Player'], right_on = ['Player'])
|
574 |
+
elif prop_type_var == "NBA_GAME_PLAYER_POINTS_REBOUNDS" or prop_type_var == "Points + Rebounds":
|
575 |
prop_df = prop_df.loc[prop_df['prop_type'] == 'NBA_GAME_PLAYER_POINTS_REBOUNDS']
|
576 |
prop_df = prop_df[['Player', 'book', 'over_prop', 'over_line', 'under_line']]
|
577 |
prop_df.rename(columns={"over_prop": "Prop"}, inplace = True)
|
|
|
580 |
prop_df['Over'] = 1 / prop_df['over_line']
|
581 |
prop_df['Under'] = 1 / prop_df['under_line']
|
582 |
df = pd.merge(player_stats, prop_df, how='left', left_on=['Player'], right_on = ['Player'])
|
583 |
+
elif prop_type_var == "NBA_GAME_PLAYER_POINTS_ASSISTS" or prop_type_var == "Points + Assists":
|
584 |
prop_df = prop_df.loc[prop_df['prop_type'] == 'NBA_GAME_PLAYER_POINTS_ASSISTS']
|
585 |
prop_df = prop_df[['Player', 'book', 'over_prop', 'over_line', 'under_line']]
|
586 |
prop_df.rename(columns={"over_prop": "Prop"}, inplace = True)
|
|
|
589 |
prop_df['Over'] = 1 / prop_df['over_line']
|
590 |
prop_df['Under'] = 1 / prop_df['under_line']
|
591 |
df = pd.merge(player_stats, prop_df, how='left', left_on=['Player'], right_on = ['Player'])
|
592 |
+
elif prop_type_var == "NBA_GAME_PLAYER_REBOUNDS_ASSISTS" or prop_type_var == "Assists + Rebounds":
|
593 |
prop_df = prop_df.loc[prop_df['prop_type'] == 'NBA_GAME_PLAYER_REBOUNDS_ASSISTS']
|
594 |
prop_df = prop_df[['Player', 'book', 'over_prop', 'over_line', 'under_line']]
|
595 |
prop_df.rename(columns={"over_prop": "Prop"}, inplace = True)
|
|
|
609 |
|
610 |
df.replace("", 0, inplace=True)
|
611 |
|
612 |
+
if prop_type_var == "NBA_GAME_PLAYER_POINTS" or prop_type_var == "Points":
|
613 |
df['Median'] = df['Points']
|
614 |
+
elif prop_type_var == "NBA_GAME_PLAYER_REBOUNDS" or prop_type_var == "Rebounds":
|
615 |
df['Median'] = df['Rebounds']
|
616 |
+
elif prop_type_var == "NBA_GAME_PLAYER_ASSISTS" or prop_type_var == "Assists":
|
617 |
df['Median'] = df['Assists']
|
618 |
+
elif prop_type_var == "NBA_GAME_PLAYER_3_POINTERS_MADE" or prop_type_var == "3-Pointers Made":
|
619 |
df['Median'] = df['3P']
|
620 |
+
elif prop_type_var == "NBA_GAME_PLAYER_POINTS_REBOUNDS_ASSISTS" or prop_type_var == "Points + Rebounds + Assists":
|
621 |
df['Median'] = df['PRA']
|
622 |
+
elif prop_type_var == "NBA_GAME_PLAYER_POINTS_REBOUNDS" or prop_type_var == "Points + Rebounds":
|
623 |
df['Median'] = df['Points'] + df['Rebounds']
|
624 |
+
elif prop_type_var == "NBA_GAME_PLAYER_POINTS_ASSISTS" or prop_type_var == "Points + Assists":
|
625 |
df['Median'] = df['Points'] + df['Assists']
|
626 |
+
elif prop_type_var == "NBA_GAME_PLAYER_REBOUNDS_ASSISTS" or prop_type_var == "Assists + Rebounds":
|
627 |
df['Median'] = df['Rebounds'] + df['Assists']
|
628 |
|
629 |
flex_file = df
|