RunningSLOPE
Updated 2023-11-14 15:32:11.127000
Syntax
SELECT [westclintech].[wct].[RunningSLOPE](
<@Y, float,>
,<@X, float,>
,<@RowNum, int,>
,<@Id, tinyint,>)
Description
Use the scalar function RunningSLOPE to calculate the slope of a series of x- and y-values within a resultant table or partition, without the need for a self-join. The slope value is calculated from the first row of the resultant table or partition through to the current row. If the column values are presented to the functions out of order, an error message will be generated.
Arguments
@Id
a unique identifier for the RunningSLOPE calculation. @Id allows you to specify multiple RunningSLOPE calculations within a resultant table. @Id is an expression of type tinyint or of a type that can be implicitly converted to tinyint.
@X
the x-value passed into the function. @X is an expression of type float or of a type that can be implicitly converted to float.
@RowNum
the number of the row within the group for which the sum is being calculated. If @RowNum for the current row in a set is less than or equal to the previous @RowNum and @RowNum is not equal to 1, an error message will be generated. @RowNum is an expression of type int or of a type that can be implicitly converted to int.
@Y
the y-value passed into the function. @Y is an expression of type float or of a type that can be implicitly converted to float.
Return Type
float
Remarks
If @Id is NULL then @Id = 0.
@RowNum must be in ascending order.
To calculate the slope over a window of x- and y-values use the MovingSLOPE function.
If @RowNum = 1 then RunningSLOPE is NULL.
To calculate a single slope value for a set of x- and y-values use the SLOPE function.
There may be cases where the order in which the data are returned to the function and the order in which the results are returned are different, generally due to parallelism. You can use OPTION(MAXDOP 1) or OPTION(MAXDOP 1,FORCE ORDER) to help eliminate this problem.
Examples
In this example we will calculate the slope, over time, in the closing prices for some stock indices. We will create a temporary table, #p, populate it with some data and then run the SELECT.
--Create the temporary table
CREATE TABLE #p
(
ticker varchar(4),
date_trade datetime,
price_open money,
price_high money,
price_low money,
price_close money,
volume bigint,
price_adj_close money,
PRIMARY KEY (
ticker,
date_trade
)
);
--Populate the table with some data
INSERT INTO #p
VALUES
('GSPC', '2012-10-26', 1412.97, 1417.09, 1403.28, 1411.94, 3284910000, 1411.94);
INSERT INTO #p
VALUES
('GSPC', '2012-10-25', 1409.74, 1421.12, 1405.14, 1412.97, 3512640000, 1412.97);
INSERT INTO #p
VALUES
('GSPC', '2012-10-24', 1413.2, 1420.04, 1407.1, 1408.75, 3385970000, 1408.75);
INSERT INTO #p
VALUES
('GSPC', '2012-10-23', 1433.74, 1433.74, 1407.56, 1413.11, 3587670000, 1413.11);
INSERT INTO #p
VALUES
('GSPC', '2012-10-22', 1433.21, 1435.46, 1422.06, 1433.81, 3216220000, 1433.81);
INSERT INTO #p
VALUES
('GSPC', '2012-10-19', 1457.34, 1457.34, 1429.85, 1433.19, 3875170000, 1433.19);
INSERT INTO #p
VALUES
('GSPC', '2012-10-18', 1460.94, 1464.02, 1452.63, 1457.34, 3880030000, 1457.34);
INSERT INTO #p
VALUES
('GSPC', '2012-10-17', 1454.22, 1462.2, 1453.35, 1460.91, 3655320000, 1460.91);
INSERT INTO #p
VALUES
('GSPC', '2012-10-16', 1440.31, 1455.51, 1440.31, 1454.92, 3568770000, 1454.92);
INSERT INTO #p
VALUES
('GSPC', '2012-10-15', 1428.75, 1441.31, 1427.24, 1440.13, 3483810000, 1440.13);
INSERT INTO #p
VALUES
('GSPC', '2012-10-12', 1432.84, 1438.43, 1425.53, 1428.59, 3134750000, 1428.59);
INSERT INTO #p
VALUES
('GSPC', '2012-10-11', 1432.82, 1443.9, 1432.82, 1432.84, 3672540000, 1432.84);
INSERT INTO #p
VALUES
('GSPC', '2012-10-10', 1441.48, 1442.52, 1430.64, 1432.56, 3225060000, 1432.56);
INSERT INTO #p
VALUES
('GSPC', '2012-10-09', 1455.9, 1455.9, 1441.18, 1441.48, 3216320000, 1441.48);
INSERT INTO #p
VALUES
('GSPC', '2012-10-08', 1460.93, 1460.93, 1453.1, 1455.88, 2328720000, 1455.88);
INSERT INTO #p
VALUES
('GSPC', '2012-10-05', 1461.4, 1470.96, 1456.89, 1460.93, 3172940000, 1460.93);
INSERT INTO #p
VALUES
('GSPC', '2012-10-04', 1451.08, 1463.14, 1451.08, 1461.4, 3615860000, 1461.4);
INSERT INTO #p
VALUES
('GSPC', '2012-10-03', 1446.05, 1454.3, 1441.99, 1450.99, 3531640000, 1450.99);
INSERT INTO #p
VALUES
('GSPC', '2012-10-02', 1444.99, 1451.52, 1439.01, 1445.75, 3321790000, 1445.75);
INSERT INTO #p
VALUES
('GSPC', '2012-10-01', 1440.9, 1457.14, 1440.9, 1444.49, 3505080000, 1444.49);
INSERT INTO #p
VALUES
('GSPC', '2012-09-28', 1447.13, 1447.13, 1435.6, 1440.67, 3509230000, 1440.67);
INSERT INTO #p
VALUES
('GSPC', '2012-09-27', 1433.36, 1450.2, 1433.36, 1447.15, 3150330000, 1447.15);
INSERT INTO #p
VALUES
('GSPC', '2012-09-26', 1441.6, 1441.6, 1430.53, 1433.32, 3565380000, 1433.32);
INSERT INTO #p
VALUES
('GSPC', '2012-09-25', 1456.94, 1463.24, 1441.59, 1441.59, 3739900000, 1441.59);
INSERT INTO #p
VALUES
('GSPC', '2012-09-24', 1459.76, 1460.72, 1452.06, 1456.89, 3008920000, 1456.89);
INSERT INTO #p
VALUES
('GSPC', '2012-09-21', 1460.34, 1467.07, 1459.51, 1460.15, 4833870000, 1460.15);
INSERT INTO #p
VALUES
('GSPC', '2012-09-20', 1461.05, 1461.23, 1449.98, 1460.26, 3382520000, 1460.26);
INSERT INTO #p
VALUES
('GSPC', '2012-09-19', 1459.5, 1465.15, 1457.88, 1461.05, 3451360000, 1461.05);
INSERT INTO #p
VALUES
('GSPC', '2012-09-18', 1461.19, 1461.47, 1456.13, 1459.32, 3377390000, 1459.32);
INSERT INTO #p
VALUES
('GSPC', '2012-09-17', 1465.42, 1465.63, 1457.55, 1461.19, 3482430000, 1461.19);
INSERT INTO #p
VALUES
('GSPC', '2012-09-14', 1460.07, 1474.51, 1460.07, 1465.77, 5041990000, 1465.77);
INSERT INTO #p
VALUES
('GSPC', '2012-09-13', 1436.56, 1463.76, 1435.34, 1459.99, 4606550000, 1459.99);
INSERT INTO #p
VALUES
('GSPC', '2012-09-12', 1433.56, 1439.15, 1432.99, 1436.56, 3641200000, 1436.56);
INSERT INTO #p
VALUES
('GSPC', '2012-09-11', 1429.13, 1437.76, 1429.13, 1433.56, 3509630000, 1433.56);
INSERT INTO #p
VALUES
('GSPC', '2012-09-10', 1437.92, 1438.74, 1428.98, 1429.08, 3223670000, 1429.08);
INSERT INTO #p
VALUES
('GSPC', '2012-09-07', 1432.12, 1437.92, 1431.45, 1437.92, 3717620000, 1437.92);
INSERT INTO #p
VALUES
('GSPC', '2012-09-06', 1403.74, 1432.12, 1403.74, 1432.12, 3952870000, 1432.12);
INSERT INTO #p
VALUES
('GSPC', '2012-09-05', 1404.94, 1408.81, 1401.25, 1403.44, 3389110000, 1403.44);
INSERT INTO #p
VALUES
('GSPC', '2012-09-04', 1406.54, 1409.31, 1396.56, 1404.94, 3200310000, 1404.94);
INSERT INTO #p
VALUES
('GSPC', '2012-08-31', 1400.07, 1413.09, 1398.96, 1406.58, 2938250000, 1406.58);
INSERT INTO #p
VALUES
('GSPC', '2012-08-30', 1410.08, 1410.08, 1397.01, 1399.48, 2530280000, 1399.48);
INSERT INTO #p
VALUES
('GSPC', '2012-08-29', 1409.32, 1413.95, 1406.57, 1410.49, 2571220000, 1410.49);
INSERT INTO #p
VALUES
('GSPC', '2012-08-28', 1410.44, 1413.63, 1405.59, 1409.3, 2629090000, 1409.3);
INSERT INTO #p
VALUES
('GSPC', '2012-08-27', 1411.13, 1416.17, 1409.11, 1410.44, 2472500000, 1410.44);
INSERT INTO #p
VALUES
('GSPC', '2012-08-24', 1401.99, 1413.46, 1398.04, 1411.13, 2598790000, 1411.13);
INSERT INTO #p
VALUES
('DJI', '2012-10-26', 13104.22, 13151.72, 13040.17, 13107.21, 1346400, 13107.21);
INSERT INTO #p
VALUES
('DJI', '2012-10-25', 13079.64, 13214.11, 13017.37, 13103.68, 1145900, 13103.68);
INSERT INTO #p
VALUES
('DJI', '2012-10-24', 13103.53, 13155.21, 13063.63, 13077.34, 1106700, 13077.34);
INSERT INTO #p
VALUES
('DJI', '2012-10-23', 13344.9, 13344.9, 13083.28, 13102.53, 1222200, 13102.53);
INSERT INTO #p
VALUES
('DJI', '2012-10-22', 13344.28, 13368.55, 13235.15, 13345.89, 1218800, 13345.89);
INSERT INTO #p
VALUES
('DJI', '2012-10-19', 13545.33, 13545.49, 13312.22, 13343.51, 2390800, 13343.51);
INSERT INTO #p
VALUES
('DJI', '2012-10-18', 13553.24, 13588.73, 13510.93, 13548.94, 1284100, 13548.94);
INSERT INTO #p
VALUES
('DJI', '2012-10-17', 13539.63, 13561.65, 13468.9, 13557, 1355700, 13557);
INSERT INTO #p
VALUES
('DJI', '2012-10-16', 13423.84, 13556.37, 13423.76, 13551.78, 1134500, 13551.78);
INSERT INTO #p
VALUES
('DJI', '2012-10-15', 13329.54, 13437.66, 13325.93, 13424.23, 1148800, 13424.23);
INSERT INTO #p
VALUES
('DJI', '2012-10-12', 13325.62, 13401.32, 13296.43, 13328.85, 1137400, 13328.85);
INSERT INTO #p
VALUES
('DJI', '2012-10-11', 13346.28, 13428.49, 13326.12, 13326.39, 866300, 13326.39);
INSERT INTO #p
VALUES
('DJI', '2012-10-10', 13473.53, 13478.83, 13327.62, 13344.97, 1011200, 13344.97);
INSERT INTO #p
VALUES
('DJI', '2012-10-09', 13582.88, 13592.33, 13473.31, 13473.53, 1036300, 13473.53);
INSERT INTO #p
VALUES
('DJI', '2012-10-08', 13589.26, 13610.38, 13552.09, 13583.65, 713000, 13583.65);
INSERT INTO #p
VALUES
('DJI', '2012-10-05', 13569.18, 13661.87, 13568.75, 13610.15, 1155000, 13610.15);
INSERT INTO #p
VALUES
('DJI', '2012-10-04', 13495.18, 13594.33, 13495.18, 13575.36, 1063900, 13575.36);
INSERT INTO #p
VALUES
('DJI', '2012-10-03', 13479.21, 13536.27, 13439.12, 13494.61, 1038900, 13494.61);
INSERT INTO #p
VALUES
('DJI', '2012-10-02', 13515.3, 13567.06, 13424.92, 13482.36, 907300, 13482.36);
INSERT INTO #p
VALUES
('DJI', '2012-10-01', 13437.66, 13598.25, 13437.66, 13515.11, 1061200, 13515.11);
INSERT INTO #p
VALUES
('DJI', '2012-09-28', 13485.89, 13487.66, 13367.27, 13437.13, 1469500, 13437.13);
INSERT INTO #p
VALUES
('DJI', '2012-09-27', 13413.47, 13522.83, 13413.47, 13485.97, 1139900, 13485.97);
INSERT INTO #p
VALUES
('DJI', '2012-09-26', 13458.63, 13480.37, 13406.91, 13413.51, 1243500, 13413.51);
INSERT INTO #p
VALUES
('DJI', '2012-09-25', 13559.92, 13620.21, 13457.25, 13457.55, 1386300, 13457.55);
INSERT INTO #p
VALUES
('DJI', '2012-09-24', 13577.85, 13601.9, 13521.68, 13558.92, 1203700, 13558.92);
INSERT INTO #p
VALUES
('DJI', '2012-09-21', 13597.24, 13647.1, 13571.53, 13579.47, 4296100, 13579.47);
INSERT INTO #p
VALUES
('DJI', '2012-09-20', 13575.17, 13599.02, 13503, 13596.93, 1179100, 13596.93);
INSERT INTO #p
VALUES
('DJI', '2012-09-19', 13565.41, 13626.48, 13556.74, 13577.96, 1162100, 13577.96);
INSERT INTO #p
VALUES
('DJI', '2012-09-18', 13552.33, 13582.12, 13517.81, 13564.64, 1207200, 13564.64);
INSERT INTO #p
VALUES
('DJI', '2012-09-17', 13588.57, 13593.15, 13526.67, 13553.1, 1280200, 13553.1);
INSERT INTO #p
VALUES
('DJI', '2012-09-14', 13540.4, 13653.24, 13533.94, 13593.37, 1851600, 13593.37);
INSERT INTO #p
VALUES
('DJI', '2012-09-13', 13329.71, 13573.33, 13325.11, 13539.86, 1517700, 13539.86);
INSERT INTO #p
VALUES
('DJI', '2012-09-12', 13321.62, 13373.62, 13317.52, 13333.35, 1115200, 13333.35);
INSERT INTO #p
VALUES
('DJI', '2012-09-11', 13254.6, 13354.34, 13253.21, 13323.36, 1049200, 13323.36);
INSERT INTO #p
VALUES
('DJI', '2012-09-10', 13308.56, 13324.1, 13251.39, 13254.29, 1238100, 13254.29);
INSERT INTO #p
VALUES
('DJI', '2012-09-07', 13289.53, 13320.27, 13266.22, 13306.64, 1422100, 13306.64);
INSERT INTO #p
VALUES
('DJI', '2012-09-06', 13045.23, 13294.13, 13045.08, 13292, 1286500, 13292);
INSERT INTO #p
VALUES
('DJI', '2012-09-05', 13036.09, 13095.91, 13018.74, 13047.48, 925500, 13047.48);
INSERT INTO #p
VALUES
('DJI', '2012-09-04', 13092.15, 13092.39, 12977.09, 13035.94, 1039200, 13035.94);
INSERT INTO #p
VALUES
('DJI', '2012-08-31', 13002.72, 13151.87, 13002.64, 13090.84, 1197800, 13090.84);
INSERT INTO #p
VALUES
('DJI', '2012-08-30', 13101.29, 13101.37, 12978.91, 13000.71, 899800, 13000.71);
INSERT INTO #p
VALUES
('DJI', '2012-08-29', 13103.46, 13144.81, 13081.27, 13107.48, 915300, 13107.48);
INSERT INTO #p
VALUES
('DJI', '2012-08-28', 13122.74, 13147.32, 13081.12, 13102.99, 816300, 13102.99);
INSERT INTO #p
VALUES
('DJI', '2012-08-27', 13157.74, 13176.17, 13115.46, 13124.67, 960700, 13124.67);
INSERT INTO #p
VALUES
('DJI', '2012-08-24', 13052.82, 13175.51, 13027.2, 13157.97, 880300, 13157.97);
INSERT INTO #p
VALUES
('IXIC', '2012-10-26', 2986.05, 2999.14, 2961.16, 2987.95, 1839700000, 2987.95);
INSERT INTO #p
VALUES
('IXIC', '2012-10-25', 3005.04, 3007.71, 2975.98, 2986.12, 1922660000, 2986.12);
INSERT INTO #p
VALUES
('IXIC', '2012-10-24', 3011.82, 3012.95, 2978.73, 2981.7, 1967000000, 2981.7);
INSERT INTO #p
VALUES
('IXIC', '2012-10-23', 2989.44, 3006.59, 2974.07, 2990.46, 1830840000, 2990.46);
INSERT INTO #p
VALUES
('IXIC', '2012-10-22', 3005.92, 3020.61, 2995.78, 3016.96, 1654130000, 3016.96);
INSERT INTO #p
VALUES
('IXIC', '2012-10-19', 3066.56, 3066.56, 3000.27, 3005.62, 2225580000, 3005.62);
INSERT INTO #p
VALUES
('IXIC', '2012-10-18', 3097.77, 3102.56, 3065.24, 3072.87, 2043290000, 3072.87);
INSERT INTO #p
VALUES
('IXIC', '2012-10-17', 3091.38, 3112.45, 3088.05, 3104.12, 1770920000, 3104.12);
INSERT INTO #p
VALUES
('IXIC', '2012-10-16', 3073.21, 3102.97, 3070.25, 3101.17, 1736930000, 3101.17);
INSERT INTO #p
VALUES
('IXIC', '2012-10-15', 3053.21, 3066.31, 3037.27, 3064.18, 1563440000, 3064.18);
INSERT INTO #p
VALUES
('IXIC', '2012-10-12', 3049.08, 3061.77, 3039.58, 3044.11, 1524840000, 3044.11);
INSERT INTO #p
VALUES
('IXIC', '2012-10-11', 3075.89, 3078.08, 3047.14, 3049.41, 1595020000, 3049.41);
INSERT INTO #p
VALUES
('IXIC', '2012-10-10', 3066.25, 3071.57, 3046.78, 3051.78, 1788970000, 3051.78);
INSERT INTO #p
VALUES
('IXIC', '2012-10-09', 3108.01, 3108.01, 3062.52, 3065.02, 1645740000, 3065.02);
INSERT INTO #p
VALUES
('IXIC', '2012-10-08', 3121.33, 3125.49, 3107.57, 3112.35, 1186260000, 3112.35);
INSERT INTO #p
VALUES
('IXIC', '2012-10-05', 3161.21, 3171.46, 3130.76, 3136.19, 1607940000, 3136.19);
INSERT INTO #p
VALUES
('IXIC', '2012-10-04', 3142.38, 3153.48, 3132.56, 3149.46, 1585190000, 3149.46);
INSERT INTO #p
VALUES
('IXIC', '2012-10-03', 3130.85, 3142.36, 3115.04, 3135.23, 1704050000, 3135.23);
INSERT INTO #p
VALUES
('IXIC', '2012-10-02', 3127.73, 3131.64, 3101.64, 3120.04, 1609570000, 3120.04);
INSERT INTO #p
VALUES
('IXIC', '2012-10-01', 3130.31, 3146.99, 3103.89, 3113.53, 1758170000, 3113.53);
INSERT INTO #p
VALUES
('IXIC', '2012-09-28', 3125.31, 3132.51, 3109.91, 3116.23, 1864640000, 3116.23);
INSERT INTO #p
VALUES
('IXIC', '2012-09-27', 3105.87, 3142.02, 3098.46, 3136.6, 1691800000, 3136.6);
INSERT INTO #p
VALUES
('IXIC', '2012-09-26', 3113.4, 3114.54, 3080.28, 3093.7, 1738010000, 3093.7);
INSERT INTO #p
VALUES
('IXIC', '2012-09-25', 3170.37, 3176.3, 3117.73, 3117.73, 1975470000, 3117.73);
INSERT INTO #p
VALUES
('IXIC', '2012-09-24', 3155.35, 3167.74, 3150.71, 3160.78, 1704860000, 3160.78);
INSERT INTO #p
VALUES
('IXIC', '2012-09-21', 3194.86, 3196.93, 3178.09, 3179.96, 2526250000, 3179.96);
INSERT INTO #p
VALUES
('IXIC', '2012-09-20', 3166.84, 3178.45, 3156.46, 3175.96, 1809130000, 3175.96);
INSERT INTO #p
VALUES
('IXIC', '2012-09-19', 3179.04, 3189.35, 3170.29, 3182.62, 1850920000, 3182.62);
INSERT INTO #p
VALUES
('IXIC', '2012-09-18', 3173.62, 3179.37, 3169.41, 3177.8, 1707200000, 3177.8);
INSERT INTO #p
VALUES
('IXIC', '2012-09-17', 3183.4, 3183.4, 3168.63, 3178.67, 1485390000, 3178.67);
INSERT INTO #p
VALUES
('IXIC', '2012-09-14', 3166.24, 3195.67, 3164.26, 3183.95, 1984720000, 3183.95);
INSERT INTO #p
VALUES
('IXIC', '2012-09-13', 3117.66, 3167.63, 3112.62, 3155.83, 1870050000, 3155.83);
INSERT INTO #p
VALUES
('IXIC', '2012-09-12', 3115.33, 3120.12, 3098.82, 3114.31, 1689140000, 3114.31);
INSERT INTO #p
VALUES
('IXIC', '2012-09-11', 3105.02, 3117.86, 3099.1, 3104.53, 1586250000, 3104.53);
INSERT INTO #p
VALUES
('IXIC', '2012-09-10', 3131.34, 3133.89, 3102.76, 3104.02, 1575370000, 3104.02);
INSERT INTO #p
VALUES
('IXIC', '2012-09-07', 3133.22, 3139.61, 3128.17, 3136.42, 1740640000, 3136.42);
INSERT INTO #p
VALUES
('IXIC', '2012-09-06', 3087.94, 3135.81, 3087.67, 3135.81, 1918900000, 3135.81);
INSERT INTO #p
VALUES
('IXIC', '2012-09-05', 3072.58, 3082.75, 3062.54, 3069.27, 1495030000, 3069.27);
INSERT INTO #p
VALUES
('IXIC', '2012-09-04', 3063.25, 3082.26, 3040.24, 3075.06, 1505960000, 3075.06);
INSERT INTO #p
VALUES
('IXIC', '2012-08-31', 3069.64, 3078.52, 3040.59, 3066.96, 1394760000, 3066.96);
INSERT INTO #p
VALUES
('IXIC', '2012-08-30', 3066.73, 3067.54, 3045.92, 3048.71, 1216640000, 3048.71);
INSERT INTO #p
VALUES
('IXIC', '2012-08-29', 3078.05, 3087.24, 3067.62, 3081.19, 1282900000, 3081.19);
INSERT INTO #p
VALUES
('IXIC', '2012-08-28', 3069.4, 3083.19, 3063.65, 3077.14, 1364740000, 3077.14);
INSERT INTO #p
VALUES
('IXIC', '2012-08-27', 3083.62, 3085.81, 3068.13, 3073.19, 1383530000, 3073.19);
INSERT INTO #p
VALUES
('IXIC', '2012-08-24', 3045.22, 3076.8, 3042.22, 3069.79, 1349740000, 3069.79);
--Calculate the SLOPE for DJI
SELECT ticker,
cast(convert(varchar, date_trade, 106) as char(11)) as [trade date],
price_close as [Closing Price],
wct.RunningSLOPE(price_close, convert(float, date_trade), ROW_NUMBER() over
(ORDER BY date_trade ASC), NULL) as [SLOPE]
FROM #p
WHERE ticker = 'DJI'
ORDER BY date_trade ASC;
--Clean up
DROP TABLE #p;
This produces the following result.
{"columns":[{"field":"ticker"},{"field":"trade date","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"},{"field":"Closing Price","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"},{"field":"SLOPE"}],"rows":[{"ticker":"DJI","trade date":"24 Aug 2012","Closing Price":"13157.97","SLOPE":"NULL"},{"ticker":"DJI","trade date":"27 Aug 2012","Closing Price":"13124.67","SLOPE":"-11.1000000105964"},{"ticker":"DJI","trade date":"28 Aug 2012","Closing Price":"13102.99","SLOPE":"-13.1346153479356"},{"ticker":"DJI","trade date":"29 Aug 2012","Closing Price":"13107.48","SLOPE":"-11.1400000027248"},{"ticker":"DJI","trade date":"30 Aug 2012","Closing Price":"13000.71","SLOPE":"-21.2321698170788"},{"ticker":"DJI","trade date":"31 Aug 2012","Closing Price":"13090.84","SLOPE":"-15.3267027158995"},{"ticker":"DJI","trade date":"04 Sep 2012","Closing Price":"13035.94","SLOPE":"-11.7533266159796"},{"ticker":"DJI","trade date":"05 Sep 2012","Closing Price":"13047.48","SLOPE":"-9.64169642754963"},{"ticker":"DJI","trade date":"06 Sep 2012","Closing Price":"13292.00","SLOPE":"1.39757857186454"},{"ticker":"DJI","trade date":"07 Sep 2012","Closing Price":"13306.64","SLOPE":"7.49219753312476"},{"ticker":"DJI","trade date":"10 Sep 2012","Closing Price":"13254.29","SLOPE":"9.20529712518564"},{"ticker":"DJI","trade date":"11 Sep 2012","Closing Price":"13323.36","SLOPE":"11.5083543761987"},{"ticker":"DJI","trade date":"12 Sep 2012","Closing Price":"13333.35","SLOPE":"12.8233841765938"},{"ticker":"DJI","trade date":"13 Sep 2012","Closing Price":"13539.86","SLOPE":"16.9355971590637"},{"ticker":"DJI","trade date":"14 Sep 2012","Closing Price":"13593.37","SLOPE":"20.2477040831897"},{"ticker":"DJI","trade date":"17 Sep 2012","Closing Price":"13553.10","SLOPE":"21.3690746515016"},{"ticker":"DJI","trade date":"18 Sep 2012","Closing Price":"13564.64","SLOPE":"21.9752322900935"},{"ticker":"DJI","trade date":"19 Sep 2012","Closing Price":"13577.96","SLOPE":"22.2974125057817"},{"ticker":"DJI","trade date":"20 Sep 2012","Closing Price":"13596.93","SLOPE":"22.4961535656962"},{"ticker":"DJI","trade date":"21 Sep 2012","Closing Price":"13579.47","SLOPE":"22.2901224512632"},{"ticker":"DJI","trade date":"24 Sep 2012","Closing Price":"13558.92","SLOPE":"21.3398632977002"},{"ticker":"DJI","trade date":"25 Sep 2012","Closing Price":"13457.55","SLOPE":"19.6836784554935"},{"ticker":"DJI","trade date":"26 Sep 2012","Closing Price":"13413.51","SLOPE":"17.9924654283694"},{"ticker":"DJI","trade date":"27 Sep 2012","Closing Price":"13485.97","SLOPE":"17.0452394014846"},{"ticker":"DJI","trade date":"28 Sep 2012","Closing Price":"13437.13","SLOPE":"15.9137939497098"},{"ticker":"DJI","trade date":"01 Oct 2012","Closing Price":"13515.11","SLOPE":"15.110883375204"},{"ticker":"DJI","trade date":"02 Oct 2012","Closing Price":"13482.36","SLOPE":"14.2332894725561"},{"ticker":"DJI","trade date":"03 Oct 2012","Closing Price":"13494.61","SLOPE":"13.5319004385724"},{"ticker":"DJI","trade date":"04 Oct 2012","Closing Price":"13575.36","SLOPE":"13.2754725347393"},{"ticker":"DJI","trade date":"05 Oct 2012","Closing Price":"13610.15","SLOPE":"13.1577340681447"},{"ticker":"DJI","trade date":"08 Oct 2012","Closing Price":"13583.65","SLOPE":"12.7727484499737"},{"ticker":"DJI","trade date":"09 Oct 2012","Closing Price":"13473.53","SLOPE":"11.9818051795135"},{"ticker":"DJI","trade date":"10 Oct 2012","Closing Price":"13344.97","SLOPE":"10.8255935105077"},{"ticker":"DJI","trade date":"11 Oct 2012","Closing Price":"13326.39","SLOPE":"9.76954818674354"},{"ticker":"DJI","trade date":"12 Oct 2012","Closing Price":"13328.85","SLOPE":"8.86315496858214"},{"ticker":"DJI","trade date":"15 Oct 2012","Closing Price":"13424.23","SLOPE":"8.26427241290096"},{"ticker":"DJI","trade date":"16 Oct 2012","Closing Price":"13551.78","SLOPE":"8.12147923266406"},{"ticker":"DJI","trade date":"17 Oct 2012","Closing Price":"13557.00","SLOPE":"7.99363128510905"},{"ticker":"DJI","trade date":"18 Oct 2012","Closing Price":"13548.94","SLOPE":"7.84342328181691"},{"ticker":"DJI","trade date":"19 Oct 2012","Closing Price":"13343.51","SLOPE":"7.18967234675412"},{"ticker":"DJI","trade date":"22 Oct 2012","Closing Price":"13345.89","SLOPE":"6.54480753721285"},{"ticker":"DJI","trade date":"23 Oct 2012","Closing Price":"13102.53","SLOPE":"5.41612155938403"},{"ticker":"DJI","trade date":"24 Oct 2012","Closing Price":"13077.34","SLOPE":"4.38262391801756"},{"ticker":"DJI","trade date":"25 Oct 2012","Closing Price":"13103.68","SLOPE":"3.53659867569687"},{"ticker":"DJI","trade date":"26 Oct 2012","Closing Price":"13107.21","SLOPE":"2.80180931021162"}]}
Notice that in the previous example that the interval between dates is unequal because there are no prices for the weekends and holidays. To eliminate that, we can use the RANK function which will have the effect of equally spacing the x-values.
SELECT ticker,
cast(convert(varchar, date_trade, 106) as char(11)) as [trade date],
price_close as [Closing Price],
wct.RunningSLOPE(
price_close,
RANK() over (ORDER BY date_trade ASC),
ROW_NUMBER() over (ORDER BY date_trade ASC),
NULL
) as [SLOPE]
FROM #p
WHERE ticker = 'DJI'
ORDER BY date_trade ASC;
This produces the following result.
{"columns":[{"field":"ticker"},{"field":"trade date"},{"field":"Closing Price"},{"field":"SLOPE"}],"rows":[{"ticker":"DJI","trade date":"24 Aug 2012","Closing Price":"13157.97","SLOPE":"NULL"},{"ticker":"DJI","trade date":"27 Aug 2012","Closing Price":"13124.67","SLOPE":"-33.3000000000029"},{"ticker":"DJI","trade date":"28 Aug 2012","Closing Price":"13102.99","SLOPE":"-27.4899999999955"},{"ticker":"DJI","trade date":"29 Aug 2012","Closing Price":"13107.48","SLOPE":"-17.3149999999965"},{"ticker":"DJI","trade date":"30 Aug 2012","Closing Price":"13000.71","SLOPE":"-33.1710000000009"},{"ticker":"DJI","trade date":"31 Aug 2012","Closing Price":"13090.84","SLOPE":"-20.086857142856"},{"ticker":"DJI","trade date":"04 Sep 2012","Closing Price":"13035.94","SLOPE":"-19.1439285714284"},{"ticker":"DJI","trade date":"05 Sep 2012","Closing Price":"13047.48","SLOPE":"-16.1940476190454"},{"ticker":"DJI","trade date":"06 Sep 2012","Closing Price":"13292.00","SLOPE":"2.56350000000179"},{"ticker":"DJI","trade date":"07 Sep 2012","Closing Price":"13306.64","SLOPE":"12.7715151515174"},{"ticker":"DJI","trade date":"10 Sep 2012","Closing Price":"13254.29","SLOPE":"15.379454545455"},{"ticker":"DJI","trade date":"11 Sep 2012","Closing Price":"13323.36","SLOPE":"18.9490559440571"},{"ticker":"DJI","trade date":"12 Sep 2012","Closing Price":"13333.35","SLOPE":"20.8111538461552"},{"ticker":"DJI","trade date":"13 Sep 2012","Closing Price":"13539.86","SLOPE":"27.2872967032964"},{"ticker":"DJI","trade date":"14 Sep 2012","Closing Price":"13593.37","SLOPE":"32.1523571428577"},{"ticker":"DJI","trade date":"17 Sep 2012","Closing Price":"13553.10","SLOPE":"33.8101029411773"},{"ticker":"DJI","trade date":"18 Sep 2012","Closing Price":"13564.64","SLOPE":"34.5111029411772"},{"ticker":"DJI","trade date":"19 Sep 2012","Closing Price":"13577.96","SLOPE":"34.6312590299279"},{"ticker":"DJI","trade date":"20 Sep 2012","Closing Price":"13596.93","SLOPE":"34.4699824561407"},{"ticker":"DJI","trade date":"21 Sep 2012","Closing Price":"13579.47","SLOPE":"33.6106240601502"},{"ticker":"DJI","trade date":"24 Sep 2012","Closing Price":"13558.92","SLOPE":"32.2710909090909"},{"ticker":"DJI","trade date":"25 Sep 2012","Closing Price":"13457.55","SLOPE":"29.6804404291367"},{"ticker":"DJI","trade date":"26 Sep 2012","Closing Price":"13413.51","SLOPE":"26.9079841897237"},{"ticker":"DJI","trade date":"27 Sep 2012","Closing Price":"13485.97","SLOPE":"25.2287130434784"},{"ticker":"DJI","trade date":"28 Sep 2012","Closing Price":"13437.13","SLOPE":"23.2377538461538"},{"ticker":"DJI","trade date":"01 Oct 2012","Closing Price":"13515.11","SLOPE":"22.1400957264961"},{"ticker":"DJI","trade date":"02 Oct 2012","Closing Price":"13482.36","SLOPE":"20.8333028083029"},{"ticker":"DJI","trade date":"03 Oct 2012","Closing Price":"13494.61","SLOPE":"19.7238013136295"},{"ticker":"DJI","trade date":"04 Oct 2012","Closing Price":"13575.36","SLOPE":"19.2494187192124"},{"ticker":"DJI","trade date":"05 Oct 2012","Closing Price":"13610.15","SLOPE":"18.9640533926591"},{"ticker":"DJI","trade date":"08 Oct 2012","Closing Price":"13583.65","SLOPE":"18.4554838709681"},{"ticker":"DJI","trade date":"09 Oct 2012","Closing Price":"13473.53","SLOPE":"17.30594941349"},{"ticker":"DJI","trade date":"10 Oct 2012","Closing Price":"13344.97","SLOPE":"15.5730949197866"},{"ticker":"DJI","trade date":"11 Oct 2012","Closing Price":"13326.39","SLOPE":"13.9563636363637"},{"ticker":"DJI","trade date":"12 Oct 2012","Closing Price":"13328.85","SLOPE":"12.5466442577035"},{"ticker":"DJI","trade date":"15 Oct 2012","Closing Price":"13424.23","SLOPE":"11.7323011583015"},{"ticker":"DJI","trade date":"16 Oct 2012","Closing Price":"13551.78","SLOPE":"11.5373067804646"},{"ticker":"DJI","trade date":"17 Oct 2012","Closing Price":"13557.00","SLOPE":"11.3459459459458"},{"ticker":"DJI","trade date":"18 Oct 2012","Closing Price":"13548.94","SLOPE":"11.107914979757"},{"ticker":"DJI","trade date":"19 Oct 2012","Closing Price":"13343.51","SLOPE":"10.1116350844279"},{"ticker":"DJI","trade date":"22 Oct 2012","Closing Price":"13345.89","SLOPE":"9.22727003484329"},{"ticker":"DJI","trade date":"23 Oct 2012","Closing Price":"13102.53","SLOPE":"7.62420630418932"},{"ticker":"DJI","trade date":"24 Oct 2012","Closing Price":"13077.34","SLOPE":"6.13059649652688"},{"ticker":"DJI","trade date":"25 Oct 2012","Closing Price":"13103.68","SLOPE":"4.89284918957001"},{"ticker":"DJI","trade date":"26 Oct 2012","Closing Price":"13107.21","SLOPE":"3.80900922266147"},{"ticker":"SELECT","trade date":"cast(conver","Closing Price":"(varchar,p1.date_trad","SLOPE":", 106) as char(11)) as"},{"ticker":",p1.pr","trade date":"ce_close as","Closing Price":"[S&P]","SLOPE":""},{"ticker":",p2.pr","trade date":"ce_close as","Closing Price":"[DJIA]","SLOPE":""},{"ticker":",p3.pr","trade date":"ce_close as","Closing Price":"[NASDAQ]","SLOPE":""},{"ticker":",ROUND","trade date":"wct.Running","Closing Price":"LOPE(p1.price_close,R","SLOPE":"NK() over (ORDER BY p1"},{"ticker":",ROUND","trade date":"wct.Running","Closing Price":"LOPE(p2.price_close,R","SLOPE":"NK() over (ORDER BY p2"},{"ticker":",ROUND","trade date":"wct.Running","Closing Price":"LOPE(p3.price_close,R","SLOPE":"NK() over (ORDER BY p3"},{"ticker":"FROM #","trade date":"p1","Closing Price":"","SLOPE":""},{"ticker":"JOIN #","trade date":"p2","Closing Price":"","SLOPE":""},{"ticker":"ON p2.","trade date":"ate_trade =","Closing Price":"p1.date_trade","SLOPE":""},{"ticker":"AND p2","trade date":"ticker = 'D","Closing Price":"I'","SLOPE":""},{"ticker":"JOIN #","trade date":"p3","Closing Price":"","SLOPE":""},{"ticker":"ON p3.","trade date":"ate_trade =","Closing Price":"p1.date_trade","SLOPE":""},{"ticker":"AND p3","trade date":"ticker = 'I","Closing Price":"IC'","SLOPE":""},{"ticker":"WHERE","trade date":"1.ticker =","Closing Price":"GSPC';","SLOPE":""}]}
SELECT cast(convert(varchar, p1.date_trade, 106) as char(11)) as [trade date],
p1.price_close as [S&P],
p2.price_close as [DJIA],
p3.price_close as [NASDAQ],
ROUND(
wct.RunningSLOPE(
p1.price_close,
RANK() over (ORDER BY p1.date_trade ASC),
ROW_NUMBER() over (ORDER BY p1.date_trade ASC)
,
1
),
2
) as [S&P slope],
ROUND(
wct.RunningSLOPE(
p2.price_close,
RANK() over (ORDER BY p2.date_trade ASC),
ROW_NUMBER() over (ORDER BY p2.date_trade ASC)
,
2
),
2
) as [DJIA slope],
ROUND(
wct.RunningSLOPE(
p3.price_close,
RANK() over (ORDER BY p3.date_trade ASC),
ROW_NUMBER() over (ORDER BY p3.date_trade ASC)
,
3
),
2
) as [NASDAQ slope]
FROM #p p1
JOIN #p p2
ON p2.date_trade = p1.date_trade
AND p2.ticker = 'DJI'
JOIN #p p3
ON p3.date_trade = p1.date_trade
AND p3.ticker = 'IXIC'
WHERE p1.ticker = 'GSPC';
This produces the following result.
{"columns":[{"field":"trade date","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"},{"field":"S&P","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"},{"field":"DJIA","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"},{"field":"NASDAQ","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"},{"field":"S&P slope"},{"field":"DJIA slope"},{"field":"NASDAQ slope"}],"rows":[{"trade date":"24 Aug 2012","S&P":"1411.13","DJIA":"13157.97","NASDAQ":"3069.79","S&P slope":"NULL","DJIA slope":"NULL","NASDAQ slope":"NULL"},{"trade date":"27 Aug 2012","S&P":"1410.44","DJIA":"13124.67","NASDAQ":"3073.19","S&P slope":"-0.69","DJIA slope":"-33.3","NASDAQ slope":"3.4"},{"trade date":"28 Aug 2012","S&P":"1409.30","DJIA":"13102.99","NASDAQ":"3077.14","S&P slope":"-0.92","DJIA slope":"-27.49","NASDAQ slope":"3.68"},{"trade date":"29 Aug 2012","S&P":"1410.49","DJIA":"13107.48","NASDAQ":"3081.19","S&P slope":"-0.31","DJIA slope":"-17.31","NASDAQ slope":"3.82"},{"trade date":"30 Aug 2012","S&P":"1399.48","DJIA":"13000.71","NASDAQ":"3048.71","S&P slope":"-2.33","DJIA slope":"-33.17","NASDAQ slope":"-3.42"},{"trade date":"31 Aug 2012","S&P":"1406.58","DJIA":"13090.84","NASDAQ":"3066.96","S&P slope":"-1.56","DJIA slope":"-20.09","NASDAQ slope":"-2.39"},{"trade date":"04 Sep 2012","S&P":"1404.94","DJIA":"13035.94","NASDAQ":"3075.06","S&P slope":"-1.29","DJIA slope":"-19.14","NASDAQ slope":"-0.9"},{"trade date":"05 Sep 2012","S&P":"1403.44","DJIA":"13047.48","NASDAQ":"3069.27","S&P slope":"-1.2","DJIA slope":"-16.19","NASDAQ slope":"-0.68"},{"trade date":"06 Sep 2012","S&P":"1432.12","DJIA":"13292.00","NASDAQ":"3135.81","S&P slope":"0.84","DJIA slope":"2.56","NASDAQ slope":"3.9"},{"trade date":"07 Sep 2012","S&P":"1437.92","DJIA":"13306.64","NASDAQ":"3136.42","S&P slope":"2.15","DJIA slope":"12.77","NASDAQ slope":"6.05"},{"trade date":"10 Sep 2012","S&P":"1429.08","DJIA":"13254.29","NASDAQ":"3104.02","S&P slope":"2.36","DJIA slope":"15.38","NASDAQ slope":"5.48"},{"trade date":"11 Sep 2012","S&P":"1433.56","DJIA":"13323.36","NASDAQ":"3104.53","S&P slope":"2.56","DJIA slope":"18.95","NASDAQ slope":"4.96"},{"trade date":"12 Sep 2012","S&P":"1436.56","DJIA":"13333.35","NASDAQ":"3114.31","S&P slope":"2.7","DJIA slope":"20.81","NASDAQ slope":"4.8"},{"trade date":"13 Sep 2012","S&P":"1459.99","DJIA":"13539.86","NASDAQ":"3155.83","S&P slope":"3.38","DJIA slope":"27.29","NASDAQ slope":"5.75"},{"trade date":"14 Sep 2012","S&P":"1465.77","DJIA":"13593.37","NASDAQ":"3183.95","S&P slope":"3.88","DJIA slope":"32.15","NASDAQ slope":"6.93"},{"trade date":"17 Sep 2012","S&P":"1461.19","DJIA":"13553.10","NASDAQ":"3178.67","S&P slope":"4.03","DJIA slope":"33.81","NASDAQ slope":"7.45"},{"trade date":"18 Sep 2012","S&P":"1459.32","DJIA":"13564.64","NASDAQ":"3177.80","S&P slope":"4.02","DJIA slope":"34.51","NASDAQ slope":"7.64"},{"trade date":"19 Sep 2012","S&P":"1461.05","DJIA":"13577.96","NASDAQ":"3182.62","S&P slope":"3.97","DJIA slope":"34.63","NASDAQ slope":"7.72"},{"trade date":"20 Sep 2012","S&P":"1460.26","DJIA":"13596.93","NASDAQ":"3175.96","S&P slope":"3.86","DJIA slope":"34.47","NASDAQ slope":"7.56"},{"trade date":"21 Sep 2012","S&P":"1460.15","DJIA":"13579.47","NASDAQ":"3179.96","S&P slope":"3.72","DJIA slope":"33.61","NASDAQ slope":"7.39"},{"trade date":"24 Sep 2012","S&P":"1456.89","DJIA":"13558.92","NASDAQ":"3160.78","S&P slope":"3.53","DJIA slope":"32.27","NASDAQ slope":"6.92"},{"trade date":"25 Sep 2012","S&P":"1441.59","DJIA":"13457.55","NASDAQ":"3117.73","S&P slope":"3.16","DJIA slope":"29.68","NASDAQ slope":"5.97"},{"trade date":"26 Sep 2012","S&P":"1433.32","DJIA":"13413.51","NASDAQ":"3093.70","S&P slope":"2.76","DJIA slope":"26.91","NASDAQ slope":"4.92"},{"trade date":"27 Sep 2012","S&P":"1447.15","DJIA":"13485.97","NASDAQ":"3136.60","S&P slope":"2.56","DJIA slope":"25.23","NASDAQ slope":"4.5"},{"trade date":"28 Sep 2012","S&P":"1440.67","DJIA":"13437.13","NASDAQ":"3116.23","S&P slope":"2.32","DJIA slope":"23.24","NASDAQ slope":"3.93"},{"trade date":"01 Oct 2012","S&P":"1444.49","DJIA":"13515.11","NASDAQ":"3113.53","S&P slope":"2.14","DJIA slope":"22.14","NASDAQ slope":"3.44"},{"trade date":"02 Oct 2012","S&P":"1445.75","DJIA":"13482.36","NASDAQ":"3120.04","S&P slope":"1.99","DJIA slope":"20.83","NASDAQ slope":"3.07"},{"trade date":"03 Oct 2012","S&P":"1450.99","DJIA":"13494.61","NASDAQ":"3135.23","S&P slope":"1.9","DJIA slope":"19.72","NASDAQ slope":"2.86"},{"trade date":"04 Oct 2012","S&P":"1461.40","DJIA":"13575.36","NASDAQ":"3149.46","S&P slope":"1.89","DJIA slope":"19.25","NASDAQ slope":"2.77"},{"trade date":"05 Oct 2012","S&P":"1460.93","DJIA":"13610.15","NASDAQ":"3136.19","S&P slope":"1.86","DJIA slope":"18.96","NASDAQ slope":"2.59"},{"trade date":"08 Oct 2012","S&P":"1455.88","DJIA":"13583.65","NASDAQ":"3112.35","S&P slope":"1.79","DJIA slope":"18.46","NASDAQ slope":"2.29"},{"trade date":"09 Oct 2012","S&P":"1441.48","DJIA":"13473.53","NASDAQ":"3065.02","S&P slope":"1.65","DJIA slope":"17.31","NASDAQ slope":"1.76"},{"trade date":"10 Oct 2012","S&P":"1432.56","DJIA":"13344.97","NASDAQ":"3051.78","S&P slope":"1.47","DJIA slope":"15.57","NASDAQ slope":"1.24"},{"trade date":"11 Oct 2012","S&P":"1432.84","DJIA":"13326.39","NASDAQ":"3049.41","S&P slope":"1.32","DJIA slope":"13.96","NASDAQ slope":"0.78"},{"trade date":"12 Oct 2012","S&P":"1428.59","DJIA":"13328.85","NASDAQ":"3044.11","S&P slope":"1.16","DJIA slope":"12.55","NASDAQ slope":"0.38"},{"trade date":"15 Oct 2012","S&P":"1440.13","DJIA":"13424.23","NASDAQ":"3064.18","S&P slope":"1.08","DJIA slope":"11.73","NASDAQ slope":"0.12"},{"trade date":"16 Oct 2012","S&P":"1454.92","DJIA":"13551.78","NASDAQ":"3101.17","S&P slope":"1.06","DJIA slope":"11.54","NASDAQ slope":"0.06"},{"trade date":"17 Oct 2012","S&P":"1460.91","DJIA":"13557.00","NASDAQ":"3104.12","S&P slope":"1.07","DJIA slope":"11.35","NASDAQ slope":"0.02"},{"trade date":"18 Oct 2012","S&P":"1457.34","DJIA":"13548.94","NASDAQ":"3072.87","S&P slope":"1.06","DJIA slope":"11.11","NASDAQ slope":"-0.13"},{"trade date":"19 Oct 2012","S&P":"1433.19","DJIA":"13343.51","NASDAQ":"3005.62","S&P slope":"0.96","DJIA slope":"10.11","NASDAQ slope":"-0.51"},{"trade date":"22 Oct 2012","S&P":"1433.81","DJIA":"13345.89","NASDAQ":"3016.96","S&P slope":"0.87","DJIA slope":"9.23","NASDAQ slope":"-0.79"},{"trade date":"23 Oct 2012","S&P":"1413.11","DJIA":"13102.53","NASDAQ":"2990.46","S&P slope":"0.73","DJIA slope":"7.62","NASDAQ slope":"-1.12"},{"trade date":"24 Oct 2012","S&P":"1408.75","DJIA":"13077.34","NASDAQ":"2981.70","S&P slope":"0.58","DJIA slope":"6.13","NASDAQ slope":"-1.43"},{"trade date":"25 Oct 2012","S&P":"1412.97","DJIA":"13103.68","NASDAQ":"2986.12","S&P slope":"0.47","DJIA slope":"4.89","NASDAQ slope":"-1.68"},{"trade date":"26 Oct 2012","S&P":"1411.94","DJIA":"13107.21","NASDAQ":"2987.95","S&P slope":"0.36","DJIA slope":"3.81","NASDAQ slope":"-1.89"}]}