Git Product home page Git Product logo

windskysolo / assignment3 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from algo21-219040029/assignment3

0.0 0.0 0.0 99.61 MB

Shell 0.01% JavaScript 2.32% C++ 0.08% Python 44.31% C 0.30% Common Lisp 0.01% Fortran 0.01% PowerShell 0.01% XSLT 0.01% CSS 0.71% TeX 0.11% Makefile 0.01% HTML 0.35% Smarty 0.01% Batchfile 0.01% Jupyter Notebook 51.80% Roff 0.01% Less 0.01% VBScript 0.01% Classic ASP 0.01%

assignment3's Introduction

Commodity Futures Factor Commodity Analysis Framework

This framework is used to analyse commodity futures factors, including correlation analysis, group analysis, industry analysis and factor backtesting.

documentation

Besides visiting the following website directly, you can also refer to the tutorial folder directly.

grasping data:
commodity_pool_data
factor_data
commodity futures basics data
commodity futures daily market data
commodity futures industry data
continuous futures contract data

construct factor, commodity pool, signal, weight:
construct factor
construct commodity pool
construct signal
construct weight

factor test:
factor test

backtesting:
backtesting

group backtesting and analysis:
group_backtesting and analysis

API References

The following is the API reference documentation. You can refer to it:
/docs/build/html/index.rst,
in which you can see: image.png

Data

The Data can be grasped from the following url:

链接:https://pan.baidu.com/s/1z8RBAI8E7gB9tuLKsYGCyw 提取码:l7fz

After downloading the data, you need to put the data folder in the root path.

Example

Import packages

import os
from pathlib import Path
os.chdir(Path(os.getcwd()).parent.parent)
os.getcwd()
'D:\\LFProjects\\NewPythonProject'
from factor_test.base import BaseFactorTest
from backtesting.group_backtesting import GroupBacktesting
from backtesting.period_backtesting import LongShortPeriodBacktesting

Factor Test

BilateralTradeHoldFactor1, N=20, window=1

H=1, q=0.6, CrossSection

self = LongShortPeriodBacktesting(rate=0.0000, period=1, price='open')
self.set_factor(group='TradeHoldFactor', name='BilateralTradeHoldFactor1', N=20, window=1)
self.set_commodity_pool(group='DynamicPool', name='DynamicPool3')
self.set_signal(group='CrossSectionSignal', name='CrossSectionSignal1', quantile=0.6)
self.set_weight(group='EqualWeight', name='NoRiskNeutralEqualWeight')
self.run_backtesting()
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2830/2830 [00:10<00:00, 266.22it/s]
self.output_backtest_result()

png

png

png

png

png

png

png

png

png

png

png

png

png

png

png

png

png

png

png

png

png

png

png

png

### Initialize Factor Test Module

factor_test = BaseFactorTest()
factor_test.set_factor(group='TradeHoldFactor', name='BilateralTradeHoldFactor1',N=20,window=1)

Factor rank vs Return rank

factor_test.get_Frank_vs_Rrank(group_num=10, period=1)

png

factor_test.get_Frank_vs_Rrank(group_num=10, period=5)

png

factor_test.get_Frank_vs_Rrank(group_num=10, period=10)

png

factor_test.get_Frank_vs_Rrank(group_num=10, period=20)

png

factor_test.get_Frank_vs_Rrank(group_num=5, period=1, industry='化工能源')

png

factor_test.get_Frank_vs_Rrank(group_num=5, period=1, industry='有色_贵金属')

png

factor_test.get_Frank_vs_Rrank(group_num=5, period=1, industry='农产品_软商品')

png

factor_test.get_Frank_vs_Rrank(group_num=5, period=1, industry='油脂油料')

png

factor_test.get_Frank_vs_Rrank(group_num=5, period=5, industry='油脂油料')

png

factor_test.get_Frank_vs_Rrank(group_num=5, period=10, industry='油脂油料')

png

factor_test.get_Frank_vs_Rrank(group_num=5, period=20, industry='油脂油料')

png

factor_test.get_Frank_vs_Rrank(group_num=5, period=1, industry='黑色')

png

factor_test.get_Frank_vs_Rrank(group_num=5, period=20, industry='黑色')

png

Factor Sign and Cross with zero

self.get_factor_PN_stats()

png

png

png

png

png

png

group_test = GroupBacktesting(group_num=10, period=1)
group_test.set_factor(group='TradeHoldFactor', name='BilateralTradeHoldFactor1', N=20, window=1)
group_test.set_commodity_pool(group='DynamicPool', name='DynamicPool3')
group_test.set_signal(group='GroupSignal', name='GroupLongSignal1')

Factor Group Distribution

group_test.get_group_distribution_per_symbol(period=1, shift=0)

png

png

png

png

png

png

png

Symbol Group Changes

group_test.get_groupby_pool_in_out(figsize=(30,30), annot_fontsize2=18, heatmap_rotation2=True)

png

png

BilateralTradeHoldFactor1, N=20, window=10

Initialize Factor Test Module

factor_test = BaseFactorTest()
factor_test.set_factor(group='TradeHoldFactor', name='BilateralTradeHoldFactor1',N=20,window=10)

Factor rank vs Return rank

factor_test.get_Frank_vs_Rrank(group_num=10, period=1)

png

factor_test.get_Frank_vs_Rrank(group_num=10, period=5)

png

factor_test.get_Frank_vs_Rrank(group_num=10, period=10)

png

factor_test.get_Frank_vs_Rrank(group_num=10, period=20)

png

factor_test.get_Frank_vs_Rrank(group_num=10, period=40)

png

factor_test.get_Frank_vs_Rrank(group_num=10, period=60)

png

Factor Distribution per Symbol

factor_test.get_factor_distribution_per_symbol()

png

png

png

png

png

png

png

assignment3's People

Contributors

algo21-219040029 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.