New timeseries.tools is out! See what's new

Instant Time Series Analysis

Statistical Analysis, Forecasting, Anomaly Detection & Correlation Analysis

Open Example Tearsheet

Transform your time series data into actionable insights with our powerful tool.

Open Example Analysis
dashboard image
dashboard image

Fast and powerful time series analysis with our Python SDK

Are you tired of manually analyzing your time series data? Our Python SDK makes it easy and fast to uncover insights and trends in your data.

Getting Started

Beautiful Charts

Transform your time series into beautiful images for social media.

Generate Image
dashboard image

Testimonials

People who use timeseries.tools say this about us.

Game-Changer

"We have been using your time series analysis tool for the past year and it has been a game-changer. The ability to quickly and easily uncover insights in our data has helped us make better decisions and improve our bottom line. Thank you for such a valuable product!"

profile picture

Better than pyfolio

"timeseries.tools has quickly become a must-have for our team. We don't calculate performance metrics on our own anymore. So much more convenient. Highly recommend it!"

profile picture
Huang Ming
Data Scientist at DataPro Solutions

Addition To Our Backtesting Process

"Before we discovered your time series analysis tool, our analysis process was slow and tedious. Your tool has transformed it into a seamless and efficient process. The ability to quickly uncover insights in our data has helped us make better decisions and improve our bottom line. Thank you for such a valuable product!"

profile picture
Didier Goepfert
Portfolio Manager at Qwarks

Easy to Use and Powerful

"Your time series analysis tool has quickly become a must-have for our team. Give it a try!"

profile picture

Persisent and Shareable Insights

"Hey, your time series analysis tool is a total life-saver. It's easy to use and packed with powerful features. Thanks for the dope product!"

profile picture

Valuable Addition to Our Toolkit

"As a senior analyst, I am always on the lookout for powerful and easy-to-use tools to help us analyze our data. Your time series analysis tool fits the bill perfectly and our team has been using it with great success. The support team is also very responsive and helpful. Highly recommend this product!"

profile picture
Peter Lang
Senior Analyst at Fissure Capital
Simple moving average (MA) cross-over strategy using the python backtesting library Image URL
ArticleSimple moving average (MA) cross-over strategy using the python backtesting libraryIn this post, we will explore a simple moving average (SMA) cross-over strategy for trading financial assets. The strategy is implemented using the backtesting library, which allows us to test our strategy on historical data and evaluate its performance. This is the code. We will go through it step by step. The SMA cross-over strategy is based on the idea that when a short-term SMA crosses above a long-term SMA, it is a signal to buy the asset, and when the short-term SMA crosses below the long-term SMA, it is a signal to sell the asset. This strategy can be implemented in a few lines of code using the backtesting library. First, we import the Backtest and Strategy classes from the backtesting library, as well as the crossover function, which we will use to check for SMA cross-overs: Next, we define a SMA function that calculates the simple moving average of a given series of values. This function takes two arguments: values, which is a list or array of values, and n, which is the number of previous values to take into account when calculating the SMA: Now, we can define our SmaCross strategy class, which subclasses the Strategy class from the backtesting library. The class defines two class variables, n1 and n2, which represent the two moving average lags that are used in the strategy. The init method of the class precomputes the two SMAs using the SMA function, which we defined earlier: The next method of the class is called at each step of the backtesting process and implements the logic of the strategy. If the first SMA crosses above the second SMA, any existing short trades are closed and the asset is bought; if the second SMA crosses above the first SMA, any existing long trades are closed and the asset is sold: Now that we have implemented our SmaCross strategy class, we can use it to test our strategy on some historical data. We will use the Backtest class from the backtesting library to run the backtesting process. First, we need to import the historical data that we will use for the backtesting. In this example, we will use the GOOG data, which is included in the backtesting library and represents the daily closing prices of Google's stock. Next, we create an instance of the Backtest class, passing it the GOOG data, the SmaCross strategy class that we defined earlier, and some additional parameters such as the initial cash balance and the commission rate: Finally, we call the run method on the Backtest instance to run the backtesting process and store the resulting stats in a stats variable: Now that we have run the backtesting process, we can use the stats variable to evaluate the performance of our strategy. The stats variable is a dictionary that contains a variety of metrics and plots that can help us understand how the strategy performed. We can extract the equity curve from it and store it in a equity variable. We can then use the create_tearsheet method of the TimeseriesTools class to create a tearsheet, which is a plot that displays the equity curve and some additional metrics such as the Sharpe ratio and the maximum drawdown. This plot can help us visualize the performance of the strategy and understand how it evolved over time. Our tearsheet will create these graphs! Also check out some other posts!
The Variation of a function Image URL
ArticleThe Variation of a functionIf you want to know the fundamentals of stochastic calculus, you need to know what the variation of a function is. In mathematics, the variation of a function measures how much the output of the function changes as its input changes. This concept is often used in calculus to study the behavior of functions and their derivatives. In simple terms, a function's variation is a measure of how much the output of the function changes as the input changes. For example, if a function always outputs the same value regardless of the input, then we say that the function has zero variation. On the other hand, if the output of a function changes significantly as the input changes, then we say that the function has a high variation. One way to measure the variation of a function is to calculate the average rate of change of the function over a given interval. This is known as the differential of the function, and it measures how much the output of the function changes on average as the input changes. A function with a large average slope has a high variation, while a function with a small average slope has a low variation. Why do we need to know about this? The functions we care about in stochastic analysis (e.g stocks) usually have a really big or infinite variation! This happens when the output of the function changes arbitrarily as the input changes, without any limiting factors. For example, consider the function ⁍ defined over the interval ⁍. This function has a finite range of ⁍, and its derivative ⁍ has a maximum value of ⁍ at ⁍ and a minimum value of ⁍ at ⁍. Therefore, the function ⁍ has a finite variation over the interval ⁍. Now consider the function ⁍. This function also has a finite range of ⁍, but its derivative ⁍ has a maximum value of ⁍ at ⁍ and a minimum value of ⁍ at ⁍. Therefore, the function ⁍ has a higher variation over the interval ⁍ than the function ⁍. However, if we extend the domain of the function ⁍ to include all real numbers, then the derivative ⁍ becomes unbounded. This means that the output of the function ⁍ can change arbitrarily as the input ⁍ changes, without any limiting factors. In this case, we say that the function ⁍ has infinite variation over the interval of all real numbers. In summary, a function can have infinite variation if its derivative is unbounded over the domain of the function. This means that the output of the function can change arbitrarily as the input changes, without any limiting factors. This is the definition of of the total variation for a differentiable function is. This is the more general definition: This means we can quantize the domain, sample some random values and add those using Riemann. Calculating the Variation of sin between ⁍ and ⁍: This code generates 1000 random samples of the function f(x) = sin(x) over the interval [0, 2π]. It then plots the samples and the function itself, and computes the total variation of the samples using the formula I provided earlier. Finally, it prints the value of the total variation.

timeseries.tools in action

2653

Time Series analyzed

1.131.739

Data Points processed

510+

Minutes saved

Trusted by companies and organizations worldwide

Transistor
Tuple
SavvyCalStatamic

"I know this product is in beta and development is still very early but Davids Apps always end up very useful."

profile picture
Josef Erben
Entrepreneurial Software Engineer
office content 1office content 2

Time series Analysis

We are focusing on financial time series analysis first but we'll eventually expand the functionality to sales, marketing and usage data.

We will add machine learning models to forecast future values and to detect anomalies.