164 lines
4.6 KiB
Plaintext
164 lines
4.6 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "2b725ab1",
|
|
"metadata": {},
|
|
"source": [
|
|
"<div style=\"background-color:#000;\"><img src=\"pqn.png\"></img></div>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "c686b10c",
|
|
"metadata": {},
|
|
"source": [
|
|
"This code calculates the expectancy ratio of a series of trades. The expectancy ratio measures the average expected return per trade by considering the win rate, loss rate, and average profit/loss of trades. It is useful in financial trading to evaluate the performance of a trading strategy. The input is a DataFrame of trades with profit or loss values. The output is a single expectancy ratio value."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "652ddb60",
|
|
"metadata": {
|
|
"lines_to_next_cell": 1
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import pandas as pd\n",
|
|
"import numpy as np"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f54264f9",
|
|
"metadata": {},
|
|
"source": [
|
|
"Define a function to calculate the expectancy ratio of trades."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "d056583b",
|
|
"metadata": {
|
|
"lines_to_next_cell": 1
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"def calculate_expectancy_ratio(trades):\n",
|
|
" \"\"\"Calculate the expectancy ratio of trades.\n",
|
|
" \n",
|
|
" This function computes the average expected return for a series of trades \n",
|
|
" by considering their win rate, loss rate, and average profit/loss.\n",
|
|
" \n",
|
|
" Parameters\n",
|
|
" ----------\n",
|
|
" trades : pd.DataFrame\n",
|
|
" DataFrame containing trade information with a 'Profit' column.\n",
|
|
" \n",
|
|
" Returns\n",
|
|
" -------\n",
|
|
" expectancy_ratio : float\n",
|
|
" The calculated expectancy ratio.\n",
|
|
" \"\"\"\n",
|
|
" \n",
|
|
" # Calculate the number of trades\n",
|
|
" num_trades = len(trades)\n",
|
|
" \n",
|
|
" # Separate winning and losing trades\n",
|
|
" winners = trades[trades['Profit'] > 0]\n",
|
|
" losers = trades[trades['Profit'] <= 0]\n",
|
|
" \n",
|
|
" # Calculate win rate and loss rate\n",
|
|
" win_rate = len(winners) / num_trades\n",
|
|
" loss_rate = len(losers) / num_trades\n",
|
|
" \n",
|
|
" # Calculate average profit for winning trades and average loss for losing trades\n",
|
|
" avg_win = winners['Profit'].mean()\n",
|
|
" avg_loss = losers['Profit'].mean()\n",
|
|
" \n",
|
|
" # Compute the expectancy ratio\n",
|
|
" expectancy_ratio = (win_rate * avg_win) + (loss_rate * avg_loss)\n",
|
|
" \n",
|
|
" return expectancy_ratio"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "2611f9e5",
|
|
"metadata": {},
|
|
"source": [
|
|
"Create a dictionary with trade data including trade numbers and corresponding profits/losses."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "7c26a120",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"trade_data = {\n",
|
|
" 'Trade': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],\n",
|
|
" 'Profit': [100, -50, 200, -100, 300, -150, 400, -200, 500, -250]\n",
|
|
"}"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "b84b5061",
|
|
"metadata": {},
|
|
"source": [
|
|
"Convert the trade data dictionary into a pandas DataFrame."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "3f057971",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"trades = pd.DataFrame(trade_data)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "4ce371e5",
|
|
"metadata": {},
|
|
"source": [
|
|
"Calculate the expectancy ratio using the defined function and print the result."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "4086f225",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"expectancy_ratio = calculate_expectancy_ratio(trades)\n",
|
|
"print(f\"Expectancy Ratio: {expectancy_ratio}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "49299264",
|
|
"metadata": {},
|
|
"source": [
|
|
"<a href=\"https://pyquantnews.com/\">PyQuant News</a> is where finance practitioners level up with Python for quant finance, algorithmic trading, and market data analysis. Looking to get started? Check out the fastest growing, top-selling course to <a href=\"https://gettingstartedwithpythonforquantfinance.com/\">get started with Python for quant finance</a>. For educational purposes. Not investment advise. Use at your own risk."
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"jupytext": {
|
|
"cell_metadata_filter": "-all",
|
|
"main_language": "python",
|
|
"notebook_metadata_filter": "-all"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|