Пример #1
0
def view_calendar(year, month, day):
    print('')
    print('\033[1m------ CALENDAR ------\033[0m')

    cal = Calendar(year, month, day)

    line2 = cal.get_calendar_year(year)
    line3 = list(map(list, zip(*line2)))

    print('')
    config = ConfigUtil()
    column_num = int(config.get('calendar', 'column_num'))
    row_num = math.floor(12 / column_num)
    #print('column_num:', column_num, 'row_num:', row_num)

    for r in range(row_num):
        for x in line3:
            print("  ".join(x[column_num * r:column_num * (r + 1)]))
Пример #2
0
 def time_series_range(self, institution, qtr_start, qtr_end):
     self.institution = institution
     dates =  Calendar().quarter_end_list(qtr_start,  qtr_end)
     frames = []
     for date in dates:
         df = self.get(date = date, institution=institution) # FIXME; terrible way to call. get all data in one call. cmon...
         df = df.sort_values(by=['value'], ascending=False)
         frames.append(df)
     self.ts = pd.concat(frames).reset_index(drop=True)
     self.ts.value = self.ts.value.astype(float) / 1000000
     self.ts['_ix'] = self.ts.ticker.astype(str) + '_' + self.ts.securitytype.astype(str)
     return self.ts
Пример #3
0
def main(month='1', year='2012'):
    # builds calendar using Python dates
    calendar = Calendar(month, year)
    cal_html = calendar.build()

    # provide values for use in building the Javascript calendar
    month = int(month)
    months = (
        'January', 'February', 'March', 'April',
        'May', 'June', 'July', 'August',
        'September', 'October', 'November', 'December'
    )
    month_name = months[month - 1]
    prev_year = int(year)
    next_year = int(year)

    # used for switching between months (links)
    prev_month = month - 1
    next_month = month + 1
    if month == 1:
        prev_month = 12
        prev_year -= 1
    elif month == 12:
        next_month = 1
        next_year += 1

    prev_month_name = months[prev_month - 1]
    next_month_name = months[next_month - 1]

    # Javascript calculates dates differently, so subtract 1
    month -= 1

    return render_template('calendar',
                           year=year, month=month,
                           month_name=month_name,
                           prev_month=prev_month,
                           prev_month_name=prev_month_name,
                           next_month=next_month, next_year=next_year,
                           next_month_name=next_month_name,
                           cal_html=cal_html)
Пример #4
0
    def get(self, years: list = [Calendar().current_year()]):
        ''' parse US Treasury.gov website for yield curve rates returning concatenated xml content for a list of years
        https://home.treasury.gov/resource-center/data-chart-center/interest-rates/TextView?type=daily_treasury_yield_curve&field_tdr_date_value=2022
        '''

        columns = [
            '1 Month', '2 Month', '3 Month', '6 Month', '1 Year', '2 Year',
            '3 Year', '5 Year', '7 Year', '10 Year', '20 Year', '30 Year'
        ]
        identifiers = [
            'd:NEW_DATE', 'd:BC_1MONTH', 'd:BC_2MONTH', 'd:BC_3MONTH',
            'd:BC_6MONTH', 'd:BC_1YEAR', 'd:BC_2YEAR', 'd:BC_3YEAR',
            'd:BC_5YEAR', 'd:BC_7YEAR', 'd:BC_10YEAR', 'd:BC_20YEAR',
            'd:BC_30YEAR'
        ]

        frames = []
        for year in years:

            url = f'https://home.treasury.gov/resource-center/data-chart-center/interest-rates/pages/xml?data=daily_treasury_yield_curve&field_tdr_date_value={year}'
            document = requests.get(url)
            soup = BeautifulSoup(document.content, "lxml-xml")
            frames_year = []

            for content in soup.find_all('m:properties'):

                vlist = []
                for text_value in identifiers:
                    vlist.append(content.find(text_value).text)

                df = pd.DataFrame(columns=columns).transpose()
                df[vlist[0]] = vlist[1:]
                frames_year.append(df.transpose())

            df = pd.concat(frames_year)
            frames.append(df)

        df = pd.concat(frames).reset_index(drop=False).rename(
            columns={'index': 'date'})
        df.date = pd.to_datetime(df.date)
        for c in df.columns:
            if c != 'date':
                df[c] = pd.to_numeric(df[c])
        self.df = df
        return self.df
Пример #5
0
def forecast(request):  
    
    ticker = request.POST.get("tickers")
    if ticker in ['', None, 'None'] or len(str(ticker)) < 1:
        ticker = 'SPY'
    print(ticker)

    # TODO: call from retreiver
    import pandas_datareader as data
    import pandas as pd
    data_source = 'yahoo'
    start_date = '2000-01-01'
    end_date = Calendar().today()
    stockdata = data.DataReader(ticker, data_source, start_date, end_date)['Close']
    stockdata =  pd.DataFrame(stockdata).rename(columns={'Close':ticker})

    train_start = request.POST.get("train_start")
    train_end = request.POST.get("train_end")
    test_start = request.POST.get("test_start")
    test_end = request.POST.get("test_end")
    if train_start in ['', None, 'None']:
        train_start = -0.6
        train_end = -0.10
        test_start = -0.4
        test_end = -0.01

    # FIXME
    ts = TimeSeries(data=stockdata, column=ticker)
    ts.decomposition(model='additive')
    ts.check_stationarity()
    ts.auto_correlation( lags=24 )
    ts.prophet_forecast(int(train_start), int(train_end), int(test_start), int(test_end))

    img_dirp = os.path.join(os.getcwd(), 'pynance/static/img')

    print(f'{ticker}_forecast.png')
    context = {
        'seasonal_decompose.png':os.path.join(img_dirp, 'seasonal_decompose.png'),
        'actual_v_predicted.png':os.path.join(img_dirp, 'actual_v_predicted.png'),
        'prophet_forecast.png':os.path.join(img_dirp, 'prophet_forecast.png'),
        'autocorrelation.png':os.path.join(img_dirp, 'autocorrelation.png'),
        'components.png':os.path.join(img_dirp, 'components.png'),
    }

    return render(request, 'forecast.html', context)
import pandas as pd
import numpy as np
import nasdaqdatalink
import sys, os

cwd = os.getcwd()
sys.path.append(os.path.dirname(cwd))
from lib.nasdaq import Fundamentals, Metrics, Tickers, Nasdaq
from lib.calendar import Calendar

cal = Calendar()
from dateutil.relativedelta import relativedelta
from postgres import Postgres

import warnings

warnings.simplefilter(action='ignore', category=pd.errors.PerformanceWarning)
warnings.simplefilter(action='ignore', category=RuntimeWarning)

import populate_fundamentals as popfun
'''
calculate quartiles for every metric across each sector and industry for all historical time periods
'''


def init():

    calendardates = cal.quarter_end_list('2018-12-31',
                                         cal.previous_quarter_end())

    tickers = Tickers().get()
Пример #7
0
 def melt(self, years=[Calendar().current_year()]):
     self.melted = self.df.melt(id_vars='date')
     self.melted.value = pd.to_numeric(self.melted.value)
     return self.melted
Пример #8
0
    def __init__(self):
        super().__init__()
        self.authenticate()

        self.prev_qtr_end = Calendar().previous_quarter_end()