-
Notifications
You must be signed in to change notification settings - Fork 0
/
DailyHorizonReturnsCalc
48 lines (44 loc) · 2.17 KB
/
DailyHorizonReturnsCalc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
from urllib import urlencode
import urllib2
from bs4 import BeautifulSoup
from datetime import datetime
import csv
import time
import datetime
arr = [1,3,5,10]
url = "http://www.amfiindia.com/modules/NavHistoryCompare"
fo = open("foo.txt", "wb")
def is_number(s):
try:
float(s)
return True
except ValueError:
return False
with open('MF_IP.csv', 'rb') as csvfile:
spamreader = csv.reader(csvfile, delimiter=',')
for row in spamreader:
print row
# cant take today since it will load with a days lag
ToDt = datetime.datetime.now() - datetime.timedelta(days=1)
if datetime.datetime.now().weekday() == 5:
ToDt = ToDt - datetime.timedelta(days=1)
elif datetime.datetime.now().weekday() == 6:
ToDt = ToDt - datetime.timedelta(days=2)
for x in range(len(arr)):
frmDt1 = ToDt - datetime.timedelta(days=365.25*arr[x])
if frmDt1.weekday() == 5:
frmDt1 = frmDt1 - datetime.timedelta(days=1)
elif frmDt1.weekday() == 6:
frmDt1 = frmDt1 - datetime.timedelta(days=2)
values = {'mfID' : row[1], 'scID' : row[0], 'fDate' : frmDt1.strftime("%d-%b-%Y"), 'tDate' : ToDt.strftime("%d-%b-%Y") }
data = urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
the_page = response.read()
soup = BeautifulSoup( the_page )
MFDTLS = soup.findAll('th', {'class': 'txt-lft'})
NAVDTLS = soup.findAll('td')
if len(NAVDTLS)>6 and is_number( str(NAVDTLS[5].text) ) and is_number( str(NAVDTLS[1].text) ) and float(str(NAVDTLS[1].text))>0 :
growth = pow( (float(NAVDTLS[5].text)/ float(NAVDTLS[1].text)) , ( 1/float(arr[x]) ) ) - 1
fo.write( MFDTLS[0].text+'#'+MFDTLS[1].text+'#'+datetime.datetime.strptime( NAVDTLS[4].text, '%d-%b-%Y %H:%M:%S').strftime('%Y-%m-%d')+'#'+NAVDTLS[1].text+'#'+datetime.datetime.strptime( NAVDTLS[8].text, '%d-%b-%Y %H:%M:%S').strftime('%Y-%m-%d')+'#'+NAVDTLS[5].text+'#'+str(arr[x])+'#'+str(growth*100)+'#'+datetime.datetime.now().strftime('%Y-%m-%d')+"\n" )
fo.close()