Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为每个列/行生成一个遵循数学函数的Dataframe

为每个列/行生成一个遵循数学函数的Dataframe
EN

Stack Overflow用户
提问于 2019-05-30 01:30:16
回答 2查看 1.1K关注 0票数 1

是否有一种从零开始创建/生成Pandas DataFrame的方法,使每个记录都遵循特定的数学函数?

背景:在金融数学中,非常基本的金融衍生工具(如看涨和看跌)有封闭形式的定价公式(例如黑斯科尔斯)。这些定价公式可以称为随机函数(因为它们涉及一个随机项)。

我正在尝试创建一个股票价格的Monte模拟(并以股票价格为基础,以期权回报和价格代替)。比如说,我需要1000条路径(行)和100个时间步长(列).我想要“启动”一个数据,它是1000乘100,并遵循一个随机方程。

代码语言:javascript
运行
AI代码解释
复制
# Psuedo-code
MonteCarloDF = DataFrame(rows=1000, columns=100, customFunc=TRUE,
        appliedBy='by column', 
        FUNC={s0=321; 
              s_i=prev*exp(r-q*sqrt(sigma))*T + 
                 (etc)*NormDist(rnd())*sqr(deltaT)}
        )

每一行中的0列为321,随后的每一列都将根据上面的FUNC计算出来。

这是类似于VBA的例子。

代码语言:javascript
运行
AI代码解释
复制
Function MonteCarlo_Vanilla_call(S, K, r, q, vol, T, N)

sum = 0
payoff = 0

For i = 1 To N
 S_T = S * Exp((r - q - 0.5 * vol ^ 2) * T + vol * Sqr(T) * Application.NormSInv(Rnd()))
 payoff = Application.Max(S_T - K, 0)
 sum = sum + payoff
Next i

MonteCarlo_Vanilla_call = Exp(-r * T) * sum / N

End Function

每个传入变量都是一个常量。在我的例子中,我希望同一行中的下一列都像VBA代码中的S_T一样。这才是唯一重要的。我想应用一个像S_T = S * Exp((r - q - 0.5 * vol ^ 2) * T + vol * Sqr(T) * Application.NormSInv(Rnd()))这样的函数。每个S_T都是同一行中的下一列。有N列在做一个模拟。例如,我将进行1000次模拟。

代码语言:javascript
运行
AI代码解释
复制
321     | 322.125 | 323.277 | ... | column 100 value
321     | 320.704 | 319.839 | ... | column 100 value
321     | 321.471 | 318.456 | ... | column 100 value
...
row 1000| etc     | etc     | ... | value (1000,100)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-30 02:30:32

IIUC,您可以创建自己的函数来生成DataFrame。在函数中,使用.iloc[:, -1]迭代以使用最后创建的列。

我们还将使用numpy.random.randn生成一个正态分布随机值数组。

您可能需要调整变量的默认值,但是这样的想法如下:

函数

代码语言:javascript
运行
AI代码解释
复制
import pandas as pd
import numpy as np
from math import exp, sqrt

def monte_carlo_df(nrows,
                   ncols,
                   col_1_val,
                   r=0.03,
                   q=0.5,
                   sigma=0.002,
                   T=1.0002,
                   deltaT=0.002):
    """Returns stochastic monte carlo DataFrame"""

    # Create first column
    df = pd.DataFrame({'s0': [col_1_val] * nrows})

    # Create subsequent columns
    for i in range(1, ncols):
        df[f's{i}'] = (df.iloc[:, -1] * exp(r - q * sqrt(sigma)) * T
                       + (np.random.randn(nrows) * sqrt(deltaT)))
    return df

使用实例

代码语言:javascript
运行
AI代码解释
复制
df = monte_carlo_df(nrows=1000, ncols=100, col_1_val=321)
票数 2
EN

Stack Overflow用户

发布于 2019-05-30 02:37:49

对我来说,您的问题是以下问题的一个特定版本:Pandas calculations based on other rows。既然你可以支点,那么我们谈论的是行还是列,那就不重要了。

还有一个关于使用列计算的问题:Pandas complex calculation based on other columns,它很好地建议使用滚动窗口(rolling函数)或使用shift函数:Calculate the percentage increase or decrease based on the previous column value of the same row in pandas dataframe

类似计算的速度考虑(或numpypandas的讨论):Numpy, Pandas: what is the fastest way to calculate dataset row value basing on previous N values?

总而言之,你的问题似乎有点重复。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56375434

复制
相关文章
微软的这项新技术证明,深度学习还能更“深入”
计算机视觉已经是日常生活的一部分。借助这种技术,Facebook可以识别你上传到社交网络的照片上的人物;Google Photo能够自动在收藏行列中找出特定的图片,以及识别出各种各样的东西……这样的
新智元
2018/03/14
7260
微软的这项新技术证明,深度学习还能更“深入”
利用selenium webdriver下载不同类型的文件(pdf,txt等等)[通俗易懂]
很多时候你需要从网站上下载不同种类的文件,像是MS Excel file, MS Word File, Zip file, PDF file, CSV file, Text file, 等等。 如果手动下载,会弹出一个保存文件的对话框。
全栈程序员站长
2022/11/04
1.6K0
利用selenium webdriver下载不同类型的文件(pdf,txt等等)[通俗易懂]
是什么使你留在你的公司
之前离职的一个同事,是典型的技术型人才,前段时间跟他一起吃饭,得知他工作状况不是很理想(他在创业型团队,工作强度非常大,且做出来的东西得不到应有的认可,公司给他的报酬也不是很高),于是动心把他挖回来,跟两个领导打过申请,争取到了我能给他争取到的报酬后,跟同事商量,同事满口答应下来,并且很诚恳的跟我说,愿意回来;天不遂人愿,他提了离职申请后,他的现在的领导,决定给他股份(或期权),调整他的薪资,希望他能留下来;如此反复沟通了两三次,最后还是没能再回到我的团队;
芋道源码
2018/12/27
5090
什么使DevOps中的代码审查良好?[DevOps]
改善软件开发生命周期,向客户交付软件的速度以及该软件的质量都是DevOps的重要前提。这些是DevOps运动规定的工具和技术试图达到的目标。作为开发人员,感到很自由,可以快速进行更改,不仅可以更改源代码,还可以更改基础结构和配置代码。作为DevOps的从业者,目标是在质量与安全性之间实现平衡。如何?可以使用的一种工具是代码审查。
yyx
2019/12/24
9880
什么使DevOps中的代码审查良好?[DevOps]
【纯干货】用了这么多年的 SpringBoot 你知道什么是 SpringBoot 的 Web 类型推断吗?
用了这么多年的 SpringBoot 那么你知道什么是 SpringBoot 的 web 类型推断吗?
Java极客技术
2023/02/23
5560
【纯干货】用了这么多年的 SpringBoot 你知道什么是 SpringBoot 的 Web 类型推断吗?
微软的新技术使面部动作与语音片段更好同步
越来越多的研究表明,只要有足够大的语料库,几乎任何人的面部动作都可以与语音片段同步。今年6月,三星(samsung)的应用科学家详细介绍了一种端到端的模型,该模型能够在人的头颅中对眉毛、嘴、睫毛和脸颊进行动画处理。仅仅几周后,Udacity发布了一个系统,该系统可以从音频叙述中自动生成独立演讲视频。
AiTechYun
2019/10/10
5080
微软的新技术使面部动作与语音片段更好同步
用了多年盗版Windows的你,有没有觉得对不住微软?
非常有意思的一个问题,对于个人用户来讲微软的系统几乎讲正版的不是很多,小打小闹的公司基本上也不会在乎版本是不是正版的,如果按照软件全部的正版的话,小公司直接运转不下去任何公司的起步都会显得比较弱小,对于个人或者小公司微软公司也不会顾及,除非一些特殊的情况,微软在全球的推广策略是免费使用,对于大公司的版本基本上是不放过的,这就是微软公司的策略,先把产品利用普通大众给推广起来,然后利用版权从大公司弄钱。
程序员互动联盟
2019/06/20
6610
用了多年盗版Windows的你,有没有觉得对不住微软?
Java刷题常见的集合类,各种函数的使用以及常见的类型转化等等
相信大家在刷算法题的过程中,好不容易想出来大概的思路,也知道去用哪个集合类,但各个集合类的一些命令都长得太像,很容易将他们弄错,并且在各集合之间的转化也是特别烦人,还有很多实用的函数都知道可以去用,但总是会忘记。
用户11369558
2024/12/24
1260
Java刷题常见的集合类,各种函数的使用以及常见的类型转化等等
[Error] invalid use of incomplete type 使用了未定义的类型
今天在写奥特曼打大怪兽的时候,发现一个奇怪的问题,我定义了两个基类Ultraman和Monster,一个Monster的子类Boss,然后两个基类是有相互勾结的地方,它们都或多或少的使用了对方的类型进行定义自己,然后我在第一个类实现前面进行了另一个类的声明:
叶茂林
2023/07/30
6090
[Error] invalid use of incomplete type 使用了未定义的类型
7个高效的TypeScript工具类型,你会用了吗?
这些工具类型能让你的代码更清晰、更简洁,同时还能减少隐藏错误的可能性。今天我们就来聊聊TypeScript中的七个高效工具类型:keyof、ReturnType、Awaited、Record、Partial、Required 和 Omit。通过实例讲解,让你轻松掌握这些强大的工具类型。
前端达人
2024/06/26
8460
7个高效的TypeScript工具类型,你会用了吗?
使枚举类型的选项在VS的属性窗里显示为中文
我们自己做的组件,一般希望它的属性在设计时能够在属性窗里显示为中文,可以在属性上添加System.ComponentModel.DisplayNameAttribute标注达到这个目的。但是,枚举的选项如何以中文的形式显示在属性窗里呢?
明年我18
2019/09/18
1.2K0
使枚举类型的选项在VS的属性窗里显示为中文
用了天翼云,为什么FTP无法使用了?
最近因为公司举行云生态大会,节奏非常紧急,公众号断了几天,不管工作再忙,学习不能断,今天继续补上。
希望的田野
2019/09/24
2.6K0
用了天翼云,为什么FTP无法使用了?
意识理论大较量的结果究竟证明了什么
意识理论家长达五年的“对抗性合作”在观众面前展开了一场戏剧性的对决。它没有选出任何赢家,但它仍然可以声称取得了进展。
用户9861443
2023/09/02
4020
意识理论大较量的结果究竟证明了什么
apache占用了什么端口
今天想做PHP程序,结果启动Apache的时候控制台报443端口被占用。原因是我的虚拟机VMware占用443端口用于连接远程服务器的。其实出现这些状况很正常。因为不同的程序很有可能同时需要一个端口维持其服务。这里写给入门者告诉大家解决方法。
用户1448800
2021/08/16
9830
apache占用了什么端口
是什么使代码 “Swifty”? —— Safe
尽管编程语言是由其语法正式定义的,但实际上在实践中使用它们的方式还是可以由它们当前的约定来确定的。毕竟,就语法而言,大多数受“ C影响 ” 的语言看起来都非常相似,以至于您可以用几乎使它看起来像JavaScript,C#或C本身的方式编写Swift。
韦弦zhy
2020/03/20
8870
是什么使代码 “Swifty”? —— Safe
五种类型的渗透测试使潜在漏洞为零
一个渗透测试或笔测试是软件或硬件系统,寻求有意计划的攻击,以揭露可能违反系统的完整性,并最终损害用户的机密数据固有的安全漏洞。在这篇文章中,我们将讨论不同类型的渗透测试,以便您了解要覆盖的内容、估算工作量、高效执行。
鲸落c
2022/11/14
4640
是什么使代码 “Swifty”? —— Expressive
Swift的官方网站上的About页面列出了三个关键字: 安全(Safe):为了最大限度地减少开发人员的错误; 迅速(Fast):执行的速度要快; 表现力(Expressive):因为Swift
韦弦zhy
2020/03/20
6570
是什么使代码 “Swifty”? —— Expressive
科普帖:什么是组播?组播和单播的区别是什么?
作为IP传输三种方式之一,组播指的是报文从一个源发出,被转发到一组特定的接收者,相同的报文在每条链路上最多有一份。相较于传统的单播和广播,组播可以有效地节约网络带宽、降低网络负载,所以被广泛应用于IPTV、实时数据传送和多媒体会议等网络业务中。
IT运维技术圈
2022/06/27
19.7K0
科普帖:什么是组播?组播和单播的区别是什么?
是什么使代码 “Swifty”? —— Fast
Swift的官方网站上的About页面列出了三个关键字: 安全(Safe):为了最大限度地减少开发人员的错误; 迅速(Fast):执行的速度要快; 表现力(Expressive):因为Swift
韦弦zhy
2020/03/20
7680
是什么使代码 “Swifty”? —— Fast
大名鼎鼎的Requests库用了什么编码风格?
此外,PEP-8 推荐的用于连续行的编码风格毫无一点品味,绝不允许在 Requests 代码库用:
Python猫
2019/04/09
3630

相似问题

如何证明一组密码是一组明文的加密?

10

基于模拟的证明和基于游戏的证明有什么区别?

30

什么是安全西格玛证明的例子?

10

证明Dlog在泛型组模型中是困难的

10

什么时候人们更喜欢知识的证明而不是零知识的证明?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档