Skip to content

Instantly share code, notes, and snippets.

@shekarsiri
Last active February 10, 2024 22:19
Show Gist options
  • Save shekarsiri/ac1f5cb6e9d818b141bc97aaa66a7b5a to your computer and use it in GitHub Desktop.
Save shekarsiri/ac1f5cb6e9d818b141bc97aaa66a7b5a to your computer and use it in GitHub Desktop.
Check for mutual funds with more than 8% CAGR (Cash Component - To pledge in Zerodha)
import csv
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from concurrent.futures import ThreadPoolExecutor, as_completed
def read_fund_ids_from_csv(file_path):
fund_ids = []
with open(file_path, mode='r', newline='') as file:
reader = csv.DictReader(file)
for row in reader:
fund_ids.append(row['fund_id'])
return fund_ids
def get_cagr_and_name(fund_id):
url = f"https://coin.zerodha.com/mf/fund/{fund_id}"
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--window-size=1920x1080")
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, options=chrome_options)
try:
driver.get(url)
driver.implicitly_wait(10) # Adjust timing as necessary
# Fetch the fund name
fund_name_element = driver.find_element(By.XPATH, '/html/body/div[1]/div/div/div/div[2]/div/div/div/div[1]/div/div[2]/h5')
fund_name = fund_name_element.text.strip()
# Fetch the CAGR
cagr_element = driver.find_element(By.XPATH, '/html/body/div[1]/div/div/div/div[2]/div/div/div/div[2]/div[1]/div[2]/div/div/div')
cagr_text = cagr_element.text.strip().replace('%', '') # Assuming the CAGR text ends with '%'
cagr = float(cagr_text) # Convert the CAGR text to a float
return fund_id, fund_name, cagr
except Exception as e:
return fund_id, None, None
finally:
driver.quit()
csv_file_path = 'instruments.csv'
fund_ids = read_fund_ids_from_csv(csv_file_path)
qualified_funds = []
with ThreadPoolExecutor(max_workers=5) as executor:
future_to_fund_id = {executor.submit(get_cagr_and_name, fund_id): fund_id for fund_id in fund_ids}
for future in as_completed(future_to_fund_id):
fund_id, fund_name, cagr = future.result()
if cagr is not None and cagr >= 8:
qualified_funds.append((fund_id, fund_name, cagr))
print(f"URL: https://coin.zerodha.com/mf/fund/{fund_id}, Fund Name: {fund_name}, CAGR: {cagr}%")
elif cagr is not None:
print(f"Fund Name: {fund_name}, CAGR: {cagr}% - Below threshold")
else:
print(f"Failed to retrieve data for fund {fund_id}.")
print("\nFunds with CAGR >= 8%:")
for fund_id, fund_name, cagr in qualified_funds:
print(f"URL: https://coin.zerodha.com/mf/fund/{fund_id}, Fund Name: {fund_name}, CAGR: {cagr}%")
We can make this file beautiful and searchable if this error is corrected: No commas found in this CSV file in line 0.
fund_id
INF846K01420
INF846K01CX4
INF846K01CY2
INF846K01CZ9
INF846K01453
INF846K01461
INF846K01DA0
INF846K01DB8
INF846K01DC6
INF846K01412
INF846K01438
INF846K01446
INF846K01DD4
INF846K01AX8
INF846K01Q62
INF846K01R53
INF846K01R46
INF846K01O56
INF846K01N65
INF846K01O23
INF209KB10O7
INF209K01UT5
INF209K01UU3
INF209K01RV7
INF209K01UZ2
INF209K01RU9
INF209K01VA3
INF209K01VC9
INF209K01VD7
INF209K01XP7
INF209KA1LC4
INF209K01ME4
INF209K01MJ3
INF761K01EU7
INF761K01EZ6
INF761K01CO4
INF761K01306
INF955L01450
INF955L01484
INF955L01ID0
INF955L01HY8
INF955L01AD7
INF955L01AK2
INF955L01AL0
INF955L01HW2
INF955L01HV4
INF955L01HS0
INF209K01AC3
INF209K01AD1
INF209K01AF6
INF209K01DP9
INF277KA1588
INF277KA1554
INF789F01XP8
INF789F01XQ6
INF789FA1J09
INF789FA1J17
INF789F01PG3
INF789F01PH1
INF789F01PI9
INF789F01PJ7
INF789F01PK5
INF760K01FC4
INF760K01AB7
INF760K01AC5
INF760K01AE1
INF760K01FS0
INF760K01FU6
INF760K01CU3
INF760K01CW9
INF760K01JM5
INF760K01JN3
INF760K01JO1
INF740K019I5
INF740K012I0
INF740K01607
INF740K01AD5
INF740K01615
INF740K01FK9
INF740K01714
INF740K01NF3
INF740K01QL4
INF740KA1MC8
INF740KA1MB0
INF740K01NU2
INF754K01GP7
INF754K01GW3
INF754K01GS1
INF754K01GM4
INF754K01GZ6
INF754K01JV9
INF754K01KE3
INF090I01HS2
INF090I01JW0
INF090I01JX8
INF090I01JY6
INF090I01JV2
INF090I01BB1
INF090I01BF2
INF090I01BG0
INF090I01BM8
INF090I01BH8
INF090I01BI6
INF090I01SO8
INF090I01GT2
INF090I01GU0
INF090I01GV8
INF090I01BZ0
INF090I01BY3
INF090I01CA1
INF090I01LC8
INF090I01LD6
INF090I01LA2
INF090I01LB0
INF789FB1T13
INF277KA1828
INF277KA1794
INF277KA1760
INF277KA1737
INF767K01EZ3
INF179KB1HU9
INF179KB1HT1
INF336L01QT2
INF336L01QY2
INF336L01QW6
INF336L01QX4
INF179K01772
INF179K01764
INF179K01756
INF179K01VT8
INF179K01VR2
INF179K01VS0
INF179KC1FQ0
INF179KC1FR8
INF179KC1FS6
INF179KC1FT4
INF179KC1EJ8
INF179KC1EK6
INF179KC1EL4
INF179KC1EM2
INF179KB1IC5
INF179KB1HO2
INF179KB1HP9
INF179KB1HQ7
INF179KB1HR5
INF179KB1HS3
INF179KB1HM6
INF179KB1HL8
INF179KB1HK0
INF179KC1EE9
INF179KC1EG4
INF179KC1EH2
INF179KC1EI0
INF666M01GL8
INF666M01451
INF666M01014
INF666M01519
INF666M01493
INF194K01J36
INF194K01J28
INF194K01J51
INF194K01M98
INF194K01R02
INF194K01Q94
INF194K01P87
INF194K01P79
INF194KA1RW6
INF194KA1RX4
INF194K01DZ2
INF194K01Q29
INF194K01I78
INF194K01I60
INF194K01M80
INF194K01P38
INF194K01VY7
INF194K01VX9
INF194K01WF4
INF194K01WE7
INF194K01LJ9
INF194K01LO9
INF194K01LN1
INF194K01LQ4
INF194K01LK7
INF194K01EH8
INF194K01EG0
INF194K01FA0
INF194KB1314
INF194KB1447
INF194KB1EH4
INF194KB1EK8
INF194KB1FF5
INF194KB1FI9
INF194KB1BL2
INF194KB1BS7
INF194KB1BT5
INF194KB1BU3
INF397L01AK7
INF397L01AJ9
INF194KB1BP3
INF194KB1BQ1
INF194KB1BR9
INF194KB1BV1
INF205KA1775
INF205KA1759
INF205KA1817
INF205KA1791
INF205K01RY9
INF205K01SN0
INF205K01MF9
INF205K01HN3
INF205KA1114
INF205KA1163
INF109K01JQ6
INF109K01VP3
INF109K01VQ1
INF109K01VS7
INF109K01TY9
INF109K01TX1
INF109K01TZ6
INF109K01VT5
INF109K01VU3
INF109KA1N46
INF109KA1O03
INF109KA1N61
INF109KC17E3
INF109KC18E1
INF109KC11F3
INF109KC12F1
INF109KC15K4
INF109K01JR4
INF109K01JP8
INF109K018C5
INF109K017C7
INF109K016C9
INF109K01Q15
INF109K01Q49
INF109K01Q98
INF109K01R22
INF109K01R14
INF109K01Q23
INF109K01Q31
INF109KA1O37
INF109KA1O94
INF109KA1O52
INF109KC11G1
INF109KC12G9
INF109KC15G2
INF109KC18K8
INF00XX01283
INF00XX01564
INF00XX01200
INF00XX01192
INF00XX01473
INF843K01377
INF843K01351
INF843K01369
INF843K01344
INF843K01GU8
INF843K01GV6
INF843K01GS2
INF192K01CH6
INF192K01CM6
INF192K01833
INF192K01882
INF192K01MB8
INF192K01LX4
INF843K01HC4
INF174K01NA6
INF174K01MW2
INF174K01MX0
INF174K01NB4
INF174K01FI5
INF174K01FK1
INF174K01FJ3
INF174K01KE4
INF174K01KM7
INF174K01NH1
INF174K01NE8
INF174K01NI9
INF174KA1BC6
INF174K01FL9
INF174K01NL3
INF174KA1BF9
INF209K01SZ6
INF209KB1ZL4
INF209KB1ZC3
INF209KB1ZE9
INF209KB1ZH2
INF966L01BF7
INF966L01BI1
INF966L01820
INF966L01796
INF966L01812
INF966L01317
INF966L01291
INF966L01309
INF966L01AZ7
INF966L01BC4
INF0GCD01255
INF0GCD01198
INF0GCD01503
INF0GCD01479
INF579M01621
INF767K01DL5
INF767K01DM3
INF761K01785
INF767K01IQ3
INF767K01IR1
INF767K01DN1
INF247L01734
INF767K01IS9
INF247L01726
INF03VN01043
INF03VN01126
INF767K01683
INF767K01691
INF767K01709
INF767K01733
INF917K01AY5
INF917K01BC9
INF917K01FE6
INF917K01BP1
INF917K01FI7
INF579M01506
INF200K01SH3
INF200K01AK5
INF200K01990
INF200K01AA6
INF200K01982
INF200K01AO7
INF200K01AP4
INF200K01AN9
INF200K01644
INF200K01651
INF200K01636
INF200K01669
INF200K01677
INF769K01CM1
INF769K01CN9
INF769K01CQ2
INF769K01812
INF769K01788
INF769K01IU1
INF769K01HK4
INF769K01FG6
INF769K01FE1
INF789F01XU8
INF789F01XV6
INF789FA1M61
INF789FA1M79
INF767K01RE0
INF767K01RB6
INF789F01PW0
INF789F01PX8
INF174V01044
INF174V01010
INF174V01838
INF174V01812
INF204KC1881
INF204KC1857
INF204KC1AC0
INF204KC1998
INF204KC1AO5
INF204KC1AL1
INF336L01BM9
INF336L01BN7
INF336L01BO5
INF336L01BP2
INF336L01BQ0
INF336L01LJ4
INF0GCD01453
INF0GCD01438
INF336L01CC8
INF336L01CB0
INF336L01CD6
INF336L01LK2
INF336L01OF6
INF336L01OP5
INF0K1H01040
INF767K01QI3
INF767K01QD4
INF336L01OM2
INF336L01OL4
INF336L01ON0
INF0K1H01032
INF0J8L01081
INF0J8L01073
INF663L01T84
INF663L01U16
INF663L01U24
INF663L01T01
INF663L01T43
INF959L01GF1
INF959L01GL9
INF173K01DB7
INF173K01DA9
INF173K01GT2
INF173K01GU0
INF879O01035
INF879O01068
INF879O01076
INF879O01084
INF223J01NS5
INF223J01NR7
INF663L01X21
INF663L01X54
INF223J01ND7
INF223J01AQ6
INF082J01135
INF082J01127
INF082J01143
INF082J01200
INF082J01309
INF204K01E62
INF204K01E70
INF204K01E88
INF204K01XQ6
INF204K01XR4
INF204K01XP8
INF204K01CC0
INF204K01CB2
INF204K01BV2
INF204K01BW0
INF204K01BU4
INF204K01ZP3
INF204K01ZQ1
INF204K01ZR9
INF204K01UM1
INF204K01UO7
INF204K01UP4
INF204K01US8
INF204K01UL3
INF204K01UN9
INF204K01UY6
INF204K01VB2
INF204K01VC0
INF204K01UZ3
INF204K01VA4
INF204K01ZH0
INF204K01ZI8
INF204K01ZJ6
INF204K01ZK4
INF204K01ZL2
INF205K01SD1
INF205K01ME2
INF205K01SR1
INF205K01HM5
INF204KB1R49
INF204KB1R31
INF204KB1Q65
INF204KB1Q99
INF204KB1R07
INF200K01UT4
INF200K01LQ9
INF200K01TK5
INF200K01MA1
INF200K01SZ5
INF200KA19P6
INF200KA17Q8
INF200KA16Q0
INF200KA15Q2
INF200KA12Q9
INF200KA18Q6
INF090I01CS3
INF090I01CT1
INF090I01CU9
INF903JA1FR6
INF903JA1FJ3
INF903JA1HG5
INF903JA1GZ7
INF277K01YD8
INF277K01DN1
INF277K01535
INF277K01519
INF277K014C0
INF277K01LQ7
INF277K01YE6
INF277K01OX7
INF277K01PR6
INF277K017T7
INF277K016T9
INF277K018T5
INF582M01HW2
INF582M01ID0
INF582M01021
INF582M01682
INF582M01013
INF582M01674
INF582M01HG5
INF582M01HO9
INF582M01FB0
INF582M01FA2
INF582M01FJ3
INF789FB1S71
INF789F1AVR7
INF789F1AVI6
INF789F01646
INF789F01661
INF789F01653
INF789F01604
INF789F01AZ5
INF789F01BB4
INF789F01BF5

Axis Gilt Fund, CAGR: 8.95% https://coin.zerodha.com/mf/fund/INF846K01DD4

Axis Gilt Fund, CAGR: 8.37% https://coin.zerodha.com/mf/fund/INF846K01AX8

Aditya Birla Sun Life CRISIL IBX Gilt - April 2029 Index Fund, CAGR: 8.14% https://coin.zerodha.com/mf/fund/INF209KB10O7

Baroda BNP Paribas Gilt Fund - Growth, CAGR: 8.26% https://coin.zerodha.com/mf/fund/INF955L01450

Baroda BNP Paribas Gilt Fund - Plan B, CAGR: 8.6% https://coin.zerodha.com/mf/fund/INF955L01AD7

Aditya Birla Sun Life Government Securities Fund, CAGR: 8.51% https://coin.zerodha.com/mf/fund/INF209K01AC3

Canara Robeco Gilt 1988 Fund, CAGR: 8.52% https://coin.zerodha.com/mf/fund/INF760K01FC4

DSP 10Y G-Sec Fund, CAGR: 8.46% https://coin.zerodha.com/mf/fund/INF740K019I5

DSP 10Y G-Sec Fund, CAGR: 8.24% https://coin.zerodha.com/mf/fund/INF740K012I0

DSP Government Securities Fund, CAGR: 10.0% https://coin.zerodha.com/mf/fund/INF740K01NF3

LIC MF Gilt Fund, CAGR: 8.55% https://coin.zerodha.com/mf/fund/INF767K01EZ3

HDFC Gilt Fund, CAGR: 8.15% https://coin.zerodha.com/mf/fund/INF179K01VS0

Bandhan G - Sec Fund - Investment Plan, CAGR: 9.4% https://coin.zerodha.com/mf/fund/INF194KA1RX4

Bandhan G - Sec Fund - Investment Plan, CAGR: 9.4% https://coin.zerodha.com/mf/fund/INF194KA1RW6

Bandhan G - Sec Fund - Investment Plan, CAGR: 10.08% https://coin.zerodha.com/mf/fund/INF194K01Q29

Bandhan G - Sec Fund - Investment Plan, CAGR: 9.4% https://coin.zerodha.com/mf/fund/INF194K01DZ2

Bandhan G - Sec Fund - Constant Maturity Plan, CAGR: 8.38% https://coin.zerodha.com/mf/fund/INF194K01FA0

ICICI Prudential Gilt Fund, CAGR: 8.61% https://coin.zerodha.com/mf/fund/INF109K01JQ6

ICICI Prudential Constant Maturity Gilt Fund, CAGR: 8.2% https://coin.zerodha.com/mf/fund/INF109KA1N46

ICICI Prudential Gilt Fund, CAGR: 8.61% https://coin.zerodha.com/mf/fund/INF109K01JR4

ICICI Prudential Gilt Fund, CAGR: 9.16% https://coin.zerodha.com/mf/fund/INF109K018C5

ICICI Prudential Gilt Fund, CAGR: 9.16% https://coin.zerodha.com/mf/fund/INF109K016C9

ICICI Prudential Nifty G-Sec Dec 2030 Index Fund, CAGR: 8.49% https://coin.zerodha.com/mf/fund/INF109KC18K8

Edelweiss Government Securities Fund, CAGR: 8.97% https://coin.zerodha.com/mf/fund/INF843K01GU8

Edelweiss Government Securities Fund, CAGR: 8.97% https://coin.zerodha.com/mf/fund/INF843K01GS2

Edelweiss Government Securities Fund, CAGR: 8.25% https://coin.zerodha.com/mf/fund/INF843K01HC4

Kotak Gilt Fund, CAGR: 8.15% https://coin.zerodha.com/mf/fund/INF174K01FI5

Kotak Gilt Fund, CAGR: 8.15% https://coin.zerodha.com/mf/fund/INF174K01FK1

Kotak Gilt Fund, CAGR: 9.29% https://coin.zerodha.com/mf/fund/INF174K01KE4

SBI Magnum Gilt Fund, CAGR: 9.27% https://coin.zerodha.com/mf/fund/INF200K01SH3

SBI Magnum Gilt Fund - PF, CAGR: 8.75% https://coin.zerodha.com/mf/fund/INF200K01AK5

SBI Magnum Gilt Fund, CAGR: 8.75% https://coin.zerodha.com/mf/fund/INF200K01990

SBI Magnum Gilt Fund, CAGR: 8.75% https://coin.zerodha.com/mf/fund/INF200K01AA6

SBI Magnum Gilt Fund, CAGR: 8.75% https://coin.zerodha.com/mf/fund/INF200K01982

SBI Magnum Constant Maturity Fund, CAGR: 8.16% https://coin.zerodha.com/mf/fund/INF200K01AO7

SBI Magnum Constant Maturity Fund, CAGR: 8.16% https://coin.zerodha.com/mf/fund/INF200K01AN9

Mirae Asset CRISIL IBX Gilt Index - April 2033 Index Fund, CAGR: 8.19% https://coin.zerodha.com/mf/fund/INF769K01IU1

PGIM India Gilt Fund, CAGR: 9.28% https://coin.zerodha.com/mf/fund/INF223J01ND7

Nippon India Gilt Securities Fund - Defined Maturity Date Op, CAGR: 8.8% https://coin.zerodha.com/mf/fund/INF204K01E88

Nippon India Gilt Securities Fund Auto Capital Appre Payout, CAGR: 8.8% https://coin.zerodha.com/mf/fund/INF204K01E70

Nippon India Gilt Securities Fund, CAGR: 8.8% https://coin.zerodha.com/mf/fund/INF204K01XP8

Invesco India Gilt Fund, CAGR: 8.97% https://coin.zerodha.com/mf/fund/INF205K01SR1

SBI CRISIL IBX Gilt Index - June 2036 Fund, CAGR: 9.32% https://coin.zerodha.com/mf/fund/INF200KA19P6

SBI CRISIL IBX Gilt Index - June 2036 Fund, CAGR: 9.6% https://coin.zerodha.com/mf/fund/INF200KA12Q9

SBI CRISIL IBX Gilt Index - April 2029 Fund, CAGR: 8.18% https://coin.zerodha.com/mf/fund/INF200KA18Q6

Tata Gilt Securities Fund, CAGR: 8.57% https://coin.zerodha.com/mf/fund/INF277K01DN1

Tata Gilt Securities Fund, CAGR: 9.53% https://coin.zerodha.com/mf/fund/INF277K01OX7

Union Gilt Fund, CAGR: 8.24% https://coin.zerodha.com/mf/fund/INF582M01HW2

UTI Gilt Fund with 10 year Constant Duration, CAGR: 8.39% https://coin.zerodha.com/mf/fund/INF789F1AVR7

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment