示例#1
0
def linear_reg():
    ibm_data = data_retrieval.get_time_series(
            'download_yahoo_timeseries', 
            {
                'symbol': 'IBM', 
                'start': datetime.datetime(2003, 11, 11), 
                'end': datetime.datetime(2013, 11, 11)
            })

    spx_data = data_retrieval.get_time_series(
            'download_yahoo_timeseries', 
            {
                'symbol': '^GSPC', 
                'start': datetime.datetime(2003, 11, 11), 
                'end': datetime.datetime(2013, 11, 11)
            })

    series = zip(*timeseries.common_dates(
            ibm_data['IBM'][data_loader.TIMESERIES], 
            spx_data['^GSPC'][data_loader.TIMESERIES]))

    ibm = [float(val) for val in series[1]]
    spx = [float(val) for val in series[2]]
    slope, intercept, r_value, _, _ = algorithms.linreg(ibm, spx) 
    print('Beta: {0}'.format(intercept))
    print('Slope: {0}'.format(slope))
    print('RSq: {0}'.format(r_value**2))

    series_for_charting = [('IBM', ibm), ('SPX', spx)]
    charts.line(series[0], series_for_charting)
    charts.scatter(series_for_charting)
示例#2
0
    def test_common_dates(self):
        '''
        Test the common_dates correctly returns an ordered result on the
        date intersection
        '''
        x = [
                (datetime.datetime(2013, 10, 31), 4.53),
                (datetime.datetime(2013, 11, 4), -2.89),
                (datetime.datetime(2013, 11, 5), -0.18),
                (datetime.datetime(2013, 11, 6), 1.36),
                (datetime.datetime(2013, 11, 7), 6.32),
                (datetime.datetime(2013, 11, 12), -6.30)
                ]
        # Deliberately put dates slightly out of order
        y = [
                (datetime.datetime(2013, 10, 31), 8.53),
                (datetime.datetime(2013, 11, 1), -9.87),
                (datetime.datetime(2013, 11, 6), 11.36),
                (datetime.datetime(2013, 11, 5), 1.18),
                (datetime.datetime(2013, 11, 7), -6.32),
                (datetime.datetime(2013, 11, 8), 3.51),
                (datetime.datetime(2013, 11, 12), -2.30),
                (datetime.datetime(2013, 11, 13), 3.51)
                ]

        merged = timeseries.common_dates(x, y)

        expected_result = [
                (datetime.datetime(2013, 10, 31), 4.53, 8.53),
                (datetime.datetime(2013, 11, 5), -0.18, 1.18),
                (datetime.datetime(2013, 11, 6), 1.36, 11.36),
                (datetime.datetime(2013, 11, 7), 6.32, -6.32),
                (datetime.datetime(2013, 11, 12), -6.30, -2.30)
                ]
        self.assertEqual(merged, expected_result)