I decided to use Quantopian at A certain event, so I went to Tutorial. I tried to summarize the points that are likely to be points. Since it is a super-translation that has been chewed (welcome to Tsukkomi), please refer to the official document if you want to check it properly.
What is Quantopian? If you refer to this article, the features that I found to be good are as follows. ..
Register as a user at www.quantopian.com and select Research --Algorithms --New Algorithm
to display the IDE on your browser.
You can create an algorithm by editing the template code in various ways, and select Build Algorithm
to run a simple test. Select Run Full Backtest
for further verification.
Quantopian has its own namespace and function name rules. If you do not understand this, you will suddenly get stuck, so I will explain it as carefully as possible.
A global instance is created without defining anything.
The functions described below access the attributes of this instance to get the information you need. It seems to be a good idea to add arbitrary attributes to this context
object without creating a global variable (object).
This is my imagination, but if all the parameters passed to the function are used as arguments, it will be inefficient to share the same parameter with multiple functions, or the docstring will be huge and it will be difficult. So I think it was designed like this.
The following is an example of setting the context
object. By writing like this, an Apple object is created.
context.aapl = symbol('AAPL')
Like the context, it suddenly exists. The data
object contains various APIs for pricing information.
In the example below, the latest stock price is obtained from the Apple object created above.
data.current(context.aapl, 'price')
LESSON 2 Core Functions Skip LESSON 1 and start with LESSON 2. As for the reason, I decided that this should be understood first, which is included in the above-mentioned original rule.
The Quantopian algorithm has three core functions. These must be defined by the user, not the built-in functions.
initialize()
You will definitely need a function with this name. Called at the start of algorithm testing. Specify a context
object as an argument.
handle_data()
If you define a function with this name, it will be executed every minute (every minute of the test period). It is used to get price data and to set up a portfolio (buy, sell).
Specify the context
object and the data
object as arguments.
If you want to run it daily or weekly, use the schedule_function ()
function introduced in LESSON 7.
before_trading_start()
Called daily before the start of trading. It is used when setting a stock to be traded on the day.
Specify the context
object and the data
object as arguments.
Hello world Familiarize yourself with the IDE before getting into the tutorial.
Write the code below, select Save
(if not Saved), and then select Build Algorithm
.
def initialize(context):
print('hello world')
You should see something like the above in the right pane. ʻThe initialize ()function is always called at the start of the algorithm, so
print ('hello world')is executed. The standard output is displayed in the Logs window. If you want to keep a log of the progress of the algorithm, it is recommended to write
print in the
handle_data () `function.
By default, SPY (SPDR S & P 500 ETF) is set as the benchmark. Since the above algorithm does not take any position, it is displayed as 0%.
Next, let's clone the algorithm from LESSON 2 in the tutorial.
https://www.quantopian.com/tutorials/getting-started#lesson2
Selecting Clone
on the right side above will launch the IDE in a new tab and clone the algorithm.
Select Build Algorithm
to test the algorithm.
You can see that it is output to Logs every minute, unlike the case of Hello world mentioned above. Select More
to enlarge the Logs window.
LESSON 1 Introduction Let's clone the algorithm from LESSON 1 in the tutorial.
https://www.quantopian.com/tutorials/getting-started#lesson1
Select Build Algorithm
to test the algorithm.
The above code is an algorithm for longing Apple stock. ʻThe second argument '1.00' of order_target_percent () means that all (100%) of the funds are allocated. The ʻorder_target_percent ()
function will be introduced in LESSON 4.
Select Run Full Backtest
on the right to perform a detailed backtest of the algorithm.
-> LESSON 3
Recommended Posts